k8s单控制节点集群扩容多控制节点
在当前唯一的master节点上运行如下命令 第一步生成新的token kubeadm token create –print-join-command kubeadm join 192.168.2.134:6443 –token h94icd.pqh5x0enly2xnp04 –discovery-token-ca- cert-hash sha256:496e2fb4712c00b4c0d8d0673a2eca01b8c4bc5968e92ada12b8a0c6e559d7b4 第二步生成新的证书 kubeadm init phase upload-certs –upload-certs I0912 14:22:43.939926 82798 version.go:255] remote version is much newer: v1.28.1; falling back to: stable-1.23 [upload-certs] Storing the certificates in Secret “kubeadm-certs” in the “kube-system” Namespace [upload-certs] Using certificate key: ea197e710ccd3515545e2d402f6257469a88481fc50f360b5362e818fae30b4b 生成新证书 1.16版本前参数为–experimental-upload-certs,1.16及1.16版本以后为–upload-certs 命令不对就会出现unknown flag –experimental-upload-certs的错误 第三步将以上得到的token和key进行拼接,添加新master节点 kubeadm join 192.168.2.134:6443 –token h94icd.pqh5x0enly2xnp04 –discovery-token-ca- cert-hash sha256:496e2fb4712c00b4c0d8d0673a2eca01b8c4bc5968e92ada12b8a0c6e559d7b4 – control-plane –certificate-key ea197e710ccd3515545e2d402f6257469a88481fc50f360b5362e818fae30b4b 同样,1.16版本前参数为
–experimental-control-plane –certificate-key , 1.16及1.16版本以后为 –control-plane –certificate-key 遇到问题: [preflight] Running pre-flight checks [preflight] Reading configuration from the cluster… [preflight] FYI: You can look at this config file with ‘kubectl -n kube-system get cm kubeadm-config -oyaml’ error execution phase preflight: One or more conditions for hosting a new control plane instance is not satisfied. unable to add a new control plane instance a cluster that doesn’t have a stable controlPlaneEndpoint address Please ensure that:
- The cluster has a stable controlPlaneEndpoint address.
- The certificates that must be shared among control plane instances are provided. 开始填坑: step 1 查看一下 kubeadm-config.yaml kubectl -n kube-system get cm kubeadm-config -oyaml 发现controlPlaneEndpoint的值是空的. 走,去改他. kubectl -n kube-system edit cm kubeadm-config 编辑yaml文件
controlPlaneEndpoint值为192.168.2.134:6443(当前master ip),然后确认信息修改完成 step 2 从master1 拷贝证书到master2
cat scp.sh
USER=root port=62200 CONTROL_PLANE_IPS=“192.168.1.122” for host in ${CONTROL_PLANE_IPS}; do scp -P ${port} /etc/kubernetes/pki/ca.crt “${USER}”@$host: scp -P ${port} /etc/kubernetes/pki/ca.key “${USER}”@$host: scp -P ${port} /etc/kubernetes/pki/sa.key “${USER}”@$host: scp -P ${port} /etc/kubernetes/pki/sa.pub “${USER}”@$host: scp -P ${port} /etc/kubernetes/pki/front-proxy-ca.crt “${USER}”@$host: scp -P ${port} /etc/kubernetes/pki/front-proxy-ca.key “${USER}”@$host: scp -P ${port} /etc/kubernetes/pki/etcd/ca.crt “${USER}”@$host:etcd-ca.crt scp -P ${port} /etc/kubernetes/pki/etcd/ca.key “${USER}”@$host:etcd-ca.key scp -P ${port} /etc/kubernetes/admin.conf “${USER}”@$host: ssh -p${port} ${USER}@${host} ‘mkdir -p /etc/kubernetes/pki/etcd’ ssh -p${port} ${USER}@${host} ‘mv /${USER}/ca.crt /etc/kubernetes/pki/’ ssh -p${port} ${USER}@${host} ‘mv /${USER}/ca.key /etc/kubernetes/pki/’ ssh -p${port} ${USER}@${host} ‘mv /${USER}/sa.pub /etc/kubernetes/pki/’ ssh -p${port} ${USER}@${host} ‘mv /${USER}/sa.key /etc/kubernetes/pki/’ ssh -p${port} ${USER}@${host} ‘mv /${USER}/front-proxy-ca.crt /etc/kubernetes/pki/’ ssh -p${port} ${USER}@${host} ‘mv /${USER}/front-proxy-ca.key /etc/kubernetes/pki/’ ssh -p${port} ${USER}@${host} ‘mv /${USER}/etcd-ca.crt /etc/kubernetes/pki/etcd/ca.crt’ ssh -p${port} ${USER}@${host} ‘mv /${USER}/etcd-ca.key /etc/kubernetes/pki/etcd/ca.key’ ssh -p${port} ${USER}@${host} ‘mv /${USER}/admin.conf /etc/kubernetes/admin.conf’ done step 3 再次尝试加入
kubeadm join 192.168.1.194:6443 –token 424mp7.nkxx07p940mkl2nd –discovery-token-ca- cert-hash sha256:f64bf3bb57ed8ae6ff25e24b68f9b5ff79d32e7b2b53ab54c7c02c0b4edb72bc – experimental-control-plane 与加入 node相比,以master的身份加入多了: –experimental-control-plane 这回可以了吧,老铁。 step 4 配置一下kubectl,以便管理集群 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config kubectl get nodes