查看: 88|回复: 0

kubernetes 证书过期

[复制链接]

4

主题

0

回帖

0

积分

热心网友

金币
0
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2010-5-3
发表于 2021-8-19 15:06:00 | 显示全部楼层 |阅读模式

kubernetes 证书过期

kubernetes 集群是使用kubeadm工具安装的。

证书过期的表现:

  1. kubeclt 不能正常使用
  2. kube-apiserver、kube-controller-manager、kube-scheduler的日志会有certificateUnauthorized关键字的错误提示:
# kubectl logs -n kube-system kube-apiserver-vonedaomaster1 --tail=10 -f
E0819 05:25:16.691962       1 authentication.go:53] Unable to authenticate the request due to an error: x509: certificate has expired or is not yet valid
# kubectl logs -f --tail=100 kube-scheduler-vonedaomaster1  -n kube-system
E0819 05:49:52.909861       1 reflector.go:178] k8s.io/client-go/informers/factory.go:135: Failed to list *v1.PersistentVolume: Unauthorized
E0819 05:49:59.011448       1 reflector.go:178] k8s.io/client-go/informers/factory.go:135: Failed to list *v1.StorageClass: Unauthorized
E0819 05:50:02.003645       1 reflector.go:178] k8s.io/client-go/informers/factory.go:135: Failed to list *v1.PersistentVolumeClaim: Unauthorized
E0819 05:50:02.352984       1 reflector.go:178] k8s.io/client-go/informers/factory.go:135: Failed to list *v1.CSINode: Unauthorized
E0819 05:50:04.750558       1 reflector.go:178] k8s.io/client-go/informers/factory.go:135: Failed to list *v1.Service: Unauthorized
E0819 05:50:11.741815       1 reflector.go:178] k8s.io/kubernetes/cmd/kube-scheduler/app/server.go:233: Failed to list *v1.Pod: Unauthorized

证书续期步骤

本集群只有一个master。(多个master没有验证过)


所有操作步骤都是在master上执行。

1. 备份旧数据

不管做什么操作,备份是必须的。

# cp /etc/kubernetes /etc/kubernetes.bak -rf

2. 导出kubeadm配置

# kubeadm config view > cluster.yaml

3. 重新生成证书

# kubeadm alpha certs renew all --config cluster.yaml

4. 替换~/.kube/config

# cp -i /etc/kubernetes/admin.conf /root/.kube/config

5. 重启kubelet

# systemctl restart kubelet

6. 重启kube-apiserver、kube-controller-manager、kube-scheduler组件pod

错误的重启方式:用kubectl delete pods删除组件pod让其自动启动,如图:


可以看到红色框框的pod,最后一列AGE的值变成了重启过的时间

查看日志:

查看组件的容器,可以看出容器并没有重启,还是4周之前启动的:

原因:证书已经过期,使用kubectl delete pods方式管理的容器自动重启是没法进行的。

当组件的证书没生效的时候,去执行创建动作,可以查看到kubectl get DaemonSet -n ingress-nginx 的结果都是0,用kubectl get pods -n ingress-nginx 查看会出现没有pod的情况:


下面是正确重启kube-apiserver、kube-controller-manager、kube-scheduler组件容器的方式

# docker ps |grep kube-apiserver|grep -v pause|awk '{print $1}'|xargs -i docker restart {}
# docker ps |grep kube-controller-manage|grep -v pause|awk '{print $1}'|xargs -i docker restart {}
# docker ps |grep kube-scheduler|grep -v pause|awk '{print $1}'|xargs -i docker restart {}

查看kube-apiserver、kube-controller-manager、kube-scheduler组件的日志,已经正常:



来源:https://www.cnblogs.com/zoujiaojiao/p/15161862.html
回复

使用道具 举报

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

本版积分规则

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部