【Linux运维疑难杂症】k8s集群创建calico网络失败

问题原因

我在学习k8s集群的时候,选择使用calico为我的pod提供网络功能,但是出现了master节点的calico-node无法READY的情况

bash 复制代码
[root@master01 ~]#kubectl -n kube-system get pod -owide
NAME                                       READY   STATUS    RESTARTS       AGE     IP               NODE       NOMINATED NODE   READINESS GATES
calico-kube-controllers-784cc4bcb7-pvlmq   1/1     Running   0              2m52s   172.18.30.65     worker02   <none>           <none>
calico-node-8xp7d                          0/1     Running   0              2m52s   10.0.0.106       master01   <none>           <none>
calico-node-c258k                          1/1     Running   0              2m52s   10.0.0.107       worker01   <none>           <none>
calico-node-xmt4n                          1/1     Running   0              2m52s   10.0.0.108       worker02   <none>           <none>

经过查看calico-node-8xp7d的日志发现了问题,原来是calico默认选择网卡的时候,选择了我的内网卡(我的master有两块网卡,一块对外通信,一块对内)

bash 复制代码
[root@master01 ~]#kubectl -n kube-system logs -f calico-node-8xp7d -c calico-node --tail=200

#报错原因
2026-01-09 14:12:48.571 [INFO][50] monitor-addresses/autodetection_methods.go 103: Using autodetected IPv4 address on interface eth1: 172.16.1.150/24

解决方法

首先我们要删除calico相关pod,因为我是使用的calico.yaml文件创建的calico网络,所以可以使用kubectl delete 删除

bash 复制代码
[root@master01 ~]#kubectl delete -f calico.yaml 

然后修改calico.yaml文件内容,主要是修改calico-node的环境变量,添加一个名为IP_AUTODETECTION_METHOD的值

bash 复制代码
root@master01 ~]#vim calico.yaml 

 containers:    #注意这里一定要看准,是calico-node
        # Runs calico-node container on each Kubernetes node. This
        # container programs network policy and routes on each
        # host.
        - name: calico-node
          image: docker.io/calico/node:v3.24.1
          imagePullPolicy: IfNotPresent
          envFrom:
          - configMapRef:
              # Allow KUBERNETES_SERVICE_HOST and KUBERNETES_SERVICE_PORT to be overridden for eBPF mode.
              name: kubernetes-services-endpoint
              optional: true
          env:
            # Use Kubernetes API as the backing datastore.
            - name: DATASTORE_TYPE
              value: "kubernetes"
            # Wait for the datastore.
            - name: WAIT_FOR_DATASTORE
              value: "true"
            - name: IP_AUTODETECTION_METHOD    #添加一个IP_AUTODETECTION_METHOD,随便加在一个value后就行
              value: "cidr=10.0.0.0/24"

然后再次创建calico网络

bash 复制代码
[root@master01 ~]#kubectl apply -f calico.yaml 

#查看是否全部READY
[root@master01 ~]#kubectl get pod -n kube-system
NAME                                       READY   STATUS    RESTARTS        AGE
calico-kube-controllers-784cc4bcb7-vwrl2   1/1     Running   0               102m
calico-node-6fp2l                          1/1     Running   0               102m
calico-node-7thdb                          1/1     Running   0               102m
calico-node-ngfch                          1/1     Running   0               102m
相关推荐
农民工老王6 小时前
K8s 1.31 私有化部署实战:从 Calico 崩溃到 NFS 挂载失败的排坑全记录
云原生·kubernetes
威迪斯特6 小时前
CentOS图形化操作界面:理论解析与实践指南
linux·运维·centos·组件·图形化·桌面·xserver
广州中轴线6 小时前
OpenStack on Kubernetes 生产部署实战(十四)
kubernetes·智能路由器·openstack
一方热衷.6 小时前
在线安装对应版本NVIDIA驱动
linux·运维·服务器
独自归家的兔6 小时前
ubuntu系统安装dbswitch教程 - 备份本地数据到远程服务器
linux·运维·ubuntu
ONE_SIX_MIX6 小时前
ubuntu 24.04 用rdp连接,桌面黑屏问题,解决
linux·运维·ubuntu
龙飞056 小时前
Systemd -systemctl - journalctl 速查表:服务管理 + 日志排障
linux·运维·前端·chrome·systemctl·journalctl
*小海豚*6 小时前
在linux服务器上DNS正常,但是java应用调用第三方解析域名报错
java·linux·服务器
June`6 小时前
muduo项目排查错误+测试
linux·c++·github·muduo网络库
春日见6 小时前
如何创建一个PR
运维·开发语言·windows·git·docker·容器