网站建设后台有哪些东西金顶街网站建设
web/
2025/9/29 7:09:36/
文章来源:
网站建设后台有哪些东西,金顶街网站建设,手机网站app制作公司,网店运营推广中级实训系统文章目录 CNI网络FlannelUDP模式VXLAN模式部署flannel CalicoCalico模式Calico部署 flannel 和 calico 区别 CNI网络 K8S 中 Pod 网络通信#xff1a; Pod 内容器与容器之间的通信 在同一个 Pod 内的容器#xff08;Pod 内的容器是不会跨宿主机的#xff09;共享同一个网络命… 文章目录 CNI网络FlannelUDP模式VXLAN模式部署flannel CalicoCalico模式Calico部署 flannel 和 calico 区别 CNI网络 K8S 中 Pod 网络通信 Pod 内容器与容器之间的通信 在同一个 Pod 内的容器Pod 内的容器是不会跨宿主机的共享同一个网络命令空间相当于它们在同一台机器上一样可以用 localhost 地址访问彼此的端口。 同一个 Node 内 Pod 之间的通信 每个 Pod 都有一个真实的全局 IP 地址同一个 Node 内的不同 Pod 之间可以直接采用对方 Pod 的 IP 地址进行通信Pod1 与 Pod2 都是通过 Veth 连接到同一个 docker0 网桥网段相同所以它们之间可以直接通信。 不同 Node 上 Pod 之间的通信 Pod 地址与 docker0 在同一网段docker0 网段与宿主机网卡是两个不同的网段且不同 Node 之间的通信只能通过宿主机的物理网卡进行。要想实现不同 Node 上 Pod 之间的通信就必须想办法通过主机的物理网卡 IP 地址进行寻址和通信。因此要满足两个条件Pod 的 IP 不能冲突将 Pod 的 IP 和所在的 Node 的 IP 关联起来通过这个关联让不同 Node 上 Pod 之间直接通过内网 IP 地址通信。 Overlay Network 叠加网络在二层或者三层基础网络上叠加的一种虚拟网络技术模式该网络中的主机通过虚拟链路隧道连接起来类似于VPN。 kubernetes三种网络 K8S三种网络 节点网络node节点网卡的IPnodeIPPod网络podIPservice网络clusterIP k8s三种接口 CRI容器运行时接口docker、containerdpodmancri-0CNI容器网络接口flannelcalicociliumCSI容器存储接口cephnfsgfs
Flannel
Flannel 的功能是让集群中的不同节点主机创建的 Docker 容器都具有全集群唯一的虚拟 IP 地址。Flannel 是 Overlay 网络的一种也是将 TCP 源数据包封装在另一种网络包里面进行路由转发和通信目前支持 udp、vxlan、 host-GW 3种数据转发方式。flannel三种模式 UDP出现最早性能较差基于flanneld应用程序实现数据包的封装和解封装VXLAN默认模式推荐使用的模式性能比UDP模式更好基于内核实现数据包的封装和解封装Host-gw性能最好但是配置复杂不能跨网段
UDP模式 flannel UDP模式工作原理 应用数据包从源主机的POd容器发出到cni0网桥接口再由cni0转发到flannel0虚拟接口flanneld服务会监听flannel0接口接收到的数据flanneld服务会将内部数据封装到UDP报文里flanneld会根据再etcd中维护的路由表查到目标pod所在的node节点IP在UDP报文外在封装node节点的IP报文、MAC报文后通过物理网卡发送到目标node节点UDP报文通过8285号端口送到目标主机的flanneld进程进行解封装再通过flannel0接口转发到cni0网桥然后通过cni0网桥转发到目标pod容器
VXLAN模式 vxlan 是一种overlay虚拟隧道通信技术通过三层网络搭建虚拟的二层网络跟 udp 模式具体实现不太一样:
udp模式是在用户态实现的数据会先经过tun网卡到应用程序应用程序再做隧道封装再进一次内核协议栈而vxlan是在内核当中实现的只经过一次协议栈在协议栈内就把vxlan包组装好udp模式的tun网卡是三层转发使用tun是在物理网络之上构建三层网络属于ip in udpvxlan模式是二层实现 overlay是二层帧属于mac in udpvxlan由于采用mac in udp的方式所以实现起来会涉及mac地址学习arp广播等二层知识udp模式主要关注路由
flannel VXLAN模式工作原理
原始数据帧从源主机的POd容器发出到cni0网桥接口再由cni0转发到flannel.1虚拟接口flannel.1接口接收到数据帧后添加VXLAN头部再内核封装成UDP报文falnneld会根据再etcd维护的路由表通过物理网卡发送到目标node节点UDP报文通过8472号端口送到目标主机的flannel.1接口在内核进行解封装然后将原始报文通过cni0网桥转发到目标pod容器
部署flannel
###在node01节点上
##上传压缩包到 /opt/k8sflannel-v0.21.5.zipunzip flannel-v0.21.5.zip##创建 cni 工作目录
mkdir -p /opt/cni/bincni-plugins-linux-amd64-v1.3.0.tgz
flannel-cni-plugin.tar
flannel.tar
kube-flannel.yml###解压 cni 配置文件
tar xf cni-plugins-linux-amd64-v1.3.0.tgz -C /opt/cni/bin##加载镜像文件
docker load -i flannel.tar
docker load -i flannel-cni-plugin.tar###node02节点采用相同的操作###发送 kube-flannel.yml 到master01 的/opt/k8s目录中
cd /opt/k8s
scp kube-flannel.yml 192.168.242.66:/opt/k8s##在 mater01 节点操作
##安装网络插件
cd /opt/k8s
kubectl apply -f kube-flannel.yml##卸载安装的网络插件
##一个 k8s 集群中只能安装一个网络插件
kubectl delete -f 插件配置文件 ##查看网络查看的运行状态
kubectl get pods -A##查看nodes节点状态
kubectl get nodes##如果要修改flanneld的模式
vim kube-flannel.ymlNetwork: 10.244.0.0/16, ###修改网段必须与controller-manager的cluster-cidr一致Backend: {Type: vxlan ##修改模式
###创建 pod
###在 mater01kubectl create deployment ggl --imagenginx:latest --port80##查看创建的容器
kubectl get pods -A###创建 pod
###在 mater01kubectl create deployment ggl --imagenginx:latest --port80##查看创建的容器
kubectl get pods -ACalico
k8s 组网方案对比: flannel方案 需要在每个节点上把发向容器的数据包进行封装后再用隧道将封装后的数据包发送到运行着目标Pod的node节点上。目标node节点再负责去掉封装将去除封装的数据包发送到目标Pod上。数据通信性能则大受影响。calico方案 Calico不使用隧道或NAT来实现转发而是把Host当作Internet中的路由器使用BGP同步路由并使用iptables来做安全访问策略完成跨Host转发来。
Calico模式 Calico 主要由三个部分组成 Calico CNI插件主要负责与kubernetes对接供kubelet调用使用。Felix负责维护宿主机上的路由规则、FIB转发信息库等。BIRD负责分发路由规则类似路由器。Confd配置管理组件 Calico IPIP模式工作原理 源Pod容器发出的原始数据IP包通过内核的IPIP驱动直接封装在宿主机网络的IP包中根据tunnel接口的路由通过物理网卡发送到目标Node节点数据包到达目标节点后再通过IPIP驱动解包得到原始数据IP包然后通过路由规则发送给 veth pair 设备到达目标Pod容器 Calico BGP模式工作原理本质就是通过路由表来维护每个 Pod 的通信 源Pod容器发出的原始数据IP包会通过 veth pair 设备到达宿主机网络空间然后根据原始数据IP包的目标IP和宿主机的路由规则找到目标Node节点的IP再通过物理网卡发送到目标Node节点根据目标Node节点的路由规则直接通过目标Pod容器的 veth pair 设备发送到目标Pod容器
Calico部署
###下载 calico配置文件curl https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml###在master01 节点
##先卸载之前安装的 flanneld插件
kubectl delete -f kube-flannel.yml###上传 calico.yaml 文件到 /opt/k8s 目录中部署 CNI 网络
cd /opt/k8s
vim calico.yaml#修改里面定义Pod网络CALICO_IPV4POOL_CIDR与前面kube-controller-manager配置文件指定的cluster-cidr网段一样---3879行---- name: CALICO_IPV4POOL_CIDRvalue: 192.168.0.0/16##修改 calico的模式---3851行---
Enable IPIP- name: CALICO_IPV4POOL_IPIPvalue: Always##如果使用BGP模式
将 value: Always 改为 Never还要添加- name: IP AUTODETECTION_METHODvalue: interfaceens.*
#添加使用的物理网卡##安装网络插件
kubectl apply -f calico.yaml##查看插件状态
kubectl get pods -Aflannel 和 calico 区别
flannel UDP VXLAN Host-gw 默认网段10.244.0.0/16通常使用VXLAN模式采用的是叠加网络、IP隧道方式传输数据对性能有一定的影响功能简单配置方便利于管理但是不具备复杂的网络策略规则配置能力 calico IPIP BGP 混合模式CrossSubnet 默认网段192.168.0.0/16使用IPIP模式可以实现跨子网传输但是传输过程中需要封包和解包对性能有一定的影响使用BPG模式把Node节点看作成路由器根据Felix、BIRD分发和维护的路由规则可直接实现BGP路由转发传输过程中不需要封包和解包因此性能较好但只能在同一个网段内使用无法跨子网传输具有更丰富的网络策略配置管理能力、性能更好、功能更全面但是维护起来较为复杂 所以对于较小规模且网络要求简单的K8S集群可以采用flannel。对于集群规模较大且要求更多的网络策略配置时可以采用性能更好、功能全全面的calico
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/83766.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!