1、问题一
使用搭建好了K8S集群,先是node节点加入k8s集群时,用的内网IP,导致master节点无法操作node节点中的pod(这里的不能操作,指定是无法查看node节点中pod的日志、启动描述、无法进入pod内部,即 kubectl logs 、kubectl describe、kubectl exec -it 等等的命令都不能)
解决办法:解决公网下,k8s calico master节点无法访问node节点创建的pod-CSDN博客
2、问题二
master节点能正常访问node节点创建的pod,即问题一所产生的问题
但是master节点无法ping通node节点创建pod所属的Service的IP
注意:这里ping的是Service,而不是pod的IP,因为k8s节点机器ping pod的IP是肯定不会成功的,节点机器不属于k8s机器内的网络!!!如图:
进入主题:我创建了一个mynginx的Service,type为NodePort,如下:
但是master节点去ping 10.96.177.91失败,node节点ping是成功的
解决方法:
2.1、需要使用 ipvs 替换iptables
vim /etc/sysctl.d/k8s.conf
sysctl --system
2.2、安装IPVS
yum -y install ipvsadm ipset
- 临时生效
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
- 永久生效
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
2.3、配置kube-proxy
kubectl edit cm kube-proxy -n kube-system
- 找到mode的位置,把mode修改为ipvs
2.4、重启kube-proxy
- 在master重启kube-proxy
kubectl get pod -n kube-system | grep kube-proxy | awk '{print $1}' | xargs kubectl delete pod -n kube-system
- 使用:kubectl get pod -A 发现kube-proxy成功运行了2个新的pod
2.5、验证kube-proxy的pod是否开启ipvs
补充下,k8s有几个节点,就会有几个kube-proxy-xxxx的pod,我们需要去查看对应节点的 kube-proxy-xxxx,不要去查看master节点的kube-proxy-xxxx
kubectl logs kube-proxy-7cb69 -n kube-system
- kube-proxy-7cb69:这个pod名称,根据node节点实际情况填写
开启失败!原因:
can’t set sysctl net/ipv4/vs/conn_reuse_mode, kernel version must be at least 4.1
搜索了下,是linux内核版本太低,K8S要求kernel必须大于等于4.1版本
解决方案
2.6、验证master节点是否能ping通NodePort方式Service的IP
成功解决!
- 访问Servie
2.7、使用节点IP外网访问Service
原文地址:https://blog.csdn.net/weixin_42675423/article/details/134523963
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_1255.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!