云原生技术 --- k8s节点组件之kube-proxy的学习与理解

news/2024/5/15 5:37:16/文章来源:https://blog.csdn.net/weixin_42321034/article/details/127106370

k8s 网络代理(kube-proxy)在每个节点上运行。网络代理反映了每个节点上 Kubernetes API 中定义的服务,并且可以执行简单的 TCP、UDP 和 SCTP 流转发,或者在一组后端进行 循环 TCP、UDP 和 SCTP 转发。但是,必须要有一个插件,才可以实现相应的通信功能,它的作用是使发往 Service 的流量(通过ClusterIP和端口)负载均衡到正确的后端Pod。

kube-proxy的理解

kube-proxy通过网络插件,实现网络请求转发,网络插件就是CNI接口的具体实现,其中iptables性能没有ipvs效果好,因为ipvs的时间复杂度是o1,而iptables需要循环遍历,容器越多,节点越多iptables性能就会下降

配置参数列表

https://kubernetes.io/zh-cn/docs/reference/command-line-tools-reference/kube-proxy/

一份kube-proxy的配置文件

apiVersion: kubeproxy.config.k8s.io/v1alpha1
bindAddress: 0.0.0.0
clientConnection:acceptContentTypes: ""burst: 0contentType: ""kubeconfig: /var/lib/kube-proxy/kubeconfig.confqps: 0
clusterCIDR: 10.100.0.0/16
configSyncPeriod: 0s
conntrack:maxPerCore: nullmin: nulltcpCloseWaitTimeout: nulltcpEstablishedTimeout: null
detectLocalMode: ""
enableProfiling: false
featureGates:SupportIPVSProxyMode: true
healthzBindAddress: ""
hostnameOverride: ""
iptables:masqueradeAll: falsemasqueradeBit: nullminSyncPeriod: 0ssyncPeriod: 0s
ipvs:excludeCIDRs: nullminSyncPeriod: 0sscheduler: ""strictARP: falsesyncPeriod: 0stcpFinTimeout: 0stcpTimeout: 0sudpTimeout: 0s
kind: KubeProxyConfiguration
metricsBindAddress: ""
mode: iptables
nodePortAddresses: null
oomScoreAdj: null
portRange: ""
showHiddenMetricsForVersion: ""
udpIdleTimeout: 0s
winkernel:enableDSR: falsenetworkName: ""sourceVip: ""

简单说明这份配置文件

配置文件中表明了kubeproxy支持iptables、ipvs、Winkernel、Conntrack四种模式,也可能支持其他模式,但是我不清楚,配置文件中明确使用模式为iptables(这是因为我的集群版本是1.18,无法使用ipvs)

CNI(容器网络接口)

网络不通,一切为零,容器想要正常运行,那么网络是必不可少的,部分容器具备网络系统,例如,Docker有内置的网络系统,但是并不是所有的容器都有这样的网络系统,如果k8s想要做到包容万象,那么使用一套标准行为规范的容器网络协议是很有必要的,k8s使用的是CNI接口层,CNI(Conteinre Network Interface) 是 google 和 CoreOS 主导制定的容器网络标准,它本身并不是实现或者代码,可以理解成一个协议。这个标准是在 rkt 网络提议的基础上发展起来的,综合考虑了灵活性、扩展性、ip 分配、多网卡等因素

CNI接口都规定了什么?

查看源代码

https://github.com/containernetworking/cni/blob/main/libcni/api.go
在这里插入图片描述

在这里插入图片描述CNI的规范真的简单

  • 给我一个路径,让我识别到CNI配置列表(支持多个网络插件,上图代码100行),上图中131、132两行为必填参数
  • 当需要使用插件时,比如新增网络、删除网络等,执行101行代码,
  • 插件自己处理网络分配,完成业务

CNI的简单规范,使得插件支持百花齐放,每种插件都有不同的特点

一份简单的calico插件清单

网络插件配置目录在/etc/cni/net.d/
网络插件的具体二进制文件在 /opt/cni/bin 目录下
在这里插入图片描述
10-calico.conflist内容如下

{"name": "k8s-pod-network", # 必填"cniVersion": "0.3.1", # 必填"plugins": [{"type": "calico",  # 插件的具体类型"log_level": "info", # 日志等级配置"log_file_path": "/var/log/calico/cni/cni.log", # 日志目录配置"datastore_type": "kubernetes","nodename": "k8s-master-1","mtu": 0,"ipam": {"type": "calico-ipam"},"policy": {"type": "k8s"},"kubernetes": {"kubeconfig": "/etc/cni/net.d/calico-kubeconfig" # 插件使用的k8s配置}},{"type": "portmap","snat": true,"capabilities": {"portMappings": true}},{"type": "bandwidth","capabilities": {"bandwidth": true}}]
}

calico-kubeconfig 配置如下

# Kubeconfig file for Calico CNI plugin.
apiVersion: v1
kind: Config
clusters:
- name: localcluster:server: https://[10.200.0.1]:443certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN5RENDQWJDZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJeU1EY3hNekEwTkRBME5Wb1hEVE15TURjeE1EQTBOREEwTlZvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlJRCmxsWkZndzFVaFN5TFJIYk01UnpNYXN2eTNKL1ZOK1lISE5DT1lqeDJNODNCOFZzc09jaGw4S1hOdjJKckMrL3EKUVRNcXl4U0hhNHltZWg3SXI3d2dUTjFJTTNqdEdyZk5ONHhJQ1k2ZTlMWnVuSlB6V3FHQTdnOXF2M0ViN29FMAplQyt3MEtaRGcwazB1VGx4bUhTWFp0a1Z3eEtCSkdmV2xabDdZVDdXK2lXT0h6SVdpVTM2bWRUdGVJclhqbksxClBKeFl1VWE5TEVRSWltSGVBMk9zVk01YjMxbE9mVDVsdVptWWRjYWxZYUNmMlEwMWtJa2NBQmtnTHRSbFhQTXUKNk5MN2dqRFFueTVGbjlmUWRCN0tyWEFsVWEwS2hrMitiM2VhdGNZVmw2TG1DbTFTTkhQUjhLclM3bDdPUU9IVAo3MThtZ0luUENkVWNUNFI2dUVVQ0F3RUFBYU1qTUNFd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFENllXaWJIdkVmS09IZGxFVllTZS9TbjVFc0gKWDVyOGhuOHZFQ3l5bVR0bEk1N0JrY1VJL3pTWXJCMjdZRXVlbm54N2dneFJ3OTJVbzNBUUdSV2llVUVWVjlBNwpteFg2ZDNDWnNCNnExM1lLUnFMTXdnb2RaaGh1bVpoY0dyOHhubE1xS3hFdkZRcFlLbkVUdzRoWXlnZmZsUkRhCnNMaXM2WHNlczI3VjZhbVhVTDhpUFM5bTk1OEdJa3lWaEF3K25ZbVRJTHdieHBoTEZtKzJBK3hlRkdWbnJMWHkKMjNZUFVLdGI5THd3M29GQUFNa3VBOTFPc0p0VndLTDN3VHR4anU3TGhjZFpTYnpJbmZSNi9RWThnbE9JS3MzcQpJdXpMOU1ESHVIMW40TEcwamZwUGVqMnhqZUdhOUdyWHNEQVVlaU1URE1YOUxUMjVHdXo2NkwzdEN6az0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
users:
- name: calicouser:token: eyJhbGciOiJSUzI1NiIsImtpZCI6Im5QbGNTbk5tR0p6U19VM0EydWdqUnZ3RzVCLVNVemNCeFlUZ3hwcFlOREEifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJjYWxpY28tbm9kZS10b2tlbi1sanR2YyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQc2VydmljZS1hY2NvdW50Lm5hbWUiOiJjYWxpY28tbm9kZSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjRmMDJjOWJiLWZmZTUtNDRjOS05N2I4LTBlMTVmM2Q0MzllMSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTpjYWxpY28tbm9kZSJ9.st-Pfb7ujDk8tegiIsYfhhH4FhQBQCLbYcFVa0IqDDBN0kCgb6nINLAP0g1G4INwxRwZ5DJ3XfHNxTLEKjgLLfTbqjq3r1AhvNV98fbS89p5TPvZS8ydaHQxhnLuaPPc8cU_4zKcmq1QxR2fyHNNyGmvkI09Mb3e-ob9a_9cBiDzw6MPeHG1I1YH-L8KQfzo-CdPpZcIm430HbRaTgI6XvjzaLVewfqGR3UlucgBLSR8HC2r1cRWtXwPiquGpdtFhrimKhpveZNNkUrB7ef6dDFTX1z0KiIB8ogReXyHF3yPtpG1dX63ESKtw9bB5lQAp1kwMtxpkMR-yOB4Ja9_5A
contexts:
- name: calico-contextcontext:cluster: localuser: calico
current-context: calico-context

查看k8s支持网络插件二进制文件

在这里插入图片描述
查看calico的yml,发现calico是使用ds模式,将二进制文件挂载到每个node的目录中,因此,每个节点的kube-proxy,均可以使用calico的网络,实现pod之间的网络转发通信
https://docs.projectcalico.org/manifests/calico.yaml
在这里插入图片描述
在这里插入图片描述

kube-proxy总结

  • 负责转发网络请求
  • 内部使用CNI容器网络接口与网络组件进行通信
  • CNI的插件具有很多种类,且特性各不相同
  • 网络插件配置目录在/etc/cni/net.d/
  • 网络插件的具体二进制文件在 /opt/cni/bin 目录下
  • calico是通过ds模式,挂载master的二进制文件和相关网络配置信息,然后分发到各个node

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

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

相关文章

毕业设计- 基于单片机与GPS+GSM的车辆定位跟踪系统

文章目录0 前言1 简介2 主要器件3 实现效果4 硬件设计Maduino Zero A9G GPRS/GPSk开发板这款低功耗A9G使用SIM800/900和NEO-6M GPS模块的基于Arduino的GPS跟踪系统5 软件说明使用Arduino的基于GPSGSM的车辆跟踪系统GPSGSM的车辆跟踪系统的代码6 最后0 前言 🔥 这两…

IDEA中使用Git

目录 一、IDEA中使用Git 配置Git settings ——>Version Control——>Git 点击Test测试版本号 下载gitee插件 配置账户 第一种方式:账号密码 第二种方式:通过Token令牌 分享单个项目 组员需要拿到项目的SSH地址 二、总结 一、IDEA中使用G…

万物互联时代到来,猿代码领衔先计算机赋数据化转型

社会经济的高速发展推动着各行各业进行转型升级,而数字经济则是当前社会经济发展的强大驱动。根据相关报道显示,早在多年前我国数字经济规模总量便达到万亿元规模,占2016年全年GDP比重的30%。数字经济的飞速发张需要强劲算力的支撑…

wxpython设计GUI:grid控件实现显示表单数据功能,同时实现界面的上下翻页以及跳转功能

grid控件实现显示表单数据功能,同时实现界面的上下翻页以及跳转功能。 1. 效果展示 2. 代码实现 #!/usr/bin/env python # -*- coding: utf-8 -*- # Author: Logintern09########################################################################### ## Python …

【图像分割】基于matlab直方图的自适应阈值方法分割前景与背景【含Matlab源码 2144期】

一、一种基于直方图的实时自适应阈值分割方法简介 1 引言 在交通管理中,为了获得车辆的运动数据,需要对交通视频进行实时监测,从监测图像序列中检测出运动对象,并对运动对象进行分析处理,从而获得车辆和行人的运动数据…

EMQX Cloud 影子服务:便捷数据缓存服务,加速 IoT 应用开发

全托管 MQTT 消息云服务 EMQX Cloud 可以帮助用户轻松将各类物联网设备连接上云,提供与各类第三方服务的数据集成,助力用户进行高效的数据处理、存储与分析。 为了实现更加便捷的物联网数据处理,进一步简化用户构建物联网应用的开发流程&…

好心情精神心理科:抑郁症,真的会让你变丑!

有患者向好心情平台咨询:“抑郁症多年,我总感觉自己变丑了,脸色也不咋好看,这到底是我的心理作用,还是容貌真有变化呢?” 变丑这件事,不致命,但对于很多人来说,却似乎难…

net转java学习笔记-sqlserver的问题记录

最近公司有个.net项目,用的不是mysql是sqlserver,中间遇到几次问题记录下。 1.navicat连接sqlserver失败 百度了一下这个是缺少了驱动,其实navicat自带了这个驱动,没有安装而已。 打开Navicat的安装路径,Navicat自带s…

qsort:我很强,了解一下(详解过程)

了解qsort,以及模拟实现🎑情境引入🎈qsort📖qsort的头文件📄开场🔑qsort的参数🤔为什么可以对任意类型排序呢?📜参数参数①参数②参数③最难的参数④🎃qsort应…

一个完全纯净的windows资源站

网址:https://hellowindows.cn/ hello Windows呢是一个纯净的Windows系统下载网站,从已经淘汰的xp到新推出的win11,大部分的系统版本都涵盖了 且都是中文版本,更加方便 windows server版本也包括在内哦

17 -- 排序算法之希尔排序

希尔排序算法介绍: 希尔排序是希尔于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序。 写入排序法的基本思想: 希尔排序十八记录按下标的一定增量分组,对每组使用直接插入算法排序:随着增量逐渐…

JAVA毕设项目京东仓库管理系统(Vue+Mybatis+Maven+Mysql+sprnig+SpringMVC)

JAVA毕设项目京东仓库管理系统(VueMybatisMavenMysqlsprnigSpringMVC) 项目运行 环境配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&am…

好心情精神心理科医生:哪些精神类药物会影响你的睡眠?

患病后的你是否也因有这种顾虑,迟迟不敢吃药或选择停药呢? 到底哪些精神科药物会引起睡眠问题呢?资料显示,凡是提高多巴胺能和去甲肾上腺素能的药物,都有可能引起睡眠问题。今天,好心情小编带大家一起来看…

G:\r\tcga_example-master\scripts 生存分析 tcgaexample jimmy

G:\r\tcga_example-master\scripts library(survival) library(survminer)## 批量生存分析 使用 coxph 回归方法 # http://www.sthda.com/english/wiki/cox-proportional-hazards-model colnames(phe) head(phe) #event中1 表示存活(终点事件) #htt…

15Spring Boot整合MyBatis

MyBatis 是一个半自动化的 ORM 框架,所谓半自动化是指 MyBatis 只支持将数据库查出的数据映射到 POJO 实体类上,而实体到数据库的映射则需要我们自己编写 SQL 语句实现,相较于Hibernate 这种完全自动化的框架,Mybatis 更加灵活&am…

windows下Redis多实例部署

当存在多个项目的时候,需要同时部署时,且只有一台服务器时,哪么就需要部署Redis多个实例,原理很简单,多个Redis服务运行使用不同的配置及数据管理。 具体操作如下: 1、进入redis安装目录,找到…

zerotier的planet服务器(根服务器)-搭建教程

应用场景介绍: 利用阿里云服务器,搭建根服务器,把不同局域网打通,实现内网穿透,远程控制。 准备工具: 1、服务端:云服务器(有公网IP)Centos 7.62、客户端: 工控机(或者家里电脑)(Linux) ,公司电脑Windows 搭建私有化 ZeroTier步骤: 一、云服务器上安装服务操作…

python如何制作并安装自建包?

一、依赖 首先检查python是否安装了wheel、setuptools包,没有则使用pip安装pip install wheel --force-reinstallpip install setuptools --force-reinstall 二、准备文件在create_package文件夹下,制作自定义包(myPackage): 在该包下,有aa.py和bb.py两个模块, 同时该包…

win11怎么回去win10?四种方法教你!

win11系统与旧系统相比,在这些方面进行了重大更新:新的开始菜单、通知中心、重新设计的任务栏以及更加美观的圆角窗口,确实给用户带来了不一样的体验。然而,win11有时漏洞频出、BUG不断和兼容性不佳的问题,让很多升级w…

(附源码)springboot企业合同管理系统 毕业设计 161456

springboot企业合同管理系统 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对企业合同等问…