k8s单节点改为高可用和更新证书

打印 上一主题 下一主题

主题 686|帖子 686|积分 2058


  • master单节点添加master节点
  • apiServer添加域名更新证书
  • 更新kubenertes证书有效期
环境
kubernetes v1.22.12
使用kubeadm安装的集群
#添加节点

#生成节点添加token(在master运行)
  1. #创建join token.  Create join token
  2. kubeadm token create --print-join-command
  3. #kubeadm join IP:6443 --token xxx --discovery-token-ca-cert-hash sha256:xxx
复制代码
  1. #创建用于添加master节点的证书.  Create certificate-key for add master node
  2. kubeadm init phase upload-certs --upload-certs
复制代码
#添加节点(在添加节点运行)

#安装kubelet
  1. export Ver=1.22.12 #与master版本一致
  2. curl -s http://elvin.vip/ks/k8s/kubelet.sh |bash
  3. #查看往期快速创建k8s文章 https://www.cnblogs.com/elvi/p/8976305.html
复制代码
#添加node节点
  1. #添加node节点,运行上面生成的
  2. kubeadm join IP:6443 --token xxx --discovery-token-ca-cert-hash sha256:xxx
复制代码
#添加master节点
  1. #添加master节点,添加上面创建的certificate-key
  2. kubeadm join IP:6443 --token xxx --discovery-token-ca-cert-hash sha256:xxx \
  3.     --control-plane --certificate-key xxx
  4. #master节点配置kubectl凭证  
  5. mkdir -p $HOME/.kube
  6. ln -fs /etc/kubernetes/admin.conf $HOME/.kube/config
  7. #node lable
  8. kubectl label node $(hostname) node-role.kubernetes.io/master=
  9. #view nodes
  10. kubectl get nodes
复制代码
#添加Endpoint

若添加master节点报错且有如下提示,则需要添加Endpoint
  1. Please ensure that:  
  2. * The cluster has a stable controlPlaneEndpoint address.
  3. * The certificates that must be shared among control plane instances are provided.
复制代码
master单节点添加master节点报错提示没controlPlaneEndpoint
Endpoint地址需要添加到apiServer证书认证地址里
为保证Endpoint能被新节点能访问,可使用7层代理、DNS轮询或添加到hosts解析
单节点添加master节点后保证Endpoint高可用, 即达到master节点高可用
  1. #echo "masterIP  myk8s.api.io" >>/etc/hosts
  2. #查看kubeadm-config
  3. kubectl -n kube-system get cm kubeadm-config -o yaml
  4. #修改kubeadm-config,添加如 controlPlaneEndpoint: myk8s.api.io:6443
  5. kubectl edit cm kubeadm-config -n kube-system
  6. #添加位置,与版本号缩进一致
  7. controlPlaneEndpoint: myk8s.api.io:6443
  8. kubernetesVersion: v1.22.12
复制代码
#添加域名更新apiServer证书

添加Endpoint使用域名或IP后,需要更新证书
域名或IP添加到certSANs部分,如下
  1. apiVersion: v1
  2. data:
  3.   ClusterConfiguration: |
  4.     apiServer:
  5.       certSANs:
  6.       - myk8s.api.io
  7.     certificatesDir: /etc/kubernetes/pki
  8.     controlPlaneEndpoint: myk8s.api.io:6443
  9.     kubernetesVersion: v1.22.12
复制代码
#导出kubeadm配置
  1. kubectl -n kube-system get configmap kubeadm-config \
  2.   -o jsonpath='{.data.ClusterConfiguration}' > kubeadm-init.yaml
  3. #查看配置
  4. cat kubeadm-init.yaml
复制代码
#创建新的apiServer证书
  1. #移除apiserver证书
  2. mv /etc/kubernetes/pki/apiserver.{crt,key} /tmp/
  3. #创建新的apiserver证书
  4. kubeadm init phase certs apiserver --config kubeadm-init.yaml
  5. #查看证书包含的域名和IP
  6. openssl x509 -in /etc/kubernetes/pki/apiserver.crt -text |grep DNS
  7. #重启apiserver生效
  8. docker ps |awk '/kube-apiserver/{print $1}' |xargs docker restart
复制代码
#更新kubenertes证书有效期
  1. #查看有效期
  2. kubeadm certs check-expiration
  3. #更新有效期
  4. kubeadm certs renew all
  5. #重启服务生效
  6. docker ps |awk '/k8s_kube-|etcd/{print $1}' |xargs docker restart
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

数据人与超自然意识

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表