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。(配置更多的网络策略)

相关推荐
Yang96111 小时前
鼎讯 SZT-2000A:铁路高速万兆网络一站式测试方案
网络
星恒讯工业路由器1 小时前
星恒讯5G工业级通信模组选型指南:接口配置、工业防护与应用场景详解
网络·物联网·5g·信息与通信
Altruiste1 小时前
minikube 搭clickhouse 集群
clickhouse·kubernetes
云边云科技_云网融合2 小时前
企业出海的 “数字丝绸之路“:SD-WAN 如何重构全球网络竞争力
大数据·运维·网络·人工智能
古城小栈2 小时前
通过 Kind 快速构建 k8s 集群
云原生·kubernetes·kind
kyle~3 小时前
计算机网络---网络层
网络·计算机网络·智能路由器
浪客灿心3 小时前
Linux五种IO模型与非阻塞IO
linux·网络
Ether IC Verifier3 小时前
TCP/IP四层协议详解与以太网包发送过程
网络·网络协议·tcp/ip·计算机网络·dpu
smileNicky3 小时前
Docker 部署 SpringBoot 项目超详细教程
spring boot·docker·容器
IpdataCloud3 小时前
企业级IP定位服务准确率怎么保证?从数据源到离线库的精度提升指南
运维·服务器·网络·数据库·tcp/ip