在 kubernetes master 服务器上运行任何 kubectl 命令都出现下面的错误:

  1. Unable to connect to the server: x509: certificate has expired or is not yet valid

更新证书(alpha 版本 1.18.x集群)

  1. #1)更新所有证书
  2. kubeadm alpha certs renew all
  3. #2)更新当前用户的 .kube/config
  4. cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  5. #注:如果少了第2步,运行 kubectl 命令时会报错
  6. #error: You must be logged in to the server (Unauthorized)
  7. #如果有多个k8s master节点,则每个节点都要更新
  1. #证书时间检查
  2. kubeadm alpha certs check-expiration

更新证书(正式版本 1.20.x)

  1. #1)更新所有证书
  2. kubeadm certs renew all
  3. #2)更新当前用户的 .kube/config
  4. cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  5. #如果有多个k8s master节点,则每个节点都要更新
  6. #证书时间检查
  7. kubeadm certs check-expiration
  8. #如果使用量额cilium网络组件,在更新完master节点证书后,需要更新cilium组件的证书配置,否则当cilium的老证书到期,集群网络将不可用
  9. kubectl delete secret cilium-etcd-secrets -n kube-system && kubectl create secret generic -n kube-system cilium-etcd-secrets --from-file=etcd-client-ca.crt=/etc/kubernetes/pki/etcd/ca.crt --from-file=etcd-client.key=/etc/kubernetes/pki/etcd/healthcheck-client.key --from-file=etcd-client.crt=/etc/kubernetes/pki/etcd/healthcheck-client.crt && kubectl rollout restart ds/cilium -n kube-system && kubectl rollout restart deploy/cilium-operator -n kube-system

注意:certs renew 使用现有证书作为属性(通用名称、组织、SAN 等)的权威来源,而不是 kubeadm-config ConfigMap。强烈建议让它们保持同步。

文档更新时间: 2023-02-13 10:41   作者:张尚