Calico 核心组件
Calico 核心组件全景解析:生产环境网络架构指南
一、Calico 架构总览
组件协作流程图
(数据面:Felix+CNI 负责流量转发 / 控制面:Typha+BGP Speaker 管理路由同步)
二、核心组件详解(v3.24版本)
组件名称 | 部署模式 | 核心职责 | 生产环境关键配置 |
---|---|---|---|
Felix | DaemonSet | 节点网络策略实施者 | 资源请求:CPU 200m, 内存 512Mi |
BGP Speaker | DaemonSet | 节点间路由广播(替代calico/node) | 集群AS号配置、节点互联模式选择 |
Calico CNI | 主机二进制 | Pod网络配置与IPAM管理 | 定制IP池、禁用默认SNAT |
kube-controllers | Deployment | 策略与IP池同步中枢 | 高可用副本数≥3 |
Typha | Deployment | 大规模集群数据同步代理 | 每200节点1副本,最大内存限制2GiB |
calicoctl | 命令行工具 | 网络策略调试与管理 | 集成kubectl插件模式 |
三、生产环境关键组件配置
1. Typha横向扩展配置
# typha-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: calico-typha
spec:
replicas: 5 # 按节点规模计算:1副本/200节点
strategy:
rollingUpdate:
maxUnavailable: 1
template:
spec:
containers:
- name: calico-typha
resources:
limits:
memory: 2Gi
requests:
cpu: 500m
memory: 1Gi
2. BGP对等互联配置
# bgp-configuration.yaml
apiVersion: projectcalico.org/v3
kind: BGPConfiguration
metadata:
name: default
spec:
logSeverityScreen: Info
nodeToNodeMeshEnabled: true # 全节点互联模式
asNumber: 64512
serviceClusterIPs: # 宣告Service ClusterIP
- cidr: 10.96.0.0/16
3. 高性能eBPF模式启用
# 切换数据面为eBPF模式
calicoctl patch kubecontrollersconfiguration default --patch='{"spec": {"controllers": {"node": {"hostEndpoint": {"autoCreate": "Disabled"}}}}}'
kubectl set env daemonset/calico-node -n calico-system FELIX_BPFENABLED=true
四、生产环境网络策略实战
1. 微服务零信任策略
apiVersion: projectcalico.org/v3
kind: NetworkPolicy
metadata:
name: payment-service-policy
spec:
tier: default
selector: app == 'payment-service'
ingress:
- action: Allow
protocol: TCP
source:
namespaceSelector: env == 'prod'
podSelector: app == 'order-service'
destination:
ports: [8080]
egress:
- action: Deny # 默认拒绝所有出站
2. 全局安全基线策略
apiVersion: projectcalico.org/v3
kind: GlobalNetworkPolicy
metadata:
name: baseline-security
spec:
tier: baseline
selector: all()
namespaceSelector: ''
order: 10
ingress:
- action: Deny # 默认拒绝所有入站
egress:
- action: Allow # 允许必要出站
protocol: UDP
destination:
ports: [53] # DNS解析
五、监控与排障体系
1. 核心监控指标清单
# Felix 健康指标
felix_resync_state{type="datastore"} == 0 # 0表示同步正常
# BGP 连接状态
calico_bgp_session_status{peer="10.0.0.1"} == "up"
# 策略处理延迟
felix_policy_update_seconds_sum < 0.5
2. 网络连通性测试工具
# 跨节点Pod连通性测试
kubectl run net-tool -it --rm --image=nicolaka/netshoot -- bash
# 测试命令示例
curl -I http://<target-pod-ip>:8080
mtr -rwc 10 <目标节点IP>
3. 常见故障排查流程
六、版本升级与维护要点
-
滚动升级策略
- 先升级Typha组件(需保持API兼容)
- 再升级各节点Felix DaemonSet(maxUnavailable=1)
- 最后升级kube-controllers(副本数降为1→升级→恢复)
-
版本兼容性矩阵
Kubernetes版本 推荐Calico版本 注意事项 1.23-1.25 v3.24 需启用PodSecurityPolicy 1.26+ v3.25 适配PSA(Pod安全准入) -
灾难恢复方案
# 关键配置备份 calicoctl get ippool -o yaml > ippool-backup.yaml calicoctl get globalnetworkpolicies -o yaml > gnp-backup.yaml # 快速恢复流程 calicoctl delete -f ippool-backup.yaml calicoctl apply -f ippool-backup.yaml
七、性能调优黄金参数
组件 | 调优参数 | 生产建议值 | 作用说明 |
---|---|---|---|
Felix | FELIX_BPFLOGLEVEL | Off | 关闭eBPF调试日志降低负载 |
Typha | TYPHA_CONNECTIONREBALANCING | 5m | 客户端连接均衡间隔 |
BGP Speaker | BGP_LOGSEVERITYSCREEN | Info | 控制BGP日志输出级别 |
kube-controllers | RECONCILER_PERIOD | 5m | Kubernetes资源同步周期 |
通过深度掌握Calico各组件特性,配合文中提供的生产级配置方案,可构建出高性能、高可靠的Kubernetes网络架构。建议每季度执行一次全链路压测,持续优化网络策略,确保业务流量始终处于最佳传输状态。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端