K8S部署calico网络插件有一个calico-node-xxx始终0/1

在部署Kubernetes的calico网络插件时遇到一个calico-node pod状态为0/1的问题。通过查看日志发现错误与网卡配置相关。解决方法是在calico.yaml中设置IP_AUTODETECTION_METHOD为实际网卡接口名,如em1,然后重新应用配置,最终使calico-node pod恢复正常运行。

1、情况是这样的,我在master部署calico网络插件的时候,运行完kubectl apply -f calico.yml后,查看pod运行情况:

(base) [root@master opt]# kubectl get pod -A
NAMESPACE           NAME                                       READY   STATUS    RESTARTS   AGE
default             nfs-client-provisioner-566f7f554d-6hww6    1/1     Running   0          21h
kube-system         calico-kube-controllers-7567d8d9dd-w8x4z   1/1     Running   3          4h1m
kube-system         calico-node-6h5d7                          0/1     Running   0          23s
kube-system         calico-node-x8w6v                          1/1     Running   0          7m50s
kube-system         coredns-546565776c-f2znw                   1/1     Running   0          21h
kube-system         coredns-546565776c-q2kwv                   1/1     Running   0          21h
kube-system         etcd-master                                1/1     Running   0          21h
kube-system         kube-apiserver-master                      1/1     Running   0       
Kubernetes 中配置网络插件是集群部署中的关键步骤之一。Kubernetes 本身不提供网络实现,而是依赖第三方网络插件来满足 CNI(Container Network Interface)规范[^1]。常见的网络插件包括 Calico、Flannel、Weave Net 等。以下是一般性的配置流程以及以 Calico 和 Flannel 为例的具体配置步骤。 ### 配置网络插件的一般步骤 1. **选择网络插件**:根据需求选择合适的网络插件,例如是否需要网络策略、性能要求、是否支持 IPv6 等。 2. **准备节点环境**:确保所有节点已安装 `kubelet`、`kubeadm` 和 `kubectl`,并关闭 Swap。 3. **初始化控制平面**:使用 `kubeadm init` 初始化控制平面节点时,指定 `--pod-network-cidr` 参数,确保与后续网络插件的 CIDR 一致。 4. **部署网络插件**:通过 `kubectl apply -f <network-plugin-manifest>` 应用网络插件的 YAML 配置文件。 5. **验证部署**:使用 `kubectl get pods -n kube-system` 或 `kubectl get nodes` 检查网络插件是否正常运行。 ### 配置 Calico 网络插件 Calico一个支持网络策略的 CNI 插件,适用于需要细粒度网络控制的场景。它由以下组件构成: - `calico/node`:每个节点上运行的 Felix Agent 和 BGP 客户端。 - `cni-plugin`:用于整合 Calico 和 kubelet。 - `calico/kube-controller`:负责处理 Kubernetes网络策略[^1]。 **配置步骤如下**: 1. **安装 Calico 清单文件**: 使用官方提供的清单文件部署 Calico: ```bash kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml ``` 2. **自定义 CIDR(可选)**: 如果需要修改 Pod CIDR,编辑 `calico.yaml` 文件中的 `CALICO_IPV4POOL_CIDR` 字段,确保与 `kubeadm init` 时指定的 `--pod-network-cidr` 一致。 3. **验证部署**: ```bash kubectl get pods -n kube-system ``` 确保 `calico-node` 和 `calico-kube-controllers` 的 Pod 状态为 `Running`。 ### 配置 Flannel 网络插件 Flannel 是一个简单的 Overlay 网络插件,适合对网络复杂度要求不高的场景。它通过 VXLAN、UDP 或 Host-GW 等方式实现跨节点通信[^2]。 **配置步骤如下**: 1. **安装 Flannel 清单文件**: 使用官方提供的清单部署 Flannel: ```bash kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml ``` 2. **修改 CIDR(可选)**: 如果 `kubeadm init` 时指定了 `--pod-network-cidr`,请确保 `kube-flannel.yml` 中的 `Network` 字段与之匹配。 3. **验证部署**: ```bash kubectl get pods -n kube-system ``` 确保 `kube-flannel-ds-xxx` 的 Pod 状态为 `Running`。 --- ### 配置注意事项 - **CNI 配置冲突**:确保只部署一个 CNI 插件,多个 CNI 插件可能导致网络异常。 - **网络性能**:Flannel 的 Overlay 模式可能带来性能损耗,而 Calico 的 BGP 模式更适合大规模生产环境。 - **网络策略支持**:如果需要网络策略功能,建议使用 Calico 或 Cilium,Flannel 本身不支持网络策略。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值