
#云原生征文#k8s高可用三台master部署 图文并茂 原创
每台机器都要部署nginx
1.前提:k8s相关服务必须安装完
关闭每台机器防火墙,postfix,selinux,swap
修改k8s文件,将桥接的IPv4流量传递到iptables的链
安装配置docker
mkdir -p /etc/docker/
配置kubernetes源
安装kubeadm,kubelet和kubectl
k8s三台master部署
10.0.0.128
10.0.0.215
10.0.0.29
重新生成新的api-server证书
在master节点下执行下列操作:
增加apiServer参数certSANs
更新证书
#将上面的集群配置信息保存到集群的 kubeadm-config 这个 ConfigMap 中去
kubeadm config upload from-file --config kubeadm.yaml
#验证是否保存成功
kubectl -n kube-system get configmap kubeadm-config -o yaml
负载均衡
k8s高可用部署已部署完k8s相关操作
在所有节点上执行如下操作:
安装组件nginx、keepalived
在所有节点上使用 nginx 来作为一个负载均衡器
添加如下内容
部署keepalived服务
yum install keepalived -y
2.更新master节点配置
**修改 kubelet 配置:**
将原有的ip改成nginx的代理配置
重启服务
**修改 controller-manager 配置:**
将原有的ip改成nginx的代理配置
重启服务
**修改 scheduler 配置:**
将原有的ip改成nginx的代理配置
重启服务
更新kube客户端配置
将原有的ip改成nginx的代理配置
更新 kube-proxy 配置
将原有的ip改成nginx的代理配置
重启各个节点的 kube-proxy
3.更新控制平面(master)配置
从集群中的 ConfigMap 中获取当前配置
然后在当前配置文件里面里面添加 controlPlaneEndpoint
属性,用于指定控制面板的负载均衡器的地址。
使用以下命令将其上传回集群
然后需要在 kube-public
命名空间中更新 cluster-info
这个 ConfigMap,该命名空间包含一个Kubeconfig 文件,该文件的 server:
一行指向单个控制平面节点。只需使用kubectl -n kube-public edit cm cluster-info
更新该 server:
行以指向控制平面的负载均衡器即可。
将原有的ip改成nginx的代理配置
更新完成就可以看到 cluster-info 的信息变成了负载均衡器的地址了。
4.生成token
kubeadm init phase upload-certs --upload-certs
kubeadm token create --print-join-command --config kubeadm.yaml
5.添加master节点
kubeadm reset
rm -rf /var/lib/etcd
kubeadm join localhost:8443 --token 4pi1b4.ngn8krw0aonwpnzd --discovery-token-ca-cert-hash sha256:e94427a152103d795535f5ec783f5f4dbaf2f92419682326d8716332d493f683 --control-plane --certificate-key 653c8a46198e675bee0b7b0183049b7e9ee08a2ff567bc5c36b82c28553ad484
6.修改etcd组件配置
登录各个master节点,修改etcd配置
增加所有master的连接
…
- –initial-cluster=hw-prd-dtp-hue-server-10-4-46-215=https://10.4.46.215:2380,hw-prd-dtp-k8s-master-10-4-46-128=https://10.4.46.128:2380,hw-prd-dtp-k8s-master-10-4-46-29=https://10.4.46.29:2380
…
