【云原生】更改Kubernetes为ipvs代理模式

更改Kubernetes为ipvs代理模式

文章目录

  • 更改Kubernetes为ipvs代理模式
    • 资源列表
    • 基础环境
    • 一、kube-proxy介绍
      • 1.1、userspace模式
      • 1.2、iptables代理模式
      • 1.3、ipvs代理模式
    • 二、更改代理模式
      • 2.1、查看kube-proxy代理模式
      • 2.2、更改代理模式
        • 2.2.1、所有节点安装IPVS软件
        • 2.2.2、所有节点加载IPVS模块
        • 2.2.3、master节点修改kube-proxy的配置文件
        • 2.2.4、查看kube-system命名空间下的kube-proxy
        • 2.2.5、查看旧的kube-proxy,k8s会自动生成新的kube-proxy
        • 2.2.6、查看新的kube-proxy
        • 2.2.7、查看是否更改
        • 2.2.8、查看负载调度策略

资源列表

操作系统配置主机名IP所需软件
CentOS 7.92C4Gk8s-master192.168.93.101Docker、K8S使用kubeadm安装
CentOS 7.92C4Gk8s-node01192.168.93.102Docker、K8S使用kubeadm安装
CentOS 7.92C4Gk8s-node02192.168.93.103Docker、K8S使用kubeadm安装

基础环境

  • 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
  • 关闭内核安全机制
sed -i "s/.*SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
setenforce 0

一、kube-proxy介绍

  • kube-proxy负责k8s service的实现,即实现了k8s内部从pod到service和外部从node port到service的访问
  • 每个节点都有一个kube-proxy容器进程。kube-proxy管理将寻址到集群Kubernetes Service对象的虚拟IP地址(VIP)的流量转发到适当的后端Pod。
  • kube-proxy有三种代理模式

1.1、userspace模式

  • 最早的代理模式。在userspace模式下,kube-proxy会在每个节点上创建一个监听指定端口的用户空间进程,该进程负责接收外部流量并将其转发到相应的Service和Pod。在k8s v1.2版本以后就已经淘汰了。

  • 缺点:性能较差,因为每个流量都需要经过用户空间进程的处理,导致较高的延迟和资源消耗

1.2、iptables代理模式

  • 在k8s v1.12版本之前的默认模式。该模式完全利用内核iptables规则来实现service的代理和负载均衡。
  • 该模式的优点是较userspace模式效率更高,当部署服务多的时候会生成大量的iptables规则。

1.3、ipvs代理模式

  • k8s v1.12版本之后的默认模式。与iptables类似,在内核实现,基于netfilter,监控service、pod的变化并创建对应的ipvs规则,不需要改变iptables规则链

  • 两则比较的话:ipvs和iptables都是基于netfilter实现的。但ipvs的性能明显要高一些,但是如果要使用它,需要手动载入ipvs模块;

  • iptables:规则灵活、功能强大;规则遍历匹配和更新,呈线性时延;

  • IPVS:工作在内核态,有更好的性能;调度算法丰富:rr,wrr,lc,wlc,ip hash…

二、更改代理模式

2.1、查看kube-proxy代理模式

  • master节点操作
# 方法1:如果回显是跟下面一样那使用的是默认的代理模式iptables
[root@k8s-master ~]# kubectl get cm kube-proxy -n kube-system -o yaml | grep modemode: ""# 方法2
[root@k8s-master ~]# curl localhost:10249/proxyMode
iptables[root@k8s-master ~]# 

2.2、更改代理模式

  • 更改代理模式的方式有很多种我这里只采取其中的一种
  • 修改kube-proxy的配置文件以configmap方式存储,如果让所有节点kube-proxy生效,需要重建新的pod。使用kubernetes部署k8s,若初始化k8s集群时,默认没有开启IPVS。则需要通过修改kube-proxy的配置文件来开启IPVS
2.2.1、所有节点安装IPVS软件
yum -y install ipset ipvsadm
2.2.2、所有节点加载IPVS模块
# 注意:linux kernel(内核)如果是4.19以上版本的请将nf_conntrack_ipv4 更新为 nf_conntrack。
uname -r
3.10.0-1160.71.1.el7.x86_64cat <<EOF> /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
EOFchmod 755 /etc/sysconfig/modules/ipvs.modules
sh /etc/sysconfig/modules/ipvs.modules# 查看内核模块
lsmod | grep ip_vs
lsmod | grep nf_conntrack_ipv4
2.2.3、master节点修改kube-proxy的配置文件
[root@k8s-master ~]# kubectl edit configmaps kube-proxy -n kube-system
# 默认大概在43行左右,添加ipvs,使其更改为ipvs代理模式,更改之后会自动生效
mode: "ipvs"
## 部分内容省略
# 保存退出后将会有以下回显
configmap/kube-proxy edited
2.2.4、查看kube-system命名空间下的kube-proxy
[root@k8s-master ~]# kubectl get pod -n kube-system | grep kube-proxy
kube-proxy-2c282                          1/1     Running   1          3d10h
kube-proxy-6n6pn                          1/1     Running   1          3d10h
kube-proxy-zhm2m                          1/1     Running   1          3d10h
2.2.5、查看旧的kube-proxy,k8s会自动生成新的kube-proxy
[root@k8s-master ~]# kubectl get pod -n kube-system |grep kube-proxy |awk '{system("kubectl delete pod "$1" -n kube-system")}'
pod "kube-proxy-2c282" deleted
pod "kube-proxy-6n6pn" deleted
pod "kube-proxy-zhm2m" deleted
2.2.6、查看新的kube-proxy
  • 通过pod名称去判定是否为新的porxy的pod
[root@k8s-master ~]# kubectl get pod -n kube-system | grep kube-proxy
kube-proxy-2bbrd                          1/1     Running   0          48s
kube-proxy-brjjl                          1/1     Running   0          57s
kube-proxy-bwv8k                          1/1     Running   0          58s
2.2.7、查看是否更改
[root@k8s-master ~]# kubectl get cm kube-proxy -n kube-system -o yaml | grep modemode: "ipvs"[root@k8s-master ~]# curl localhost:10249/proxyMode
ipvs[root@k8s-master ~]# 
2.2.8、查看负载调度策略
  • 未必一样
[root@k8s-master ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.96.0.1:443 rr-> 192.168.93.101:6443          Masq    1      0          0         
TCP  10.96.0.10:53 rr-> 10.244.58.194:53             Masq    1      0          0         -> 10.244.85.194:53             Masq    1      0          0         
TCP  10.96.0.10:9153 rr-> 10.244.58.194:9153           Masq    1      0          0         -> 10.244.85.194:9153           Masq    1      0          0         
UDP  10.96.0.10:53 rr-> 10.244.58.194:53             Masq    1      0          0         -> 10.244.85.194:53             Masq    1      0          0 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/37422.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unix/Linux shell实用小程序1:生字本

前言 在日常工作学习中&#xff0c;我们会经常遇到一些不认识的英语单词&#xff0c;于时我们会打开翻译网站或者翻译软件进行查询&#xff0c;但是大部分工具没有生词本的功能&#xff0c;而有生字本的软件又需要注册登陆&#xff0c;免不了很麻烦&#xff0c;而且自己的数据…

风控图算法之中心性算法(小数据集Python版)

风控图算法之中心性算法&#xff08;小数据集Python版&#xff09; 图算法在金融风控领域的应用已经超越了传统的社区发现技术&#xff0c;这些技术曾被主要用于识别和分析欺诈性行为模式&#xff0c;例如黑产团伙。当前&#xff0c;一系列图统计算法&#xff0c;包括介数中心…

LoRaWAN网关源码分析(SPI篇)

目录 一、前言 二、lgw_spi_open函数 三、lgw_spi_w函数 四、lgw_spi_r函数 五、lgw_spi_wb函数 六、lgw_spi_rb函数 一、前言 本篇文章整理了LoRaWAN网关如何处理与 LoRa 前端设备之间的 SPI通信&#xff08;在loralgw_spi.c文件中&#xff09;。对SPI协议不了解的可以看…

Hive SQL:实现炸列(列转行)以及逆操作(行转列)

目录 列转行行转列 列转行 函数&#xff1a; EXPLODE(ARRAY)&#xff1a;将ARRAY中的每一元素转换为每一行 EXPLODE(MAP)&#xff1a;将MAP中的每个键值对转换为两行&#xff0c;其中一行数据包含键&#xff0c;另一行数据包含值 数据样例&#xff1a; 1、将每天的课程&#…

免费代码生成工具

领取&安装链接&#xff1a;Baidu Comate 领取季卡 代码自动化生成工具&#xff0c;软件工程师可以在ide中沉浸式写代码&#xff0c;自动化给出代码生成&#xff0c;自然语言直接输出代码。 1.Baidu Comate是什么&#xff1f; Baidu Comate是JetBrains/VSCode插件&#…

ServletConfig与ServletContext详解

文章目录 概要web.xmlServletConfig介绍ServletConfig实例ServletConfig细节ServletContext介绍ServletContext实例ServletContext细节ServletContext获得服务访问次数&#xff08;可拓展&#xff09;总结 概要 web.xml <?xml version"1.0" encoding"UTF-…

OBD诊断(ISO15031) 02服务

文章目录 功能简介请求和响应1、read-supported PIDs1.1、请求1.2、肯定响应 2、read PID value1.1、请求1.2、肯定响应 3、同时请求多个PID4、同时读取多个PID数据 Parameter definition报文示例1、单个PID请求和读取2、多个PID请求和读取 功能简介 02服务&#xff0c;即 Req…

索引失效的场景主要有那些

1、不满足最左匹配原则 当使用联合索引时&#xff0c;查询条件没有从最左索引列开始&#xff0c;或者跳过了索引中的列&#xff0c;那么索引可能会失效。例如&#xff0c;对于联合索引(sex, age, name)&#xff0c;如果查询条件只包含了sex和name而没有age&#xff0c;那么索引…

亚太杯赛题思路发布(中文版)

导读&#xff1a; 本文将继续修炼回归模型算法&#xff0c;并总结了一些常用的除线性回归模型之外的模型&#xff0c;其中包括一些单模型及集成学习器。 保序回归、多项式回归、多输出回归、多输出K近邻回归、决策树回归、多输出决策树回归、AdaBoost回归、梯度提升决策树回归…

oracle数据库之使用Python程序调用存储过程(二十五)

在Oracle数据库中&#xff0c;你可以使用Python程序通过Oracle的数据库适配器&#xff08;如cx_Oracle&#xff09;来调用存储过程。以下是一个简单的步骤和示例代码&#xff0c;说明如何使用Python程序调用Oracle的存储过程&#xff1a; 1. 安装cx_Oracle库 首先&#xff0c…

UI(三)布局

文章目录 1、Colum和Row——垂直方向容器和水平方向容器2、ColumnSplit和RowSplit——子组件之间插入一条分割线3、Flex——弹性布局子组件的容器4、Grid和GridItem——网格容器和网格容器单元格5、GridRow和GridCol——栅格容器组件和栅格子组件6、List、ListItem、ListItemGr…

力扣每日一题 6/28 动态规划/数组

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 2742.给墙壁刷油漆【困难】 题目&#xff1a; 给你两个长度为 n 下标从 0…

密码学及其应用 —— 非对称加密/公匙密码技术

1 RSA加密算法 RSA加密算法是一种基于公钥密码学的加密技术&#xff0c;由罗纳德里维斯特&#xff08;Ron Rivest&#xff09;、阿迪萨莫尔&#xff08;Adi Shamir&#xff09;和伦纳德阿德曼&#xff08;Leonard Adleman&#xff09;在1977年共同发明。RSA算法是第一个既能用于…

C++ sizeof的各种

C sizeof的各种 1. 含有虚函数的类对象的空间大小2. 虚拟继承的类对象的空间大小3. 普通变量所占空间大小4. 复合数据类型&#xff08;结构体和类&#xff09;5. 数组6. 类型别名7. 动态分配内存8. 指针9. 静态变量10. 联合体11. 结构体使用#program pack 1. 含有虚函数的类对象…

如何用 php 实现邮件发送功能

一、使用 PHPMailer 发送邮件 1、需要先安装 PHPMailer 库。你可以使用 Composer 来安装它&#xff1a; composer require phpmailer/phpmailer2、安装完成后&#xff0c;可以创建一个简单的 PHP 脚本来发送邮件。以下是一个示例脚本&#xff1a; <?php use PHPMailer\P…

RuoYi_Cloud本地搭建

1.进入若依官网获取git地址 &#xff08;1&#xff09;百度搜“若依官网进”入如下界面 &#xff08;2&#xff09;点击进入git&#xff0c;点克隆下载 &#xff08;3&#xff09;复制http地址 2.在git链接在idea本地打开 &#xff08;1&#xff09;返回桌面——右键&#xf…

金属波纹管

金属波纹管是一种外型规则的波浪样的管材&#xff0c;常用的金属波纹管有碳钢的&#xff0c;和不锈钢的&#xff0c;也有钢质衬塑的、铝质的等等。这种管材主要用于需要很小的弯曲半径非同心轴向传动&#xff0c;或者不规则转弯、伸缩&#xff0c;或者吸收管道的热变形等&#…

大数据面试题之HBase(1)

目录 介绍下HBase HBase优缺点 说下HBase原理 介绍下HBase架构 HBase读写数据流程 HBase的读写缓存 在删除HBase中的一个数据的时候&#xff0c;它什么时候真正的进行删除呢?当你进行删除操作&#xff0c;它是立马就把数据删除掉了吗? HBase中的二级索引 HBa…

数据结构历年考研真题对应知识点(数组和特殊矩阵)

目录 3.4数组和特殊矩阵 3.4.2数组的存储结构 【二维数组按行优先存储的下标对应关系(2021)】 3.4.3特殊矩阵的压缩存储 【对称矩阵压缩存储的下标对应关系(2018、2020)】 【上三角矩阵采用行优先存储的应用(2011)】 【三对角矩阵压缩存储的下标对应关系(2016)】 3.4.…

python中Mysql的模糊查询

1.方法一&#xff1a;使用pymysql库的方法 当在Python中使用MySQL进行模糊查询时&#xff0c;我们通常会使用pymysql或mysql-connector-python这样的库来连接MySQL数据库并执行查询。以下是一个使用pymysql进行模糊查询的详细示例&#xff0c;包括安装库、连接数据库、执行查询…