• kubernetes 在pod内无法ping通servicename和ClusterIP的解决方法


    kubernetes 在pod内无法ping通servicename和ClusterIP的解决方法

    1、需要使用 ipvs 替换iptables,操作是在所有节点上

    [root@master ~]# vim /etc/sysctl.d/k8s.conf

     增加   net.ipv4.ip_forward = 1

    [root@master ~]# sysctl --system

    2、安装IPVS

    [root@master ~]# 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
    

     3:配置kube-proxy,在master上操作,因使用kubeadmin安装,所以操作方式如下

    [root@master] # kubectl edit cm kube-proxy -n kube-system
    configmap/kube-proxy edited
     
    #修改如下
    kind: MasterConfiguration
    apiVersion: kubeadm.k8s.io/v1alpha1
    ...
    ipvs:
          excludeCIDRs: null
          minSyncPeriod: 0s
          scheduler: ""
          syncPeriod: 30s
        kind: KubeProxyConfiguration
        metricsBindAddress: 127.0.0.1:10249
        mode: "ipvs"                  #修改
    

     在  mode: "ipvs"

    4:在master重启kube-proxy

    kubectl  get pod -n kube-system | grep kube-proxy | awk '{print $1}' | xargs kubectl delete pod -n kube-system
    

     5:验证ipvs是否开启

    [root@master ]# kubectl logs kube-proxy-97w6h -n kube-system

     6:验证:进入pod内,现在可以ping通servicename了

    [root@master ~] # kubectl exec -it pod-net-test -c t1 sh

  • 相关阅读:
    git
    centos7安装python3和ipython
    centos7 安装mysql5.7
    ceph-文件存储
    ceph-对象存储
    ceph-块存储客户端
    ceph-简介及安装(luminous)版
    centos7 kvm安装使用
    webpack多页面应用打包问题-新增页面打包JS影响旧有JS资源
    webpack4.0 babel配置遇到的问题
  • 原文地址:https://www.cnblogs.com/yyuuee/p/15305104.html
Copyright © 2020-2023  润新知