随笔 - 436  文章 - 0  评论 - 5  阅读 - 7898

Calico 核心组件

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. 常见故障排查流程

CNI配置错误

网络策略阻断

会话断开

路由缺失

Pod无法联通

检查Calico CNI日志

验证IP池分配状态

运行calicoctl get wep

检查BGP会话状态

检查节点防火墙规则

查看节点路由表


六、版本升级与维护要点

  1. 滚动升级策略

    • 先升级Typha组件(需保持API兼容)
    • 再升级各节点Felix DaemonSet(maxUnavailable=1)
    • 最后升级kube-controllers(副本数降为1→升级→恢复)
  2. 版本兼容性矩阵

    Kubernetes版本 推荐Calico版本 注意事项
    1.23-1.25 v3.24 需启用PodSecurityPolicy
    1.26+ v3.25 适配PSA(Pod安全准入)
  3. 灾难恢复方案

    # 关键配置备份
    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网络架构。建议每季度执行一次全链路压测,持续优化网络策略,确保业务流量始终处于最佳传输状态。

posted on   Leo-Yide  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示