gpt4 book ai didi

kubernetes - 为什么 kubernetes pod 在工作节点上使用 none 网络而不是 bridge 网络?

转载 作者:行者123 更新时间:2023-12-04 12:57:12 25 4
gpt4 key购买 nike

有人可以让我知道为什么 kubernetes pod 在工作节点上使用 none 网络而不是 bridge 网络吗?

我使用 kubo 设置了一个 Kubernetes 集群。

The worker node by default will have 3 docker network.

NETWORK ID NAME DRIVER
30bbbc954768 bridge bridge
c8cb510d1646 host host
5e6b770e7aa6 none null

docker 默认网络是网桥
$>docker 网络检查网桥
"Options": {
"com.docker.network.bridge.default_bridge": "true",
"com.docker.network.bridge.enable_icc": "true",

但是如果我使用 kubectl run 命令来启动一个 pod
kubectl run -it --image nginx bash

在工作节点上会有两个容器启动
7cf6061fe0b8    40960efd7b8f     "nginx -g 'daemon off"   33 minutes ago      
Up 33 minutes k8s_bash_bash-325157647-ns4xj_default_9d5ea60e-cf74-11e7-9ae8-00505686d000_2

37c51d605b16 gcr.io/google_containers/pause-amd64:3.0 "/pause"
35 minutes ago Up 35 minutes k8s_POD_bash-325157647-ns4xj_default_9d5ea60e-cf74-11e7-9ae8-00505686d000_0

如果我们运行 docker inspect 37c51d605b16
我们可以看到它将使用“none”
"Networks": {
"none": {
"IPAMConfig": null,
"Links": null,

那么为什么 Kubernetes 会使用 none 网络进行通信呢?

最佳答案

Kubernetes 使用覆盖网络来管理相同或不同主机上的 pod 到 pod 通信。每个 pod 为该 pod 中的所有容器获取一个 IP 地址。一个 pause创建容器来保存网络命名空间并因此保留 IP 地址,这在容器重新启动时很有用,因为它们获得相同的 IP。
pod 有自己的以太网适配器,例如 eth0映射到主机上的虚拟以太网适配器,例如 veth0xx ,在根网络命名空间中,该命名空间又连接到网桥 docker0cbr0 .
在我的 Kubernetes 设置中,使用 Project Calico 作为覆盖网络 CNI 插件,calico 在每个 pod 中创建一个以太网适配器,并将其映射到主机上的一个虚拟适配器(名称格式 calic[0-9a-z])。此虚拟适配器连接到 Linux 以太网网桥。 IP 表规则将数据包过滤到此网桥,然后过滤到 CNI 插件提供程序,在我的例子中,Calico 能够将数据包重定向到正确的 pod。
所以你的容器在none docker network as docker network 在您的 Kubernetes 设置中被禁用,因为它通过 CNI 插件使用覆盖网络。 Kubernetes 不处理网络,而是将其委托(delegate)给底层 CNI 插件。

关于kubernetes - 为什么 kubernetes pod 在工作节点上使用 none 网络而不是 bridge 网络?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47434110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com