k8s

apiserver突然使用了ipv6地址进行通信

报错

rancher上无法访问集群,查看rancher-agent pod不在了,restart deployment后也起不来,查看events信息,有如下报错:E1121 06:26:50.428335 1 controller.go:223] unable to sync kubernetes service: Post "https://[::1]:6443/api/v1/namespaces": dial tcp [::1]:6443: connect: cannot assign requested address

发现是apiserver1使用了ipv6地址,导致服务无法进行通信。

解决

禁用该节点的ipv6。

# 禁用整个系统所有接口的IPv6
net.ipv6.conf.all.disable_ipv6 = 1
# 禁用eth0的IPv6
net.ipv6.conf.eth0.disable_ipv6 = 1
# 生效
sysctl -p /etc/sysctl.conf

# 或者修改内核参数,"xxxxx"代表任何已有的内核参数,在它后面添加"ipv6.disable=1"。
vim /etc/default/grub
GRUB_CMDLINE_LINUX="xxxxx ipv6.disable=1"
grub2-mkconfig -o /boot/grub2/grub.cfg

重启apiserver

注意这里不能直接删除apiserver的pod,否则不会生效。因为pause容器没有被删除,pod内部网络仍然用的之前的网络,还是有ipv6地址的。

file

file

进入容器内查看ip,还是有ipv6的。

file

正确的删除方法是:

mv /etc/kubernetes/manifests/kube-apiserver.yaml /root
mv /root/kube-apiserver.yaml /etc/kubernetes/manifests/kube-apiserver.yaml

或者:

crictl ps |grep kube-apiserver
crictl stop kube-apiserver

重启后,apiserver恢复正常。

分类: k8s
0 0 投票数
文章评分
订阅评论
提醒
guest

0 评论
内联反馈
查看所有评论

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部
0
希望看到您的想法,请您发表评论x