Skip to content

Cluster issue

异常描述

sat-prd-p1集群上的k8s master(VM)迁移到新ESXi宿主机,由于ESXi主机时间不对导致k8s master上的服务(etcd/kube-proxy)异常。

异常现象

    1. Rancher 无法管理集群

image-20250421164002804

    1. etcd和kube-proxy异常,并且可以看到pod的age列有不正确的时间显示
kubectl get pod -n kube-system -o wide

Invalid: 看到这个错误pod状态,考虑节点时间不一致

image-20250421164228221

修复过程

    1. 重新检查VM的时间,确保所有节点的时间一致
# 检查同步源情况
chronyc sources -v

# 检查同步情况
chronyc tracking

# 手动同步
chronyc -a makestep
    1. 修复etcd,并重启所有master节点(修复etcd,让它们内部自行选举leader角色)

重启master后,执行命令检查etcd状态

export CRI_CONFIG_FILE=/var/lib/rancher/rke2/agent/etc/crictl.yaml
etcdcontainer=$(/var/lib/rancher/rke2/bin/crictl ps --label io.kubernetes.container.name=etcd --quiet)
/var/lib/rancher/rke2/bin/crictl exec $etcdcontainer etcdctl --cert /var/lib/rancher/rke2/server/tls/etcd/server-client.crt --key /var/lib/rancher/rke2/server/tls/etcd/server-client.key --cacert /var/lib/rancher/rke2/server/tls/etcd/server-ca.crt endpoint status --cluster --write-out=table

image-20250421164706533

    1. 修复kube-proxy

检查kube-proxy日志

kubectl logs kube-proxy-zsmesp1pm3 -n kube-system

日志显示6443端口无法连接 (即kube-apiserver无法连接,这时如检查到kube-apiserver状态正常,优先考虑证书问题)

image-20250421164931050

检查Kube-proxy证书状态,检查时间是2025/⅘ 但是证书的有效时间起始是2025/4/6(即证书生效时间是未来),所以kube-apiserver无法正确连接

for crt in /var/lib/rancher/rke2/server/tls/*.crt; do
   printf '%s: %s\n' \
      "$(date --date="$(openssl x509 -enddate -noout -in "$crt"|cut -d= -f 2)" --iso-8601)" \
      "$crt"
done | sort

image-20250421165209166

重新生成证书(3台master轮流执行)

# Stop RKE2
systemctl stop rke2-server

# Rotate certificates
rke2 certificate rotate

# Start RKE2
systemctl start rke2-server

参考文献: Rotating Client and Server Certificates Manually

    1. 检查集群服务

如发现为正常重启的pod删除,并让其自动重新生成