问题标签 [cni]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1009 浏览

kubernetes - 如何验证集群网络策略配置/支持

我试图找出验证给定集群的网络策略配置的最佳方法。 根据文档

网络策略是由网络插件实现的,因此您必须使用支持 NetworkPolicy 的网络解决方案——简单地创建资源而没有控制器来实现它是没有效果的。

假设我只能通过 kubectl 访问我的集群,我应该怎么做才能确保部署到集群中的网络策略资源得到遵守?

我知道可用的 CNI 和相关的矩阵功能
我知道您可以检查与这些 CNI 相关的 kube-system 下部署的 pod,并使用 for ex 验证相关功能。我共享的矩阵,但我想知道是否有更结构化的方法来验证当前安装的 CNI 和相关功能。

关于“实现它的控制器”,有没有办法获取与网络策略相关的插件/控制器列表?

0 投票
1 回答
170 浏览

kubernetes - 将 Kubelet、Kube-proxy 等限制在特定的网络接口上

我有一个包含 3 个系统(A、B、C)的 CentOS 实验室环境。每个系统有 4 个网络链接:

  • eth0 是 1g 和我的公共管理接口 (VLAN10)
  • eth1 是 10g 我的 iSCSI 接口(VLAN172)
  • eth2 是 10g 可用于 kubernetes (VLAN192: 192.168.1.x)
  • eth3 是 10g 可用于 kubernetes (VLAN192: 192.168.2.x)

eth2 和 eth3 没有绑定,也没有任何类型的配置,它们彼此都知道。它们都在同一个 vlan 中,您可以从任何给定系统从 eth2 ping 到 eth3。

我想将 Kubernetes 设置为使用 eth2 和 eth3 进行所有工作。特别是,我想让流量远离较慢的 1g 网络和我用于 iscsi 的接口。在 eth2 和 eth3 上运行的所有 kubernetes 位(控制平面、数据平面、应用程序等)。

我可能想在 eth0 上打开一个特定的服务以供消费(普罗米修斯指标)。

具体配置:

系统A:

  • eth0 是我的公共管理接口(VLAN10:10.10.10.1)
  • eth1 是我的 iSCSI 接口(VLAN172:172.16.0.1)
  • eth2 可用于 kubernetes (VLAN192: 192.168.1.1)
  • eth3 可用于 kubernetes (VLAN192: 192.168.2.1)

系统 B:

  • eth0 是我的公共管理接口(VLAN10:10.10.10.2)
  • eth1 是我的 iSCSI 接口(VLAN172:172.16.0.2)
  • eth2 可用于 kubernetes (VLAN192: 192.168.1.2)
  • eth3 可用于 kubernetes (VLAN192: 192.168.2.2)

系统 C:

  • eth0 是我的公共管理接口(VLAN10:10.10.10.3)
  • eth1 是我的 iSCSI 接口(VLAN172:172.16.0.3)
  • eth2 可用于 kubernetes (VLAN192: 192.168.1.3)
  • eth3 可用于 kubernetes (VLAN192: 192.168.2.3)

默认设置kubeadm init似乎使用所有接口。

我似乎找不到任何文件来指导我....

0 投票
1 回答
234 浏览

kubernetes - Calico IP-in-IP 连接问题与 Kubernetes 上的嵌套容器

我正在使用 Kubernetes 作为基础设施提供者来实现一个集群 api 控制器——也就是说,我正在尝试将 Kubernetes 节点作为 Kubernetes Pod 运行并在集群中形成一个集群。

除了内部集群的 Pod 之间的网络连接(在基础设施集群的 Pod 上运行)之外,我还有这个工作,但我不知道问题是什么。

我在 GKE 上运行,使用他们的默认 CNI 实现。然后,我尝试将 Calico 用于内部集群的覆盖实现,使用 IP-in-IP 封装,因此基础设施集群的节点不需要知道如何路由内部集群 Pod IP。

我正在按如下方式创建基础设施集群(Calico 的 IP-in-IP封装所需的ipip内核模块需要UBUNTU 映像。

然后我将一些 nginx Pod 部署到内部集群。如果它们落在同一个内部集群节点上,它们就可以相互连接。如果它们降落在单独的内部集群节点上,它们就不能,所以我认为这意味着 IP-in-IP 隧道无法正常工作,但我不知道为什么。即使内部集群节点(Pod)位于相同的基础设施(外部集群)节点上,这也会失败。两个集群的 Pod 和 Service CIDR 范围不重叠。

我意识到这不是 Calico 受支持的用例,但我看不出为什么它不可能并且想让它工作。外部集群节点是否需要支持转发 IP-in-IP 数据包?它们被配置为转发 IPv4 数据包,但我不确定这是否足够。

我想需要更多信息才能给出为什么这不起作用的具体原因,但我不太确定此时会是什么,并且会感谢任何方向。

0 投票
1 回答
1035 浏览

kubernetes - 为 Pod 设置带宽限制突发

据我所知,k8s 有两种限制带宽的方法。

首先,配置CNI

其次,使用以下命令注释 pod:

我通读了文档,但没有找到任何方法为 pod 配置突发。

但是默认突发太大,无法使限制有用:

qdisc tbf 1: dev calia2333445823 root refcnt 2 rate 8Mbit burst 256Mb lat 25.0ms

并且似乎当 CNI 配置了带宽限制时,Pod 注解不会覆盖 CNI 的配置并生效。

那么我怎样才能为一个 pod 设置一个爆发呢?


iperf 输出来说明突发:

服务器:

客户:


环境:

  • Kubernetes 1.15.7
  • 印花布 v3.11.1
  • 带宽插件 v0.8.0
  • tc iproute 4.11.0-14.el7
0 投票
1 回答
324 浏览

kubernetes - 带有 Weave CNI 插件的 AWS EKS K8s 集群不能有自定义指标

为了解决我的 EKS 集群中默认的 AWS VPC CNI 最大 pod 数量节点限制(Max Pods = 实例类型支持的最大网络接口数)*(每个接口的 IPv4 地址) - 即 t3.medium 中的 17 个),我开始使用 Wea​​ve CNI 插件来克服这个限制。

这带来了一个警告,如果您有一个应用程序或容器在覆盖网络中运行,并且 Kubernetes 主节点/API 需要与之通信,那么它将无法工作。例如,ApiServicev1beta1.metrics.k8s.io尝试连接到metrics-server覆盖网络中运行的 pod,但它不会成功。一个建议的解决方案是运行metrics-serverhostNetwork: true工作得很好。

当我们决定使用时,我的问题就开始了custom-metricsprometheus-adapter这样我们就可以从 Kafka 消费者组延迟中获得指标,用于消费者 pod 的水平自动缩放。要让 ApiServicev1beta1.custom.metrics.k8s.ioprometheus-adapterpod 对话,我们还必须进行设置hostNetwork: true,但这次prometheus-adapter不能再访问在覆盖网络中运行的 Prometheus - 我们无法将所有内容移动到主机网络!

我在这里有点死胡同。我想我可以使用一些“工具”将我需要的指标从覆盖网络 Prometheus 转发到主机网络中的另一个 Prometheus,然后由 prometheus-adapter 使用?

0 投票
0 回答
60 浏览

kubernetes - EKS 内部服务连接不可靠

我刚刚设置了一个新的 EKS 集群(可用的最新版本,使用三个默认 AMI)。

我在其中部署了一个 Redis 实例作为 Kubernetes 服务并将其公开。我可以通过内部 DNS 访问 Redis 数据库,例如:(mydatabase.redis它部署在redis命名空间中)。在另一个 pod 中,我可以连接到我的 Redis 数据库,但有时连接需要超过 10 秒。

这似乎不是 DNS 解析问题,因为主机会mydatabase.redis立即使用服务 IP 地址进行响应。但是,当我尝试连接它时,例如:nc mydatabase.redis 6379 -v 它有时会立即连接,有时需要超过 10 秒。

我的所有服务都受到影响,我不知道为什么。我没有更改集群中的任何设置,这是一个基本的 EKS 集群。

我该如何调试呢?

0 投票
1 回答
121 浏览

amazon-web-services - AWS openshift Multus CNI

我正在经历最近向 Openshift 添加的 Multus 网络插件,它帮助 pod 拥有多个网络接口。所以我的问题是,如果我们使用 Multus 插件在 AWS 上安装 openshift,如果我们在 pod 中使用多个网络接口,这会减少一个实例的 pod 数量吗?由于实例上运行的 pod 数量取决于附加的 eni 并且取决于实例类型

0 投票
2 回答
1853 浏览

kubernetes - Kubelet Master 因 cni 缺失而留在 KubeletNotReady

Kubelet 已使用 Calico 的 pod 网络初始化:

然后我得到 calico.yaml v3.11 并应用它:

在我检查 pod 状态之后:

在描述我有 cni 配置单元化,但我认为印花布应该这样做吗?

实际上我在 /etc/cni/net.d/ 下什么都没有,所以它似乎忘记了什么?

正如所解释的,我正在通过本地仓库运行,journalctl 说:

感觉不仅仅是CNI的问题

0 投票
2 回答
3648 浏览

kubernetes - 如何在 Kubernetes 上摆脱此错误“network: stat /var/lib/calico/nodename: no such file or directory”

我使用以下命令卸载了 calico:'kubectl delete -f calico.yaml'

并使用以下命令安装 weave:'export kubever=$(kubectl version | base64 | tr -d '\n')' 'kubectl apply -f " https://cloud.weave.works/k8s/net?k8s-version= $库贝弗"'

当我部署我的 pod 时,它们保持在“ContainerCreating”状态。当我检查 pod 日志时,我看到以下错误:

'networkPlugin cni 无法设置 pod "saccofrontend-d7444fd6d-998gf_default" 网络:stat /var/lib/calico/nodename:没有这样的文件或目录:检查 calico/node 容器是否正在运行并已挂载 /var/lib/印花布/'

我手动删除了这个文件。重新安装 docker 和 kubeadm 也没有帮助。仍然出现相同的错误。

请告知什么可能促使 kubelet 仍然使用 calico 作为 cni,即使我取消了它。

0 投票
0 回答
94 浏览

kubernetes - OpenShift v3.11 与 Maistra (Istio) 安装

我正在尝试将 Maistra 安装在 Origin (OKD) v3.11 集群之上。遵循本指南:

https://medium.com/@jakub.jozwicki/ocp-part-3-installing-istio-1d9f37665d3b

我尝试通过 Maistra origin-ansible 分支的 v0.7 和 v0.12 进行安装,但在我的 istio-operator pod 上继续收到错误:"Failed create pod sandbox.." / "NetworkPlugin cni failed to setup pod, network: OpenShift SDN network process is not (yet?) available".任何想法如何解决此错误?我已经进行了广泛的搜索......但事情似乎不适用/过时。