【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
相关推荐
小小管写大大码5 小时前
如何让vscode变得更智能?vscode接入claude实现自动编程
运维·ide·vscode·自动化·编辑器·ai编程·腾讯云ai代码助手
嵩山小老虎5 小时前
Windows 10/11 安装 WSL2 并配置 VSCode 开发环境(C 语言 / Linux API 适用)
linux·windows·vscode
Fleshy数模5 小时前
CentOS7 安装配置 MySQL5.7 完整教程(本地虚拟机学习版)
linux·mysql·centos
zhang133830890755 小时前
CG-09H 超声波风速风向传感器 加热型 ABS材质 重量轻 没有机械部件
大数据·运维·网络·人工智能·自动化
a41324475 小时前
ubuntu 25 安装vllm
linux·服务器·ubuntu·vllm
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.6 小时前
Keepalived VIP迁移邮件告警配置指南
运维·服务器·笔记
物联网软硬件开发-轨物科技6 小时前
【轨物洞见】告别“被动维修”!预测性运维如何重塑老旧电站的资产价值?
运维·人工智能
程序员允诺6 小时前
[DevOps实战] 彻底解决依赖地狱:如何编译全静态、可移植的 Xorriso 工具
运维·devops
酣大智6 小时前
接口模式参数
运维·网络·网络协议·tcp/ip
一只自律的鸡7 小时前
【Linux驱动】bug处理 ens33找不到IP
linux·运维·bug