k8s的网络类型:

k8s的网络类型:

CNI网络插件:flannel calico

k8s的三种通信方式:
1、pod内部的网络通信:

pod内部容器的通信,pod创建完成之后,集群会分配pod一个全局的唯一IP地址。所以的容器共享这个IP地址。

pod内部可以用本地通信+端口形式互相通信。

2、同一个node节点上的pod通信:

docker0网桥。同一个节点上的pod和docker的通信方式是一样的。

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

想办法通过主机的物理网卡IP地址进行通信。

1)pod的ip地址不能冲突

2)pod的ip地址要和node节点的IP地址进行关联。

CNI

CNI:CNI是一个标准接口,用于容器运行时调用物理插件,配置容器的网络。

CNI负责设置容器的网络命名空间,IP地址、路由等网络参数。

pod的IP地址进行封装,通过node节点作为路由器,转发到其他的node节点,其他的node节点收到数据包之后解包,把数据包转发到指定的pod。

CNI插件的两个类型:

Flannel插件:

让集群中不同节点创建的pod都有集群内部唯一的IP地址。(虚拟)

Flannel 是一种overlay网络,overlay是一种网络虚拟化技术,在底层的物理网络基础之上创建一个逻辑的网络层。

从而实现跨节点的pod之间的通信。

Flannel数据转发的方式:UDP(少) VXLAN(主流) HOST-GW(主机模式,性能最好,但配置复杂,没人用)

VXLAN:基于内核进行转发

UDP:默认方式,基于应用层转发,配置最简单,性能最差

HOST-GW:性能最好,但是配置繁琐

VXLAN

ifconfig:

UDP:flannel.0

VXLAN:flannel.1

VXLAN VLAN 都是通过标识来实现广播域的划分。

VLAN 不同的vlan之间可以通信。0 1 4096 2-4095 4094个 vlanid

VXLAN 标识,vni 数据中心进行广域网的划分。通过三层网络搭建一个虚拟的二层网络------------>三层交换机

工作模式:

1、流程流向

搭建网络模式:
复制代码
#flannel.tar    kube-flannel.yml    cni-plugins-linux-amd64-v0.8.6.tgz    将这三个文件都拖到master上,两个node只要flannel.tar和cni-plugins-linux-amd64-v0.8.6.tgz
​
[root@master01 opt]# rz -E
rz waiting to receive.
[root@master01 opt]# rz -E
rz waiting to receive.
————————————————————三台机器上都操作——————————————————————
[root@master01 opt]# docker load < flannel.tar      #这一步在三台机器上都操作
[root@master01 opt]# mv /opt/cni /opt/cni_bak
[root@master01 opt]# cd cni_bak/
[root@master01 cni_bak]# ls
bin
[root@master01 cni_bak]# mkdir -p /opt/cni/bin
[root@master01 cni_bak]# cd /opt/
[root@master01 opt]# tar -xf cni-plugins-linux-amd64-v0.8.6.tgz -C /opt/cni/bin/
————————————————————下面这一步只在master上操作—————————————
[root@master01 opt]# kubectl apply -f kube-flannel.yml 
​
[root@master01 ~]# vim /etc/profile
source <(kubectl completion bash)       #在最后一行加入
[root@master01 ~]# source /etc/profile
​
[root@master01 opt]# ls
update-kubeadm-cert.sh
#证书有效期的问题,kubeadm默认只有1年:
openssl x509 -in /etc/kubernetes/pki/ca.crt -noout -text | grep Not
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text | grep Not
​
./update-kubeadm-cert.sh all
​
执行脚本即可

calico网络:

使用host主机作为路由器,使用BGP同步路由以及iptables来做网络。把host主机当作路由器。

采用直接路由的方式实现。损耗很低,不需要修改数据包的报文,pod太多,路由表比较复杂,维护起来比较麻烦。

适用于大集群的复杂网络模式。

calico------------>veth-pair设备,一个虚拟的网卡。

一头设备连接pod内的网络空间,一头连接主机的网络空间。

calico通过linux的网络命名空间和路由表实现pod之间的通信。

flannel和calico的区别:

flannel插件:默认的地址是10.244.0.0/16

三种模式:UDP VXLAN HOST-GW

flannel的功能简单,不具备复杂的网络策略的配置能力。小集群或者简单的网络首先使用flannel插件。

calico:BGP直接路由,路由维护,路由转发

默认网段:192.168.0.0/16

calico是一个可以对网络进行管理的插件,具备配置复杂网络配置的能力。本身的配置比较复杂,对开发人员,运维人员要求比较高。

需要复杂配置的可以使用calico。(配置更多的网络策略)

相关推荐
Patrick_Wilson1 天前
从「改个端口」到 502:Next.js on k8s 的容器端口、Service 映射与 env 覆盖
docker·kubernetes·next.js
探索云原生2 天前
K8s 1.36 这个 GA 特性,把 initContainer 拉模型的 hack 干掉了
ai·云原生·kubernetes
云恒要逆袭2 天前
运行你的第一个Docker容器
后端·docker·容器
Java之美3 天前
一次k8s升级引发的DevicePlugin注册失败
云原生·kubernetes
程序员老赵4 天前
10 分钟部署 OpenCode:Docker 一键安装,浏览器打开就能用 AI 写代码(附完整命令与排错)
docker·容器·ai编程
武子康7 天前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
网络研究院10 天前
2026年网络安全
网络·安全·法律·法规·趋势·发展
酣大智10 天前
ARP代理--工作原理
运维·网络·arp·arp代理
treesforest10 天前
AI安全系统如何识别异常访问?IP风险识别正在成为关键能力
网络·人工智能·tcp/ip·安全·web安全