zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    线程同步的几种实现方案
    关于java中三种初始化块的执行顺序
    java数组
    Codeblocks 17汉化
    聚焦天狗
    linux下搭建svn添加多个仓库(项目)
    使用Python在windows环境下获取Linux服务器的磁盘、内存等信息
    python smtplib使用163发送邮件 报错 554 DT:SPM
    防抖与节流
    js
  • 原文地址:https://www.cnblogs.com/yyuuee/p/15305104.html
Copyright © 2011-2022 走看看