当前位置: 首页 > news >正文

k8s的calico是什么作用,举例一下

Calico 是 Kubernetes 中广泛使用的开源网络插件,通过高性能三层网络和细粒度网络策略,为容器提供跨主机通信、安全隔离及网络管理功能。以下是其核心作用与使用方法:

一、Calico 的核心作用

  1. 高性能容器网络
    • 技术原理:基于 BGP(边界网关协议)或 eBPF 技术实现三层网络,直接通过节点路由表转发数据包,无需覆盖网络(如 VXLAN)封装,减少性能损耗。
    • 优势:相比 Flannel 的 UDP/VXLAN 模式,Calico 在大规模集群中延迟更低、吞吐量更高,适合高流量场景(如 AI 训练、大数据分析)。
  2. 细粒度网络策略
    • 功能:支持 Kubernetes NetworkPolicy,可基于标签(Label)定义容器间的访问规则(如允许/拒绝特定端口、IP 的流量)。
    • 示例
      apiVersion: networking.k8s.io/v1
      kind: NetworkPolicy
      metadata:name: allow-frontend-to-backend
      spec:podSelector:matchLabels:app: backendpolicyTypes:- Ingressingress:- from:- podSelector:matchLabels:app: frontendports:- protocol: TCPport: 80
      此策略仅允许标签为 app=frontend 的 Pod 访问 app=backend 的 80 端口。
  3. 多网络模式支持
    • BGP 直连模式:节点间通过 BGP 协议交换路由信息,适合同子网环境(如私有云)。
    • IPIP/VXLAN 覆盖模式:跨子网时封装数据包,解决物理网络限制(如公有云跨可用区)。
    • 混合模式:自动选择直连或覆盖,平衡性能与兼容性。
  4. IPv6 与多云集成
    • 支持原生 IPv6 地址分配,兼容 AWS、Azure、GCP 等云平台,实现跨云网络统一管理。

二、Calico 在 Kubernetes 中的使用方法

1. 安装 Calico
  • 使用 Helm 安装(推荐):
    helm repo add projectcalico https://docs.tigera.io/charts
    helm install calico projectcalico/tigera-operator --version v3.26.1
  • 使用 YAML 文件安装
    从 Calico 官方文档 下载 YAML 文件并应用:
    kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml
2. 配置网络策略
  • 基础示例:隔离 policy-demo 命名空间中的所有 Pod,仅允许特定流量:
    # 创建命名空间
    kubectl create ns policy-demo# 部署 Nginx 和测试 Pod
    kubectl create deployment nginx --image=nginx --replicas=2 -n policy-demo
    kubectl expose deployment nginx --port=80 -n policy-demo
    kubectl run access --rm -ti --image=busybox --namespace=policy-demo -- /bin/sh# 应用网络策略(拒绝所有入口流量)
    kubectl apply -f - <<EOF
    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:name: default-denynamespace: policy-demo
    spec:podSelector: {}policyTypes:- Ingress
    EOF# 允许从标记为 `run=access` 的 Pod 访问 Nginx
    kubectl apply -f - <<EOF
    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:name: access-nginxnamespace: policy-demo
    spec:podSelector:matchLabels:app: nginxingress:- from:- podSelector:matchLabels:run: accessports:- protocol: TCPport: 80
    EOF

3. 验证网络策略
  • # 在 access Pod 中测试访问 Nginx
    kubectl exec access -n policy-demo -- wget -q nginx:80 -O - # 成功
    kubectl exec access -n policy-demo -- wget -q nginx:22 -O - # 失败(被策略阻止)
    # 在未标记的 Pod 中测试访问 Nginx
    kubectl run cant-access --rm -ti --image=busybox --namespace=policy-demo -- /bin/sh
    / # wget -q nginx:80 -O - # 失败(被默认策略阻止)
4. 高级功能
  • 节点防火墙管理:通过 HostEndpoint 和 GlobalNetworkPolicy 控制节点级流量(如仅允许特定 IP 访问节点端口 22):
    apiVersion: projectcalico.org/v3
    kind: HostEndpoint
    metadata:name: node1-eth0labels:kubernetes-host: ingress
    spec:interfaceName: eth0node: node1expectedIPs: ["192.168.1.100"]apiVersion: projectcalico.org/v3
    kind: GlobalNetworkPolicy
    metadata:name: allow-ssh-only
    spec:order: 10ingress:- action: Allowprotocol: TCPsource:nets: ["192.168.1.0/24"]destination:ports: [22]- action: Denyprotocol: TCPsource:notNets: ["192.168.1.0/24"]selector: has(kubernetes-host)

三、Calico 与其他插件对比

特性CalicoFlannelCilium
网络模型三层(BGP/eBPF)二层覆盖(VXLAN/UDP)eBPF 加速
网络策略原生支持 Kubernetes NP需结合 Calico 或 Canal原生支持
性能高(无封装)中(封装开销)极高(eBPF 优化)
适用场景大规模、安全敏感型中小规模、简单网络高性能、服务网格集成

四、总结

Calico 以其高性能、强安全性和灵活性,成为 Kubernetes 网络插件的首选之一。无论是金融、电商等对安全要求严格的行业,还是 AI、大数据等需要低延迟的场景,Calico 均能通过三层网络和精细策略提供可靠解决方案。对于中小规模集群,其部署复杂度略高于 Flannel,但长期运维中网络策略的优势显著。

http://www.lryc.cn/news/617255.html

相关文章:

  • 【软考中级网络工程师】知识点之 UDP 协议:网络通信中的高效轻骑兵
  • k8s PV和PVC开始总结
  • AI时代基于云原生的 CI/CD 基础设施 Tekton
  • RabbitMQ 声明队列和交换机详解
  • HTTPS 协议原理 ——4种方案
  • HTTPS的应用层协议
  • 2024年ESWA SCI1区TOP,自适应种群分配和变异选择差分进化算法iDE-APAMS,深度解析+性能实测
  • 在 ASP.NET 项目中用 C# 生成二维码
  • 为 Promethus 配置https访问
  • 无人机航拍数据集|第12期 无人机停车场车辆计数目标检测YOLO数据集1568张yolov11/yolov8/yolov5可训练
  • FP32、BF16、FP16三种方式比较
  • 计算机视觉CS231n学习(7)
  • 《范仲淹传》读书笔记与摘要
  • MySQL数据库简介
  • MySQL-日志
  • Vue 3 快速入门 第六章
  • Linux操作系统从入门到实战(十九)进程状态
  • JS-第二十三天-正则
  • 大数据量下分页查询性能优化实践(SpringBoot+MyBatis-Plus)
  • 集成电路学习:什么是URDF Model统一机器人描述格式模型
  • ZeroNews:如何构建安全(无需 V*N!)的工业物联网连接
  • 大模型落地:AI 技术重构工作与行业的底层逻辑
  • Salesforce案例:零售企业会员积分体系
  • 【软考架构】需求工程中,系统分析与设计的结构化方法
  • [Shell编程] Shell 编程之免交互
  • C语言模拟 MCU 上电后程序的执行顺序 + 回调函数机制 + 程序计数器(PC)和堆栈的作用
  • LangVM —— 一站式多语言版本管理工具,让 Java、Python、Go、Node.js 切换更丝滑
  • CVE-2019-0708复刻
  • buildroot编译qt 5.9.8 arm64版本踩坑
  • Windows文件时间修改指南:从手动到自动化