K8s 证书过期

问题

今天请求k8s集群的时候出现如下报错:

1kubectl get pods
2Unable to connect to the server: x509: certificate has expired or is not yet valid: current time 2024-01-08T15:28:17+08:00 is after 2024-01-03T09:22:03Z

解决方案

1# 备份 kubernetes配置
2cp -r /etc/kubernetes  /etc/kubernetes_bak
3# 检测证书过期
4kubeadm certs check-expiration
5# 更新证书
6kubeadm certs renew all
  • 检测证书过期时会发现很多证书都是的状态
  • 更新证书后,证书过期时间已经更新为365d

出现新的问题

1kubectl get node
2error: You must be logged in to the server (Unauthorized)

解决方案

1# 备份配置文件
2cp -rp $HOME/.kube/config $HOME/.kube/config.bak
3# 生成新的配置文件
4sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

执行kubectl get node查看解决结果,可以正常访问了

出现新的问题2

部署一个示例pod:simple-pod.yaml

 1apiVersion: v1
 2kind: Pod
 3metadata:
 4  name: nginx-simple
 5spec:
 6  containers:
 7  - name: nginx
 8    image: nginx:1.14.2
 9    ports:
10    - containerPort: 80
1kubectl apply simple-pod-yaml

查看发现资源就挂在那里不运行

解决方案

  1. 重启kubelet
1systemctl restart kubelet
  1. 重启kube-apiserver、kube-controller-manage、kube-scheduler
1# 如果是docker作为容器的话,可执行如下命令。其余容器方法类似
2docker ps |grep kube-apiserver|grep -v pause|awk '{print $1}'|xargs -i docker restart {}
3docker ps |grep kube-controller-manage|grep -v pause|awk '{print $1}'|xargs -i docker restart {}
4docker ps |grep kube-scheduler|grep -v pause|awk '{print $1}'|xargs -i docker restart {}
  1. 重新部署示例服务即可(不重新部署也会正常运行)

发布日期:2024-01-08 19:55 字数:153 用时 1分钟
tags:K8s