【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
相关推荐
wj3055853788 小时前
课程 9:模型测试记录与 Prompt 策略
linux·人工智能·python·comfyui
abigriver8 小时前
打造 Linux 离线大模型级语音输入法:Whisper.cpp + 3090 显卡加速与 Rime 中英混输终极调优指南
linux·运维·whisper
wangqiaowq8 小时前
windows下nginx的安装
linux·服务器·前端
YYRAN_ZZU9 小时前
Petalinux新建自动脚本启动
linux
charlie1145141919 小时前
嵌入式Linux驱动开发pinctrl篇(1)——从寄存器到子系统:驱动演进之路
linux·运维·驱动开发
Agent手记9 小时前
异常考勤智能预警与处理与流程优化方案 | 基于企业级Agent的超自动化实战教程
运维·人工智能·ai·自动化
于小猿Sup10 小时前
VMware在Ubuntu22.04驱动Livox Mid360s
linux·c++·嵌入式硬件·自动驾驶
cen__y10 小时前
Linux12(Git01)
linux·运维·服务器·c语言·开发语言·git
不仙52011 小时前
VMware Workstation 26.0.0 在 Ubuntu 24.04 (内核 6.17.0) 上的安装与内核模块编译问题
linux·ubuntu·elasticsearch
AI视觉网奇12 小时前
linux 检索库 判断库是否支持
java·linux·服务器