首页 > 解决方案 > 为什么 calico 在 Kubernetes 中缺少一些节点对等地址?

问题描述

我正在使用 kubernetes v1.18 并使用 calico 作为我的 CNI 插件,这是 calico pod 状态(删除不相关的 pod):

[root@localhost ~]# kubectl get pods --all-namespaces -o wide
NAME                                            READY   STATUS    RESTARTS   AGE     IP              NODE                    NOMINATED NODE   READINESS GATES
calico-kube-controllers-75d555c48-lt4jr         1/1     Running   0          2d12h   10.11.102.134   localhost.localdomain   <none>           <none>
calico-node-6rj58                               1/1     Running   0          37h     192.168.31.30   k8sslave1               <none>           <none>
calico-node-czhww                               1/1     Running   0          2d12h   192.168.31.29   localhost.localdomain   <none>           <none>
calico-node-vwr5w                               1/1     Running   0          2d12h   192.168.31.31   k8sslave2               <none>           <none>
calicoctl                                       1/1     Running   0          93m     192.168.31.31   k8sslave2               <none>           <none>

我在我的主主机节点中安装了 calicoctl:

curl -O -L  https://github.com/projectcalico/calicoctl/releases/download/v3.15.1/calicoctl
chmod +x calicoctl
mv calicoctl /usr/local

并获取calico节点状态。

[root@localhost ~]# calicoctl node status
Calico process is running.

IPv4 BGP status
+---------------+-------------------+-------+----------+-------------+
| PEER ADDRESS  |     PEER TYPE     | STATE |  SINCE   |    INFO     |
+---------------+-------------------+-------+----------+-------------+
| 192.168.31.31 | node-to-node mesh | up    | 02:56:08 | Established |
| 192.168.31.30 | node-to-node mesh | up    | 02:56:09 | Established |
+---------------+-------------------+-------+----------+-------------+

IPv6 BGP status
No IPv6 peers found.

192.168.31.29问题是:为什么找不到master calico节点?所有 pod 运行良好,我不知道如何找到原因。

标签: kubernetes

解决方案


问题是:为什么找不到master 192.168.31.29 calico节点?

听起来 Calico 无法NODENAME为主人找回你的东西。我看到它localhost.localdomain在您的命令输出中定义。

如果您看到文档,Calico 需要能够确定您NODENAME要添加 calico/node 资源并将其视为“网格”的一部分。

calico/node 必须知道它正在运行的节点的名称。节点名称用于检索为该节点配置的 Node 资源(如果存在),如果不存在则创建代表该节点的新节点资源。它还用于将节点与每个节点的 BGP 配置、felix 配置和端点相关联。

另一个问题是,您是否打算在您的 Kubernetes 主服务器上运行工作负载?如果你不这样做,那么你的设置现在很好。如果您这样做,那么是的,您必须确保 Calico(覆盖)工作,以便您的工作负载具有网络连接。


推荐阅读