Calico
时间: 2025-07-09 18:13:21 浏览: 8
### Calico 安装、配置与故障排除
Calico 是一个广泛使用的 Kubernetes 网络插件,用于提供 Pod 间的网络互通和网络策略管理。以下是关于 Calico 的安装、配置以及常见故障排除方法。
#### Calico 安装
Calico 提供了多种安装方式,包括通过 Helm Chart、Kubernetes 清单文件(manifest)或 Operator 方式进行部署。
1. **使用官方清单文件安装**
```bash
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
```
2. **使用 Helm Chart 安装**
添加 Calico Helm 仓库并更新:
```bash
helm repo add projectcalico https://projectcalico.docs.tigera.io/charts
helm repo update
```
然后安装 Calico:
```bash
helm install calico projectcalico/tigera-operator
```
3. **自定义镜像安装**
如果需要从本地加载 Docker 镜像以进行离线安装,可以使用 `docker save` 和 `docker load` 命令:
```bash
docker save -o calico-node-v3.25.0.tar calico/node:v3.25.0
docker save -o calico-pod2daemon-flexvol-v3.25.0.tar calico/pod2daemon-flexvol:v3.25.0
docker save -o calico-cni-v3.25.0.tar calico/cni:v3.25.0
docker save -o calico-kube-controllers-v3.25.0.tar calico/kube-controllers:v3.25.0
docker save -o calico-typha-v3.25.0.tar calico/typha:v3.25.0
```
在目标节点上加载镜像:
```bash
docker load -i calico-node-v3.25.0.tar
docker load -i calico-pod2daemon-flexvol-v3.25.0.tar
docker load -i calico-cni-v3.25.0.tar
docker load -i calico-kube-controllers-v3.25.0.tar
docker load -i calico-typha-v3.25.0.tar
```
4. **Operator 安装方式**
创建 `Installation` 资源对象以触发 Calico Operator 自动部署组件:
```yaml
apiVersion: operator.tigera.io/v1
kind: Installation
metadata:
name: default
spec:
registry: swr.cn-east-2.myhuaweicloud.com
imagePath: kuboard-dependency
calicoNetwork:
ipPools:
- blockSize: 26
cidr: 10.100.0.1/16
encapsulation: VXLANCrossSubnet
natOutgoing: Enabled
nodeSelector: all()
nodeAddressAutodetectionV4:
interface: ens.*
```
应用该配置后,Tigera Operator 将自动部署所需的 Calico 组件[^3]。
#### Calico 配置
Calico 的主要配置项包括 IP 池(IP Pool)、NAT 设置、封装模式(如 VXLAN 或 IPIP)、网络策略等。
- **IP Pools**:用于定义分配给 Pod 的 CIDR 地址段。
- **Encapsulation**:决定是否启用 VXLAN 或 IPIP 封装,适用于跨子网通信场景。
- **NAT Outgoing**:控制是否为出站流量执行 SNAT。
- **Node Address Detection**:指定用于识别节点 IP 的网络接口(如 `ens.*`)。
#### 故障排除
1. **Pod 报错:`calico/node is not ready: BIRD is not ready`**
此错误通常表示 Calico 的 BGP 协议守护进程 BIRD 未能正常启动。检查以下内容:
- 确认节点之间的 BGP 端口(TCP 179)是否开放。
- 查看 `calico-node` Pod 的日志:
```bash
kubectl logs -n kube-system calico-node-jbcl5
```
- 使用 `kubectl describe pod` 查看事件信息:
```bash
kubectl describe pod -n kube-system calico-node-jbcl5
```
- 检查是否由于 IP 地址池耗尽导致无法分配 IP。
2. **节点无法加入集群**
- 确保所有节点的主机名、IP 地址在网络中正确解析。
- 检查 `/etc/kubernetes/cni/net.d/` 目录下的 CNI 插件配置是否一致。
- 确保 `calico-node` DaemonSet 正确部署并运行在所有节点上。
3. **网络不通**
- 检查 Pod IP 是否被正确分配。
- 使用 `tcpdump` 捕获流量,确认数据包是否到达目标节点。
- 检查 iptables 规则是否被其他程序修改。
- 检查是否启用了正确的封装模式(如 VXLAN)以支持跨子网通信。
4. **镜像拉取失败**
- 确保私有镜像仓库地址配置正确。
- 检查 `imagePath` 和 `registry` 字段是否设置正确。
- 使用 `docker pull` 手动测试镜像是否可拉取。
---
阅读全文
相关推荐











