问题标签 [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 - 网络策略是否应用于服务或端点?
如果我有 Kubernetes 服务(具有端口 12345 的集群 IP),它后面有三个 pod 作为命名空间中的端点(端口 16789),那么网络策略中应该将哪些内容列入白名单,只是服务端口或端点端口或 DNS 端口?网络策略只能将 pod/命名空间标签作为选择器,而不是服务标签。从文档中不清楚。尝试从不同的命名空间访问服务。该环境使用 Calico 作为 CNI。
docker - k8s中使用cni代替静态路由表有什么好处
通过在每个节点上添加具有适当规则的静态路由表,容器网络也可以正常工作。例如,给定三个具有三个不同 docker 网桥子网的节点:
在每个节点上添加以下路由:
kube-proxy 在 iptables 模式下运行,cluster-service-ip 被翻译成 pod ip,最后通过路由表路由到相关节点。
那么在路由表上使用 cni 插件有什么好处呢?路由表方法是否存在性能问题?
kubernetes - Kubernetes Service 不转发到 80 和 443 以外的端口
集群设置:
- 操作系统:Ubuntu 18.04,带有 Kubernetes 推荐的安装设置
- 使用 Kubespray 引导集群
- CNI 是印花布
速览(当 redis 服务 ip 为 时10.233.90.37
):
- 主机:
psql 10.233.90.37:6379
=> 成功 主机:
psql 10.233.90.37:80
=> 成功Pod(在任何命名空间中)
psql 10.233.90.37:6379
=> 超时- Pod(在任何命名空间中)
psql redis:6379
=> 超时 - Pod(在任何命名空间中)
psql redis.namespace.svc.cluster.local
=> 超时 - Pod(在任何命名空间中)
psql redis:80
=> 成功 - Pod(在任何命名空间中)
psql redis.namespace.svc.cluster.local:80
=> 成功
Kubernetes 服务(NodePort、LoadBalancer、ClusterIP)不会为 pod 转发 80 和 443 以外的端口。Pod 端口可以不同,但如果 Service 端口不是 80 或 443,则对 Service 的请求会超时。
从主机到 Kubernetes 服务的请求在 80 和 443 以外的端口上工作。但是从 pod 到这些其他端口的请求失败。
从 pod 到端口 80 和 443 上的服务的请求确实有效。
示例服务:
这种疯狂的 Kubernetes 服务端口行为是怎么回事!?
调试后发现可能与 ufw 和 iptables config 有关。
ufw 设置(非常宽松):
Kubespray 部署失败,并禁用了 ufw。Kubespray 部署成功并启用了 ufw。
部署后,禁用 ufw 将允许 pod 连接到 80、443 以外的端口。但是,禁用 ufw 时集群会崩溃。
知道发生了什么吗?我是否缺少 ufw 配置中的端口....?kubespray 安装成功需要 ufw 似乎很奇怪。
kubernetes - 不正确的 cni 安装阻止 coredns pod 启动
刚刚使用 kubeadm v1.15.0 安装了一个主集群。但是,coredns 似乎陷入了挂起模式:
以下是 pod 显示的内容:
我删除了主节点上的污点,但无济于事。我不应该能够创建一个没有任何问题的单节点主节点吗?我知道如果不去除污点,就不可能在主节点上调度 pod,但这很奇怪。
我尝试添加最新的印花布 cni,也无济于事。
我得到以下正在运行的 journalctl(systemctl 没有显示错误):
确实,当我查看时,/etc/cni/net.d
那里什么都没有->是的,我跑了kubectl apply -f https://docs.projectcalico.org/v3.8/manifests/calico.yaml
……这是我应用此命令时的输出:
我在 calico-node 的 pod 上运行了以下命令,该 pod 处于以下状态:
我试过法兰绒作为cni,但情况更糟。由于污染,kube-proxy 甚至无法启动!
编辑附录
kube-controller-manager
和不应该kube-scheduler
有定义的端点吗?
最后,为了理智,我尝试了 v1.13.1,瞧!成功:
编辑 2
尝试sudo kubeadm upgrade plan
并在 api-server 的运行状况和错误证书上出现错误。
在 api-server 上运行这个:
kubectl logs kube-apiserver-thalia0.x.x.edu --namespace=kube-system1
并得到了大量此类错误,这些错误TLS handshake error from 10.x.x.157:52384: remote error: tls: bad certificate
来自早已从集群中删除的节点,并且在kubeadm resets
主节点上的几个节点之后,以及 kubelet、kubeadm 等的卸载/重新安装。
为什么会出现这些旧节点?证书不会在 a 上重新创建kubeadm init
吗?
networking - 如何切换 K8s 集群中的默认 CNI 提供程序
在整个 kubernetes 文档中,我注意到如何CNI
使用--cni-conf-dir
和设置提供程序--cni-bin-dir
。提到“如果CNI
目录中有多个配置文件,则使用文件名字典顺序的第一个”。
如果我想在默认CNI
提供者之间切换,最好的方法是什么。我是否需要重命名配置文件以遵循字典顺序?例如,如果我想使用桥接器或macvlan
cni
提供程序而不是法兰绒,我应该怎么做?
kubernetes - 重启节点后,由于 weave IP 不足,Pod 卡在 containerCreating 状态
我在 1.11 上部署了 3 个节点 Kubernetes 集群,使用 kubeadm 和 weave(CNI) 运行版本 2.5.1。我正在提供 128 个 IP 的 IP 范围的编织 CIDR。两次重新启动节点后,一些 pod 卡在containerCreating
状态。
运行后kubectl describe pod <pod_name>
,您将看到以下错误:
如果我检查有多少容器正在运行以及分配了多少 IP 地址,我可以看到 24 个容器:
在该节点编织的总 IP 数为 42。
您可以看到所有 42 个 IP 都处于活动状态,因此没有更多 IP 可用于分配给新容器。但是在 42 个中只有 26 个实际分配给容器,我不确定剩余的 IP 在哪里。它发生在所有三个节点上。
这是编织状态的输出供您参考:
如果您需要更多信息,我很乐意提供。有什么线索吗?
kubernetes - 使用cni时如何在openstack中配置允许的地址对
我正在通过kubernetes 艰难地学习更多关于如何使用它的信息。我正在openstack vm上实现它。每个单独的 kubernetes worker 本地的 pod 网络需要能够通过静态路由相互通信。为了使用除了在 openstack 中配置的主 IP 地址之外的 IP 地址设置静态路由,我必须allowed_address_pairs
在 openstack 中使用。如果我尝试在 eth0 上进行路由,则此方法有效,但如果我尝试在 CNI 接口 (cnio0) 上进行路由,则会失败。
我将静态路由配置为配置为工作节点主接口别名的辅助 IP 地址之间的测试。我在proc中将ip forwarding设置为1。在 openstack 中,我配置了allowed_address_pairs
使用辅助 IP 地址及其关联的 MAC 地址。
此路由配置有效。
然后我启用了 cni 并启动了一些 pod,它们触发 kubelet 在每个主机上创建一个 cnio0 接口并将 POD CIDR IP 应用于这些接口。我也添加了这些 IP 和它们各自的 MAC 地址allowed_address_pairs
,但这些接口不路由。我无法从每个单独的盒子中访问 IP。
我希望能够从节点 1 的 cni0 IP 地址成功 ping 到节点 2 的 cni0 IP 地址。
从节点 1 的 cnio0 接口 ping 到节点 2 的 cnio0 接口时,我观察了 tcpdump 中主机之间的通信。在节点 1 上,我可以看到流量正在流出。在节点 2 上,我可以看到正在接收和发回的流量,但我从未在节点 1 上看到返回数据包。
allowed_address_pairs
这与我在没有配置in openstack 的情况下测试它们之间的静态路由时在别名接口上看到的行为完全相同。
如何让 cnio0 接口使用,allowed_address_pairs
以便它们可以在彼此之间路由?
kubernetes - Minikube 中的默认 CNI
我试图了解 Kubernetes 网络,我现在想知道在安装 Minikube 时是否默认使用 CNI,什么时候是?
换句话说,我可以在没有像 Flannel 或 Calico 这样的 CNI 提供程序的情况下运行 Minikube 吗?
ansible - /etc/cni/net.d 中缺少 80-openshift-network.conf
我在 Openshift 中部署集群时遇到问题。有什么理由吗?
版本
命令:ansible-playbook -i /etc/ansible/hosts playbooks/deploy_cluster.yml
我试过了:
- 80-openshift-network.conf(将其从工作的 openshift env 复制到当前的 env 我有问题)
- 在 /etc/sysconfig/network-scripts/ifcfg-ens192 中添加 NM_CONTROLLED=yes, PEERDNS=yes
- 从头开始重新安装
我也从https://github.com/openshift/openshift-ansible/issues/10969尝试了这个
而且还是失败了。
如果这有帮助,您可以查看我在 github 上的帖子https://github.com/openshift/openshift-ansible/issues/11825
我的库存文件(/etc/ansible/hosts):
预期:使用此命令成功部署集群:ansible-playbook -i /etc/ansible/hosts playbooks/deploy_cluster.yml
实际结果:
谢谢!