首页 > 其他分享 >在K8S中,calico工作原理与网络模式是什么?

在K8S中,calico工作原理与网络模式是什么?

时间:2024-02-02 09:56:58浏览次数:30  
标签:节点 IP 网络 Calico BGP 原理 Pod K8S calico

在Kubernetes(简称K8S)中,Calico 是一个强大的网络和网络策略解决方案。它的工作原理与网络模式主要包括以下内容:

工作原理:
  1. 节点配置

    • Calico 在每个 Kubernetes 节点上安装并运行一个名为 Felix 的守护进程。Felix 监听 etcd 中存储的网络策略和配置信息,并根据这些信息更新本地网络规则。
  2. Pod 网络分配

    • 当创建 Pod 时,Calico CNI 插件负责为 Pod 分配 IP 地址,并设置相应的网络命名空间,确保 Pod 能够正确通信。
  3. BGP 路由分发

    • Calico 默认使用 BGP 协议进行跨主机的路由传播。每个节点上的 Calico 实例充当 BGP 客户端,将本节点上 Pod 的 IP 范围通过 BGP 协议宣告给其他节点和数据中心的路由器。
    • 这样一来,集群内的所有节点都能知道如何直接到达其他节点上的任意 Pod,从而实现高效的 L3 网络通信,无需隧道或额外的 NAT。
  4. 网络策略实施

    • Calico 支持 Kubernetes NetworkPolicy API,允许用户定义细粒度的网络策略以控制 Pod 间的流量。当策略改变时,Felix 会实时调整防火墙规则和路由表项来执行这些策略。
  5. 数据同步

    • Calico 使用 etcd 或 Kubernetes API Server 来存储和同步网络配置和状态信息。通过监听这些数据的变化,各个组件能够保持一致的状态。
网络模式:
  • BGP 模式

    • 这是 Calico 最常见的部署模式,利用 BGP 作为主要的数据中心内网间路由协议,让每个节点成为一个BGP发言者,这样可以实现在同一网络平面下 Pod 之间的无隧道直连通信。
  • IP-in-IP 隧道模式

    • 在某些网络环境中,如果不能使用 BGP 或者需要跨越三层网络边界时,Calico 可以采用 IP-in-IP 隧道技术。在这种模式下,Calico 将容器网络流量封装在另一个 IP 包中进行传输,使得分布在不同子网中的 Pod 之间也能进行通信。

综上所述,Calico 利用 BGP 和可选的 IP-in-IP 隧道机制,在 Kubernetes 集群中提供了灵活、高性能且安全的网络方案。

标签:节点,IP,网络,Calico,BGP,原理,Pod,K8S,calico
From: https://www.cnblogs.com/huangjiabobk/p/18002603

相关文章

  • 在K8S中,pause容器作用是什么?
    在Kubernetes(简称K8S)中,pause容器是每个Pod中的一个基础且至关重要的组成部分。它的主要作用和功能包括:创建共享网络命名空间:pause容器首先启动,并创建一个网络命名空间,所有该Pod内的其他业务容器都加入到这个共享的网络命名空间中。这意味着这些容器可以相互通信就如同它们在......
  • 在K8S中,HPA原理是什么?
    在Kubernetes(简称K8s)中,HorizontalPodAutoscaler(HPA)是一种自动扩展Pod副本数量的机制,其原理是基于集群中运行的应用程序资源使用情况动态调整Pod副本的数量。HPA的工作原理可以概括为以下几个步骤:监控指标:HPA通过与KubernetesMetricsAPI交互,持续监控指定目标对象(如Deploy......
  • 在K8S中,calico有哪些组件?
    在Kubernetes(简称K8S)中,Calico作为网络插件提供了容器网络解决方案和网络策略管理。以下是Calico的主要组件:FelixFelix是Calico的核心守护进程,在每个节点上运行,负责配置和维护本地网络策略、路由规则以及ARP表项等。CalicoCNI插件Calico的CNI(ContainerNetworkInterfa......
  • 在K8S中,集群可以做哪些优化?
    在Kubernetes(简称K8s)集群中,可以进行多种优化以提升性能、稳定性和资源利用率。以下是一些常见的优化措施:控制面组件优化:kube-apiserver高可用与扩展:通过配置多个API服务器实例并使用负载均衡器分发请求,确保即使单个节点故障也不会影响服务;设置合适的内存和CPU限制,监控其性能......
  • SpringBoot自动化配置原理
    SpringBoot自动化配置从注解@SpringBootApplication开始,它封装的注解如下图所示:需要注意的有三个注解:1.第一个注解是@SpringBootConfiguration,底层是一个@Configuration注解,表示当前类是一个配置类,可以使得引导类中的SpringBoot或Spring配置能生效2.第二个注解是@ComponentSc......
  • flannel网络插件替换calico网络插件
    在十一或者五一的时候,公司大楼装修断电,关闭服务器,启动之后发现flannel网卡不好使了,在部署K8S1.28.2出现flannel.1和cni网段不一致的情况。尝试了删除cni0网卡但是删除后cni0网卡不会重新创建:ifconfigcni0downifconfigflannel.1downiplinkdeletecni0iplinkdeletef......
  • SpringBoot的自动化配置原理
    1.启动类上有一个注解,是一个复合注解,由三个注解组成第一个注解是@SpringBootConfiguration,底层是一个@Configuration注解,表示当前类是一个配置类第二个注解是@ComponentScan是一个组件扫描,spring会扫描引导类所在包及子包下的组件第三个注解是@EnableAutoConfiguration注......
  • SpringBoot自动化配置原理
    先在pom.xml文件中引入配置依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId><version>2.1.4.RELEASE</version>&......
  • k8s 怎么手动拉取docker镜像
    首先我们需要安装 docker 来打包镜像,如果你本地已经安装了 docker推荐安装方法目前使用 DockerDesktop 来安装docker还是最简单的方案,打开官网下载对应你电脑操作系统的包即可当安装完成后,可以通过 dockerrunhello-world 来快速校验是否安装成功!安装minikube我们还需......
  • CAS单点登录原理解析
    前段时间时间需要和其他项目做cas集成,于是乎在网上找了几篇教程看了一下,好了,很简单,学会了,开搞(自以为研究明白)。集成完事了,登录成功了,自以为这就过去了。然而,没过几天就出bug了,这下惨了,当初没有好好学出了问题都不知道咋解决。无奈,只得静下心来好好学习一番(当初太懒付出的代价)。......