阿里云ECS自建K8S_IPV6重启后异常问题解决过程

发布时间 2023-12-20 11:05:50作者: 济南小老虎

阿里云ECS自建K8S_IPV6重启后异常问题解决过程


背景

最近安装了一个单节点的K8S_IPV6
昨天不知道何故 突然宕机了.

然后只能在阿里云的控制台后台重启了ECS
启动之后看K8S的状态一开始是正常的. 

但是查看ing的时候,发现IP地址却变成了 IPV4的地址, 感觉比较奇怪.
这里整理一下处理过程. 

问题现象

怀疑是因为阿里云 IPV6 地址存在一些故障风险
我在进行应用和数据库大量链接更新之后机器连不上了
不得已重启机器:
kubectl get ing
NAME                   CLASS    HOSTS                  ADDRESS                                 PORTS     AGE
k8sipv6.jnxlh.online   nginx    k8sipv6.jnxlh.online   172.17.99.99                            80        9h

出现类似的问题. 
感觉比较奇怪

重启机器进行验证

再次重启了机器, 发现还是如此,并且不少pod节点的地址变成了 IPV4的

kube-system     kube-proxy-wt8dg                            1/1     Running     1 (2d9h ago)   3d23h   172.22.79.99                            amd9t34 

发现每次启动完都会增加一个 默认的 hosts信息
172.22.79.99    amd9t34 amd9t34
然后删除这条记录 再启动kubelet

可能需要重建 ingress

如果是其他机器需要加入

需要再hosts里面增加IPV6 对应地址

先重新初始化一下:
 kubeadm reset -f --cri-socket=unix:///var/run/cri-dockerd.sock

注意 一定要增加如下内容 
vim /etc/sysctl.conf 
增加内容为:
net.ipv6.conf.default.forwarding = 1

然后加入集群
kubeadm join [2408:400a:]:6443 --token w8zcp3 --discovery-token-ca-cert-hash sha256:b52e8e73a --cri-socket=unix:///var/run/cri-dockerd.sock

注意可以通过增加一个 -v2的方式进行展示. 

ingress的处理

重新创建 ingress 之后再次部署 ingress的资源需要执行一个命令
kubectl delete -A ValidatingWebhookConfiguration ingress-nginx-admission

然后再次重建ingress的资源就可以了. 

总结

阿里云的虚拟机 总是在启动时给hosts 增加一个ipv4的地址信息

重启之后 K8S only IPV6的栈可能会出现异常.

遇到问题需要进行一下其他的处理.