似乎有什么东西正在捕获到pod的TCP流量



我正在尝试用Calico(IPIP)和Kubeadm部署Kubernetes。部署完成后,我将使用这些清单部署Calico

kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/rbac-kdd.yaml
kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml

在应用它之前,我正在编辑CALICO_IPV4POOL_CIDR并将其设置为10.250.0.0/17,同时使用命令kubeadm init --pod-cidr 10.250.0.0/17

几秒钟后,CoreDNS pod(例如获取addr 10.250.2.2)开始重新启动,并出现错误10.250.2.2:8080连接被拒绝。

现在有点挖掘:

从集群中的任何节点ping 10.250.2.2工作,并且它到达pod(pod net命名空间中的tcpdump显示了它)。

来自不同吊舱(在不同节点上)的curl 10.250.2.2:8080工作良好

从任何节点到curl 10.250.2.2:8080失败,连接被拒绝

因为它是coredns pod,它在53上同时侦听udp和tcp,所以我尝试了从节点的netcat

nc 10.250.2.2 53-连接被拒绝nc -u 10.250.2.2 55-作品

现在,我已经为端口8080对源节点上的每个接口进行了tcpdump,并且curl到CoreDNS pod似乎都没有离开节点。。。sooo iptables?

我也试过编织、运河和法兰绒,似乎都有同样的问题。

我现在已经没有什么想法了。。。有什么建议吗?

Calico实现似乎有问题,CoreDNS Pods对CNI网络Pods的成功运行很敏感。为了实现正确的CNI网络插件,您必须在kubeadm init命令中包含--pod-network-cidr标志,然后将相同的值应用于calico.yml中的CALICO_IPV4POOL_CIDR参数。

此外,为了成功安装Pod网络,您必须应用一些RBAC规则,以便获得符合一般集群安全限制的足够权限,如Kubernetes官方文档:中所述

要使Calico正常工作,您需要通过--pod network cidr=1192.168.0.0/16到kubeadm init或更新calico.yml文件以匹配您的pod网络。注意Calico的工作仅amd64。

kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/rbac-kdd.yaml
kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml

在你的情况下,我会切换到最新的Calico版本,至少从v3.3开始,如示例中所示。

如果你注意到你正确运行了Pod网络插件安装,请抓住机会,用你当前的环境设置和Kubernetes组件版本更新问题,并附上健康状态。

相关内容

  • 没有找到相关文章

最新更新