Cilium 多集群 ClusterMesh 介绍

简介: Cluster Mesh 是 Cilium 的多集群实现,可以帮助 Cilium 实现跨数据中心、跨 VPC 的多 Kubernetes 集群管理,ClusterMesh 主要有以下功能:1.通过隧道或直接路由的方式,在多个 Kubernetes 集群间进行 Pod IP 路由,而无需任何网关或代理。2.使用标准 Kubernetes 服务发现机制。3.跨多个集群的网络策略。策略可以使用 Kubernetes 原生的 NetworkPolicy 资源或者扩展的 CiliumNetworkPolicy CRD。4.透明加密本集群以及跨集群节点间所有通信的流量。

Cluster Mesh 是 Cilium 的多集群实现,可以帮助 Cilium 实现跨数据中心、跨 VPC 的多 Kubernetes 集群管理,ClusterMesh 主要有以下功能:

1.通过隧道或直接路由的方式,在多个 Kubernetes 集群间进行 Pod IP 路由,而无需任何网关或代理。
2.使用标准 Kubernetes 服务发现机制。
3.跨多个集群的网络策略。策略可以使用 Kubernetes 原生的 NetworkPolicy 资源或者扩展的 CiliumNetworkPolicy CRD。
4.透明加密本集群以及跨集群节点间所有通信的流量。

接下来让我们一起看看 Cilium Cluster Mesh 有哪些具体的使用场景。
1 使用场景
1.1 高可用
对大多数人来说,高可用是最普遍的使用场景。可以在多个区域(regions)或可用区(availability zones)中运行多个 Kubernetes 集群,并在每个集群中运行相同服务的副本。 一旦发生异常,请求可以故障转移到其他集群。

1.2 共享服务
某些公共基础服务可以在集群间进行共享(如密钥管理,日志记录,监控或 DNS 服务等),以避免额外的资源开销。

1.3 拆分有状态和无状态服务
运行有状态或无状态服务的操作复杂性是非常不同的。无状态服务易于扩展,迁移和升级。 完全使用无状态服务运行集群可使集群保持灵活和敏捷。有状态服务(例如 MySQL,Elasticsearch, Etcd 等)可能会引入潜在的复杂依赖,迁移有状态服务通常涉及存储的迁移。为无状态和有状态服务分别运行独立的集群可以将依赖复杂性隔离到较少数量的集群中。

2 架构
Cilium Cluster Mesh 的架构如下:

每个 Kubernetes 集群都维护自己的 etcd 集群,保存自身集群的状态。来自多个集群的状态永远不会在本集群的 etcd 中混淆。
每个集群通过一组 etcd 代理暴露自己的 etcd,在其他集群中运行的 Cilium agent 连接到 etcd 代理以监视更改。
Cilium 使用 clustermesh-apiserver Pod 来建立多集群的互联,在 clustermesh-apiserver Pod 中有两个容器:其中 apiserver 容器负责将多集群的相关信息写入 etcd 容器;etcd 容器(etcd 代理)用来存储 Cluster Mesh 相关的配置信息。
从一个集群到另一个集群的访问始终是只读的。这确保了故障域保持不变,即一个集群中的故障永远不会传播到其他集群。

3 前提条件
3.1 安装相关软件

安装 Kubectl:kubernetes.io/zh/docs/tas…
安装 Kind:kind.sigs.k8s.io/docs/user/q…
安装 Helm:helm.sh/docs/intro/…
安装 Cilium Cli:github.com/cilium/cili…

Kind [1](Kubernetes in Docker) 是一个使用 Docker 容器运行本地 Kubernetes 集群的工具。为了方便实验,本文使用 Kind 来搭建 Kubernetes 多集群环境。
3.2 环境要求

1.必须为所有 Kubernetes 的工作节点分配唯一的 IP 地址,并且节点之间 IP 路由可达。
2.每个集群都要分配唯一的 Pod CIDR。
3.Cilium 必须使用 etcd 作为 kv 存储。
4.集群之间的网络必须互通,具体的通信的端口号参见防火墙规则 [2]。

本实验相关的配置文件可以在: cluster_mesh [3] 获取。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
4月前
|
Kubernetes 负载均衡 安全
Cilium使用 (Cilium 3)
Cilium使用 (Cilium 3)
99 6
|
4月前
|
监控 网络协议 Linux
Cilium架构
Cilium架构
55 5
|
7月前
|
Kubernetes 网络协议 Linux
Cilium 系列 -2-Cilium 快速安装
Cilium 系列 -2-Cilium 快速安装
|
7月前
|
Kubernetes Cloud Native Linux
云原生|kubernetes|kubernetes的网络插件calico和flannel安装以及切换
云原生|kubernetes|kubernetes的网络插件calico和flannel安装以及切换
1413 0
|
运维 Kubernetes 监控
kubernetes 安装cilium
Cilium是一个开源软件,用于透明地提供和保护使用Kubernetes,Docker和Mesos等Linux容器管理平台部署的应用程序服务之间的网络和API连接。 Cilium基于一种名为BPF的新Linux内核技术,它可以在Linux内部动态插入强大的安全性,可见性和网络控制逻辑。 除了提供传统的网络级安全性之外,BPF的灵活性还可以在API和进程级别上实现安全性,以保护容器或容器内的通信。由于BPF在Linux内核中运行,因此可以应用和更新Cilium安全策略,而无需对应用程序代码或容器配置进行任何更改。
1025 1
|
人工智能 缓存 Kubernetes
Kubernetes 集群 Ingress 网关
Kubernetes 集群 Ingress 网关
844 0
|
存储 Kubernetes 网络协议
安装Kubernetes集群
安装Kubernetes集群
479 0
|
Kubernetes Cloud Native 开发工具
云原生|kubernetes|kubernetes的网络插件calico和flannel安装以及切换(一)
云原生|kubernetes|kubernetes的网络插件calico和flannel安装以及切换
651 0
云原生|kubernetes|kubernetes的网络插件calico和flannel安装以及切换(一)
|
Kubernetes 网络安全 容器
使用Kubespray部署Kubernetes集群
Kubespray是Google开源的一个部署生产级别的Kubernetes服务器集群的开源项目,它整合了Ansible作为部署的工具。项目地址:github.com/kubernetes-… 部署历程 目前为止,对于Kubernetes集群的部署,我只谈的上是一个入门者,涉及到了众多的运维知识,对于一个开发来说,确实挺难的。
3488 0
|
Kubernetes Cloud Native Ubuntu
云原生|kubernetes|kubernetes的网络插件calico和flannel安装以及切换(二)
云原生|kubernetes|kubernetes的网络插件calico和flannel安装以及切换
1867 0