问题标签 [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.
kubernetes - 如何验证集群网络策略配置/支持
我试图找出验证给定集群的网络策略配置的最佳方法。 根据文档
网络策略是由网络插件实现的,因此您必须使用支持 NetworkPolicy 的网络解决方案——简单地创建资源而没有控制器来实现它是没有效果的。
假设我只能通过 kubectl 访问我的集群,我应该怎么做才能确保部署到集群中的网络策略资源得到遵守?
我知道可用的 CNI 和相关的矩阵功能。
我知道您可以检查与这些 CNI 相关的 kube-system 下部署的 pod,并使用 for ex 验证相关功能。我共享的矩阵,但我想知道是否有更结构化的方法来验证当前安装的 CNI 和相关功能。
关于“实现它的控制器”,有没有办法获取与网络策略相关的插件/控制器列表?
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
似乎使用所有接口。
我似乎找不到任何文件来指导我....
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 数据包,但我不确定这是否足够。
我想需要更多信息才能给出为什么这不起作用的具体原因,但我不太确定此时会是什么,并且会感谢任何方向。
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
kubernetes - 带有 Weave CNI 插件的 AWS EKS K8s 集群不能有自定义指标
为了解决我的 EKS 集群中默认的 AWS VPC CNI 最大 pod 数量节点限制(Max Pods = 实例类型支持的最大网络接口数)*(每个接口的 IPv4 地址) - 即 t3.medium 中的 17 个),我开始使用 Weave CNI 插件来克服这个限制。
这带来了一个警告,如果您有一个应用程序或容器在覆盖网络中运行,并且 Kubernetes 主节点/API 需要与之通信,那么它将无法工作。例如,ApiServicev1beta1.metrics.k8s.io
尝试连接到metrics-server
覆盖网络中运行的 pod,但它不会成功。一个建议的解决方案是运行metrics-server
它hostNetwork: true
工作得很好。
当我们决定使用时,我的问题就开始了custom-metrics
,prometheus-adapter
这样我们就可以从 Kafka 消费者组延迟中获得指标,用于消费者 pod 的水平自动缩放。要让 ApiServicev1beta1.custom.metrics.k8s.io
与prometheus-adapter
pod 对话,我们还必须进行设置hostNetwork: true
,但这次prometheus-adapter
不能再访问在覆盖网络中运行的 Prometheus - 我们无法将所有内容移动到主机网络!
我在这里有点死胡同。我想我可以使用一些“工具”将我需要的指标从覆盖网络 Prometheus 转发到主机网络中的另一个 Prometheus,然后由 prometheus-adapter 使用?
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 集群。
我该如何调试呢?
amazon-web-services - AWS openshift Multus CNI
我正在经历最近向 Openshift 添加的 Multus 网络插件,它帮助 pod 拥有多个网络接口。所以我的问题是,如果我们使用 Multus 插件在 AWS 上安装 openshift,如果我们在 pod 中使用多个网络接口,这会减少一个实例的 pod 数量吗?由于实例上运行的 pod 数量取决于附加的 eni 并且取决于实例类型
kubernetes - Kubelet Master 因 cni 缺失而留在 KubeletNotReady
Kubelet 已使用 Calico 的 pod 网络初始化:
然后我得到 calico.yaml v3.11 并应用它:
在我检查 pod 状态之后:
在描述我有 cni 配置单元化,但我认为印花布应该这样做吗?
实际上我在 /etc/cni/net.d/ 下什么都没有,所以它似乎忘记了什么?
正如所解释的,我正在通过本地仓库运行,journalctl 说:
感觉不仅仅是CNI的问题
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,即使我取消了它。
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".
任何想法如何解决此错误?我已经进行了广泛的搜索......但事情似乎不适用/过时。