当前位置: 首页 > article >正文

2、k8s的cni网络插件和基本操作命令

kube-prxoy属于节点组件,网络代理,实现服务的自动发现和负载均衡。

k8s的内部网络模式

1、pod内的容器于容器之间的通信。

2、一个节点上的pod之间的通信,docker0网桥直接通信。

3、不同节点上的pod之间的通信:

通过物理网卡的ip地址和其他节点上的物理网卡的设备进行通信然后把流量转发到指定的pod内。

CNI作用:1、给每个pod提供一个全局的ip地址。

                 2、cni是一个标准接口,用于容器运行时调用网络插件,配置容器的网络。

设置容器的网络命令空间,IP地址,路由等等参数。

CNI的插件类型

CNI的插件可以让在集群内不同节点上创建的pod都拥有全局内唯一的IP地址。

flannel插件

是一种overlay网络模式,tcp数据包封装在另一种网络里面进行路由转发的模式。在二层的基础上创建一个逻辑上的网络层,可以实现跨节点的容器通信。

工作模式:udp模式,基于应用层转发,性能最差。

                  vxlan模式,基于内核转发,最常用的方式。

                  host-gw,性能最好,但是配置麻烦。

vxlan模式的工作原理:

1、数据帧从主机A上的POD1出发,进行二次封装源IP和目的IP(flannel会通过apiserver保存一张路由表到etcd)。

2、从pod1出发的数据包,经过docker0/cni0网络接口转到flannel.1接口(vxlan模式的默认接口)

3、flannel.1接口收到数据后添加vxlan头部,封装在udp报文中。

4、主机A的网卡收到flannel.1接口的数据包,封装主机A的IP和主机B的IP。

5、数据包到达主机B,vxlan默认接口8472,主机B收到数据包之后,解包,传送到8472端口,就是flannel.1接口,然后再解包,把数据转发到指定的pod。

  • UDP网络:flannel.0
  • vxlan:flannel.1

calico插件

把主机作为路由器,使用BGP(BGP动态路由,自动实现路由选择)同步路由的方式转发数据包。

calico的组成部分:

1、felix维护宿主机上的路由规则,以及FIB库(转发信息库)。

2、BIRD分发路由规则

3、confd配置管理组件

转发原理:

1、为每一个容器设置一个veth pair的设备。相当于桥接的功能,veth pair的一端接入宿主机的网络空间,另一端配置一个路由规则,接入容器docker0/cni0。

路由传播:

1、Felix在节点上添加pod的IP地址,添加pod的子网路由。

2、BIRD在集群内节点上建立BGP的会话,广播本机的路由节点。

3、集群内的节点学习整个路由,如何能够到达其他节点的pod的吓一跳的地址。

4、宿主机直接把数据包发送到目标主机,通过veth pair设备直接转发到目标pod。

k8s基本操作命令

 查看k8s版本

查看api资源对象

查看证书api有效期时间

查看集群中组件的状态-cs

查看集群节点的状态-get

查看默认命名空间里pod的状态

查看pod的详细状态-wide

 查看资源的详细信息-describe

查看pod与本机端口映射-svc

查看当前集群的命名空间

指定命名空间-n

创建命名空间

创建pod-create

  • 基于deployment控制器创建pod控制器的名称是nginx1
  • pod使用的镜像:nginx:1.22
  • --replicas=3:pod的数量有多少 3个

pod端口映射-expose

  • expose暴露出来的是service的类型,可以供内网访问的一个方式。
  • --port=80:集群对外服务的端口
  • NodePort:宿主机的随机端口

  • target-port=80:集群里面容器暴露的端口

删除pod-delete

  • 基于控制器创建的pod,删除pod相当于重启,不能把pod完全销毁。

基于控制器创建的pod删除pod副本需要删除相应的控制器

查看pod日志-logs

进入pod内的容器-exec

pod数量的扩缩容-scale

1、命令行改:kubectl scale deployment nginx --replicas=1

2、改yaml配置文件-edit

3、自动扩缩容:HPA根据cpu的负载自动扩缩容

直接创建pod-run

没有通过控制器创建的pod,可以直接删除-kubectl delete pod zw1


http://www.kler.cn/a/536451.html

相关文章:

  • 一、lambda表达式处理stream操作
  • 分析用户请求K8S里ingress-nginx提供的ingress流量路径
  • 文字加持:让 OpenCV 轻松在图像中插上文字
  • 初学 Xvisor 之理解并跑通 Demo
  • 专业学习|一文了解并实操自适应大邻域搜索(讲解代码)
  • 5. k8s二进制集群之ETCD集群部署
  • 极客说|利用 Azure AI Agent Service 创建自定义 VS Code Chat participant
  • Codeforces Round 995 (Div. 3)
  • 使用VSCode接入DeepSeek探索
  • 封装descriptions组件,描述,灵活
  • Ansys Maxwell:磁耦合器 - 扭矩与角度分析
  • 800G光模块:引领未来数据中心与网络通信的新引擎
  • GPT-4使用次数有上限吗?一文了解使用规则
  • WPF 进度条(ProgressBar)示例一
  • 【Pandas】pandas Series skew
  • Nginx SSL: error:1410D0B 错误
  • C#+Redis接收数据并定时3秒钟频率异步保存到数据库
  • [Halcon] 灰度值插值介绍
  • 数据库开发常识(10.6)——考量使用多视图连接、循环删除、绑定变量、连接表数及触发器(2)
  • C++ labmbd表达式
  • 在 Flownex 中创建自定义工作液
  • 寻找2020
  • 【算法】动态规划专题⑥ —— 完全背包问题 python
  • Maven 依赖管理全面解析
  • 【有啥问啥】什么是CTC(Connectionist Temporal Classification)算法
  • leetcode_双指针 541. 反转字符串 II