0
点赞
收藏
分享

微信扫一扫

记一次更新K8S集群证书后POD无法访问SVC问题

背景

这两天K8S证书过期了,在master节点更新完证书node节点没有执行重新加入,发现在node上跑的pod不能和别的svc通信,但是pod和pod的ip可以通信,以下是解决过程:

重启coredns服务

由于更新了证书,怀疑是不是coredns组件需要重新加载,于是重启coredns,发现没有效果。

重启网络相关组件

由于pod之间是可以通信的,所以怀疑问题在kube-proxy或flanned上面,于是把这两个组件都重启了一遍,还把flanned的相关配置删除,重新创建了,发现没有效果。

重启业务应用pod重新创建svc

把redis pod和svc都重新创建了一遍发现也没有效果。

真实原因

之前网上查看更新证书文档的时候网友就说node节点要删除重新加入,而我这边没有重新加入,刚开始没有重新加入发现pod也没有问题,就没有想到这里了,后来想了下可能还是得重新加入,于是就删除重新加入,下面是操作过程: 在master上

kubectl delete nodes k8s-node1-10.10.10.234
kubectl delete node k8s-node2-10.10.10.235
kubeadm token create --print-join-command  #这一步是创建token,并且生成在sha较验码,node加入的时候需要用

在node上

kubeadm reset  #这一步是清空原来的配置
modprobe br_netfilter  #这一步是向内核中重新加载br_netfilter模块,如果没有会报错
kubeadm join 10.10.10.233:6443 --token z79fjr.tu44hxtxotqvv6cp --discovery-token-ca-cert-hash sha256:df52bb42fc776849fc113c780080140e48896a68904c43c043ab88158694146d

最后在master上查看node已经重新加载了 image.png 在pod上面访问redis的svc也能通了(echo>的用法,没有返回值就代表是通的,如果不通会一直卡在那) image.png

附: K8S证书续期操作

cp /etc/kubernetes /etc/kubernetes.bak
kubeadm  certs renew all
kubeadm init phase kubeconfig all
systemctl restart kubelet
cp /etc/kubernetes/admin.conf ~/.kube/config
再次查看到期时间
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text |grep ' Not '
            Not Before: Oct 14 07:23:11 2021 GMT
            Not After : Nov  8 03:20:31 2023 GMT
举报

相关推荐

0 条评论