• 31-k8s集群svc的代理模式-iptables修改为ipvs


     一、概述

            学到这里,我们都知道,k8s集群的外部网络分发,借助kube-proxy组件来完成;

    问题:我们为什么要将代理模式修改为ipvs而不继续使用iptables呐?

    因为:

            1,iptables底层使用四表五链完成网络代理,效率比较低,而ipvs是采用了iphash的方式实现代理的,效率比较高,因此才会采用ipvs作为生产环境中的网络代理;

            2,iptables不太适合【读】,可读性太低,很乱;

    二、查看k8s中的kube-proxy的代理模式

    1,查看kube-proxy

    [root@k8s231 ingress]# kubectl get pods -n kube-system -o wide

    2,查看kube-proxy的日志

            通过查看kube-proxy的日志,我们就知道了我们正在使用iptables还是ipvs为代理模式了;

    [root@k8s231 ingress]# kubectl logs -n kube-system kube-proxy-nbt6h

    3,【拓展】使用iptables查看svc资源

    · 查看现有svc

    [root@k8s231 ingress]# kubectl get svc

    · 使用iptables查看其中一个svc

    [root@k8s231 ingress]# iptables-save | grep 10.200.11.39

    · 查看iptables查询出来的规则(往下查一层路由)

    [root@k8s231 ingress]# iptables-save | grep KUBE-SVC-CL34MMSZRUFQFSPM

    · 再往下查一层

    [root@k8s231 ingress]# iptables-save | grep KUBE-SEP-YLLYZD7DXDNDFOFC

    · 总结:

            通过一层一层的路由查询,我们就知道了目标地址的终点ip是什么;

    三、查看kube-proxy工作模式

            从k8s的1.11版本之后,支持iptables和ipvs两种模式,如果ipvs没有开启,则自动降级为iptables。

    1,yaml格式查看kube-proxy

    [root@k8s231 ingress]# kubectl -n kube-system get pods kube-proxy-nbt6h -o yaml

    可以看到有一个cm资源

    查看这个cm资源

    [root@k8s231 ingress]# kubectl describe cm -n kube-system kube-proxy

    发现“”里面什么都没写,就代表是默认的iptables

    四、开始修改代理模式为ipvs

    1,k8s集群所有节点加载ipvs模块

    yum -y install conntrack-tools ipvsadm.x86_64

    cat > /etc/sysconfig/modules/ipvs.modules < #!/bin/bash

    modprobe -- ip_vs
    modprobe -- ip_vs_rr
    modprobe -- ip_vs_wrr
    modprobe -- ip_vs_sh
    modprobe -- nf_conntrack_ipv4
    EOF

    chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4

    2,修改k8s集群的工作模式为ipvs

    修改cm资源(kube-proxy)

    [root@k8s231 ~]# kubectl -n kube-system  edit cm kube-proxy

    切记,【i/a】修改后,要保存退出【:wq】

    3,删除原有的kube-proxy的pod

            删除后会重新拉起,然后就修改成功了

    [root@k8s231 ~]# kubectl get pods -n kube-system | grep kube-proxy | awk '{print $1}' | xargs kubectl -n kube-system delete pods

            等待重新拉起pod

    4,查看是否修改成功

    [root@k8s231 ~]# kubectl logs -n kube-system kube-proxy--4hjgr

    5,拓展:使用ipvs查看svc路由

    [root@k8s231 ~]# ipvsadm -ln | grep 10.200.0.1 -A 5

    至此,咱们iptable升级ipvs的代理模式修改就学习完毕了;

  • 相关阅读:
    【数据结构(邓俊辉)学习笔记】绪论05——动态规划
    Jmeter工具修改为中文模式,修改字号,出现乱码情况
    C++程序dll崩溃如何定位分析?
    Docker 安装一个本地的画图软件 —— 筑梦之路
    【鲁棒电力系统状态估计】基于投影统计的电力系统状态估计的鲁棒GM估计器(Matlab代码实现)
    【Linux学习】03Linux用户和权限
    python_data_analysis_and_mining_action-master-7
    1.Redis客户端
    什么是无人机倾斜摄影?无人机倾斜摄影测量测绘中的应用有哪些?
    pycharm配置python环境
  • 原文地址:https://blog.csdn.net/2302_79199605/article/details/136312103