k8s 老集群二进制 ca证书过期解决过程

如果有帮助到你,顺便点个赞哦~

问题现象:

执行kubectl get node 

报错:certificate has expired or is not yet valid

排查思路:

查看/etc/kubernetes/ssl/ca.pem 有效期

[root@c3-a10-136-120-15-c1-64 ~]# openssl x509 -noout -dates -in /etc/kubernetes/ssl/ca.pem 
notBefore=Feb 28 04:07:30 2023 GMT
notAfter=Feb 27 04:07:30 2023 GMT

查看kube-apiserver日志

journalctl -n 2000 -fu kube-apiserver 

可以确定确实是ca跟证书过期了

解决方案:

1. 备份原来的配置文件及证书

cp -r /etc/kubernetes /home/sunwenbo/kubernetes-old-2023-2-28
cp -r /root/.kube /home/sunwenbo/.kube-old-2023-2-28

2. 重新颁发ca证书

生成证书请求文件csr,需要使用原ca.pem 证书和ca-key.pem 公钥
openssl x509 -x509toreq -in ca.pem -signkey ca-key.pem -out new-server.csr 

根据csr证书请求文件重新生成ca证书
openssl x509 -req -days 3650 -in new-server.csr -signkey ca-key.pem -out new-ca.pem 

进行测试验证,返回OK则代表正常
openssl verify -CAfile new-ca.pem -verbose /etc/etcd/ssl/etcd.pem 
/etc/etcd/ssl/etcd.pem: OK

替换证书
mv new-ca.pem /etc/kubernetes/ssl/ca.pem

3. 更新.kube/config 文件(如果有多个master的话,每个节点都需要替换)

得到ca.pem证书base64编码后的内容

cat -n /etc/kubernetes/ssl/ca.pem | base64 

修改.kube/config文件中的certificate-authority-data 字段内容

4.  重启etcd和kube-apiserver (必须重启)

systemctl  restart etcd.service
systemctl  restart kube-apiserver.service

5. 验证

查看etcd集群状态

[root@c3-a10-136-120-15-c1-64 ssl]# etcdctl --endpoint=https://10.136.121.22:2379 --ca-file=/etc/kubernetes/ssl/ca.pem --key-file=/etc/etcd/ssl/etcd-key.pem --cert-file=/etc/etcd/ssl/etcd.pem cluster-health 
member 7e41471da948b50 is healthy: got healthy result from https://10.136.120.15:2379
member 2d7579278801c0e8 is healthy: got healthy result from https://10.136.122.15:2379
member dfb02b9a52d3e722 is healthy: got healthy result from https://10.136.121.22:2379
cluster is healthy

[root@c3-a10-136-120-15-c1-64 ssl]# kubectl get node 
NAME            STATUS     ROLES    AGE      VERSION
10.136.123.17   Ready      <none>   3y289d   v1.11.3-custom.1
10.136.123.18   Ready      <none>   3y289d   v1.13.5-custom.0
10.136.125.5    Ready      <none>   2y337d   v1.11.3-custom.1
10.136.125.6    Ready      <none>   2y337d   v1.11.3-custom.1
10.136.125.9    Ready      <none>   2y331d   v1.11.3-custom.1
10.136.126.20   Ready      <none>   2y346d   v1.11.3-custom.1
10.136.14.11    Ready      <none>   3y305d   v1.13.5-custom.0
10.136.142.23   Ready      <none>   3y289d   v1.13.5-custom.0
10.136.145.11   Ready      <none>   3y289d   v1.11.3-custom.1
10.136.145.13   Ready      <none>   3y273d   v1.13.5-custom.0
10.136.145.14   Ready      <none>   3y273d   v1.13.5-custom.0
10.136.145.19   Ready      <none>   3y273d   v1.13.5-custom.0

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
部署Kubernetes集群二进制方式包括以下步骤: 1. 下载Kubernetes二进制文件:在Kubernetes官网下载适用于您的操作系统的二进制文件。例如,在Linux中,您需要下载kubectl、kubelet和kubeadm。 2. 安装Docker:您需要安装Docker以运行Kubernetes集群中的容器。您可以从Docker官网下载并安装Docker。 3. 初始化集群:使用kubeadm工具初始化集群。在Master节点上运行以下命令: ``` sudo kubeadm init --pod-network-cidr=10.244.0.0/16 ``` 其中,pod-network-cidr是您要使用的网络插件的CIDR。 4. 安装网络插件:在Kubernetes集群中,您需要一个网络插件来使Pod之间能够通信。例如,您可以使用Flannel插件。在Master节点上运行以下命令: ``` kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml ``` 5. 加入节点:在要加入集群的节点上运行以下命令: ``` sudo kubeadm join <master-node-ip>:<master-node-port> --token <token> --discovery-token-ca-cert-hash <hash> ``` 其中,master-node-ip和master-node-port是Master节点的IP地址和端口号,token是在Master节点上生成的令牌,hash是在Master节点上生成的Discovery Token CA证书哈希。 6. 验证集群:在Master节点上运行以下命令,验证集群是否正常运行: ``` kubectl get nodes ``` 如果所有节点都已成功加入集群,则应该看到所有节点的状态都是“Ready”。 这就是通过二进制方式部署Kubernetes集群的基本步骤。注意,这只是一个简单的示例,您可能需要根据您的特定需求进行更改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cloud孙文波

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值