kubernetes基础知识之pod和网络插件CNI

B站影视 2025-01-09 15:14 2

摘要:Pod是最小的部署模块,pod是容器组,里面是容器。pod与容器就像是豌豆荚和里面的豌豆粒一样,Pod里面有pause容器。

Kubernetes中pod是最小的调度单位,本质上是容器组。

Pod是最小的部署模块,pod是容器组,里面是容器。pod与容器就像是豌豆荚和里面的豌豆粒一样,Pod里面有pause容器。

pause容器是pod中启动的第一个容器,pause容器初始化网络栈,挂载需要的存储,回收僵尸进程。

容器和pause容器共享命名空间,共享网络、PID、IPC。

docker借助命名空间一样的技术实现隔离,包括cgroup、bridge、netfilter、chroot去实现容器的隔离。

命名空间namespace,不同的容器放在不同的命名空间,实现隔离。

同一个pod内的不同容器,在network级别、pid级别、IPC级别是共享的,而且是由pause容器提供。

shift➕$ 跳转到行尾

一个pod是kubernetes集群中最小的调度单位,一般强耦合的容器才能放在同一个pod中,每个pod内部都有一个pause容器在运行。pause容器初始化网络、挂载存储卷、回收僵尸进程。其他容器共享pause的网络、IPC和PID的命名空间。

pod是一种逻辑概念,它不真实存在。

dnf会调用yum进行软件包的安装。

查看防火墙规则:iptables -L

清空防火墙规则:iptables -F

设置时区:

timedatectl set-timezone Asia/Shanghai

安装kubernetes之前要安装docker-ce。

yum -y install docker-ce

Pod是kubernetes中运行任务的最小单位。

Kubernetes中所有的pod都在一个扁平化的网络空间中,我们需要把不同节点中的docker网络互相访问先打通,然后再运行kubernetes。

CNI:容器网络接口 Container Network Interface。

CRI:容器运行时 Container Runtime Interface,比如docker、podman、containerd。

kubernetes默认的CNI插件路径是/opt/cri/bin。

CNI主要是指对可执行程序的调用程序。

网络插件类型,分成五种:

Main类型:创建具体的网络设备。

①:bridge网桥 连接container和host

②:ipvlan 为容器增加ipvlan网卡

③:loopback 它是一个I/O 设备,去解决环回接口问题

④:macvlan 为容器创建一个mac地址

⑤:ptp 创建一个虚拟以太网对veth pair。把这个虚拟以太网对的一端放入容器内部。

⑥:vlan 分配一个vlan设备

⑦:host-device 把已经存在的设备放入容器内

IPAM插件:负责分配IP地址

①:DHCP:容器向DHCP服务器发送请求,给pod发放或者回收IP地址。

②:host-local 使用预先配置的地址段来进行分配IP地址的操作

③:static 为容器配置一个静态的IPv4或者IPv6地址

一般在容器内部,IP地址都是自动分配的。需要人工干预,才需要手动去配置IP地址。

META插件:其他功能的插件。

①:tunning 通过sysctl调整网络配置参数

②:portmap 通过iptables进行端口映射

③:bandwidth 使用Token Bucket Filter算法进行限流

④:sbr 为网卡设置基于源地址的路由 source based routing

⑤:firewall 通过iptables给容器网络的进出流量进行限制

Windows插件:专门用于Windows平台的CNI插件,包括:win-bridge和win-overlay网络插件。

第三方插件:第三方开源的网络插件,包括:

①:calico

②:flannel

③:cilium

④:OVN(基于OVS)

kubernetes的CNI插件还有:flannel、calico、weave 、cilium、canal等。

之前主流第三方cni插件是flannel,当前主流第三方cni插件是calico,未来主流cni插件可能是cilium。

eBPF:Extended Berkeley Packet Filter,Cilium使用eBPF实现网络层面的数据包过滤、负载均衡、网络策略和服务发现等功能。

calico支持封装网络和未封装网络。

Canal、flannel、weave、cilium 提供封装网络的支持功能。

underlay network:非封装网络

overlay network: 封装网络

underlay network:是现实的物理基础层网络设备,直接通信。

underlay就是数据中心场景的基础物理设施,保证任何两个点路由可达,其中包含了传统的网络设备。

overlay network:封装网络,是一个基于物理网络之上构建的逻辑虚拟网络。overlay在网络技术领域是指一种网络架构上叠加的虚拟化技术模式。

其本质还是借助物理网络,但是在上面加了一个虚拟的抽象层,它可以屏蔽掉很多用户不需要知道的信息。虚拟化的可变换性、可修改性非常强。

overlay技术多种多样,一般采用TRILL、VxLAN、GRE、NVGRE等多种隧道技术,都可以帮我们实现封装网络。

一般flanneld用于封装网络,也就是overlay network。flanneld在数据包外层添加一层数据报文。flanneld使用vxlan模式或者IPIP模式,添加的内容也不同。如果使用IPIP模式,会添加一个三层的IP头部,被传递给对方的flanneld,然后经过拆包发送给我们的目标容器内部。非封装网络与封装网络的区别就是要看当前传递的数据报文,在传递给目标容器内部的时候,在数据包的外部有没有嵌套一层新的包体。新的包体可能是二层的,也可能是三层的。

flannel不支持网络策略,calico支持网络策略。

Calico和cilium网络插件支持etcd和kubernetes api的存储方式。

Calico是一个纯三层的网络,它没有复用docker的docker0网桥,而是自己实现的。calico部队数据包进行额外的封装,不需要NAT网络地址转换和端口映射。

鼓励的话语:成功者不犹豫,犹豫者不成功!

来源:科技大排档

相关推荐