• 完美解决k8s master节点无法ping node节点中的IP或Service NodePort的IP


    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
    • 所有节点都需要操作,我这里只有一台master和一台node,所以我只在master操作
    vim /etc/sysctl.d/k8s.conf

    加入:net.ipv4.ip_forward = 1 

    • 更新配置
    sysctl --system
    2.2、安装IPVS
    yum -y install ipvsadm  ipset
    • 临时生效
    1. modprobe -- ip_vs
    2. modprobe -- ip_vs_rr
    3. modprobe -- ip_vs_wrr
    4. modprobe -- ip_vs_sh
    5. modprobe -- nf_conntrack_ipv4
    • 永久生效
    1. cat > /etc/sysconfig/modules/ipvs.modules <<EOF
    2. modprobe -- ip_vs
    3. modprobe -- ip_vs_rr
    4. modprobe -- ip_vs_wrr
    5. modprobe -- ip_vs_sh
    6. modprobe -- nf_conntrack_ipv4
    7. EOF
    2.3、配置kube-proxy
    • 在master上操作,因使用kubeadmin安装,所以操作方式如下
    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
    kubectl logs kube-proxy-7cb69 -n kube-system
    • kube-proxy-7cb69:这个pod名称,根据实际情况填写

    开启失败!原因:

    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
  • 相关阅读:
    XREAL Air 2 Pro发布,加入电致变色技术,拓展AR眼镜使用场景
    数字信号处理、语音信号处理、现代信号处理
    Android 数据库封装(SQLite)
    VSCode 最好的 Python 扩展,可大大提升你的生产力
    搭建Django项目
    【H5】-- 拖拽事件
    【Java系列】一篇文章阐述常见问题及解决方法
    GateWay网关组件
    在云服务器上搭建Jupyter Notebook服务
    mysql中聚集索引和非聚集索引区别
  • 原文地址:https://blog.csdn.net/weixin_42675423/article/details/134523963