【kubernetes/k8s概念】多集群联邦 kubefed
Kubernetes Federation(联邦) 目的是希望实现单一集群统一管理多个Kubernetes集群,这些集群可能是跨地区(Region),也可能是在不同公有云供应商(Cloud Provider)上,亦或者是公司内部自行建立的集群。安装 helm v3 版本下载 helm v3, 二进制文件 /usr/local/bin/helmwgethttps://get.helm.sh/helm
Kubernetes Cluster Federation(简称 KubeFed)允许您通过托管集群中的一组 API 来协调多个 Kubernetes 集群的配置。,这些集群可能是跨地区(Region),也可能是在不同公有云供应商(Cloud Provider)上,亦或者是公司内部自行建立的集群。
KubeFed 概念
Federate | 联邦一组 Kubernetes 集群意味着,可以有效地为这些集群池创建一个通用接口,用于跨集群部署 Kubernetes 应用程序。 |
KubeFed | Kubernetes Cluster Federation 使用户能够联合多个 Kubernetes 集群,以实现跨多个集群的资源分配、服务发现、高可用性等。 |
Host Cluster | 用于公开 KubeFed API,运行 KubeFed 的控制平面集群。 |
Member Cluster | 通过 KubeFed API 注册并且 KubeFed 控制器具有身份验证凭据的集群。 主机集群也可以是成员集群。 |
Cluster Registration | 通过 kubefedctl join 命令加入到 host cluster 的集群 |
Endpoint | 表示域名系统 (DNS) 资源记录的资源。 |
1. KubeFed 架构
Federation v2 分为两个大部分:configuration 和 propagation。KubeFed 最大改变是将 API Server 移除,通过 CRD 来完成 Federated Resources 的扩充。而 KubeFed Controller 则管理这些 CRD,并实现同步 Resources、跨集群编排等功能。
KubeFed configuration 主要包含两个配置:
- Type configuration:定义了 KubeFed 管理哪些 API 类型,如上所示图表
- Cluster configuration:定义了 KubeFed 管理哪些集群
Type Configuration 又由三个基本概念:
- Templates: 定义了跨集群通用资源的表示
- Placement: 定义了资源想要放置的集群
- Overrides: 定义了每个集群字段级变化来应用于模板,也就是修改指定集群的 Federated 资源中的 spec.template 内容
Propagation 涉及的机制是分发资源到联邦的集群
这些基本概念提供了可供更高级别 API 使用的构建块:
- Status:收集 KubeFed 在所有联邦集群中分布的资源状态
- Policy:确定允许将资源分发到哪个集群子集
- Scheduling: 指的是一种决策能力,可以决定工作负载应该如何分布在不同的集群中,类似于人类操作员的方式
2. 安装 helm v3 版本
下载 helm v3, 二进制文件 /usr/local/bin/helm
查看版本
# helm version
version.BuildInfo{Version:"v3.6.0", GitCommit:"7f2df6467771a75f5646b7f12afb408590ed1755", GitTreeState:"clean", GoVersion:"go1.16.3"}
添加 repo
helm repo add kubefed-charts https://raw.githubusercontent.com/kubernetes-sigs/kubefed/master/charts
查看 repo 列表
# helm repo list
NAME URL
aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
stable https://apphub.aliyuncs.com/stable
kubefed-charts https://raw.githubusercontent.com/kubernetes-sigs/kubefed/master/charts
更新 repo 列表
# helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "aliyun" chart repository
...Successfully got an update from the "kubefed-charts" chart repository
...Successfully got an update from the "stable" chart repository
Update Complete. ⎈Happy Helming!⎈
安装 kubefed
3. kubefedctl 命令
3.1 集群注册
加入联邦:前提需要将 kube-config 加入到 config 配置中,包括 cluster context user。这个比较麻烦,看看是否有更好的方式
kubefedctl join test-2 --cluster-context test1-admin --host-cluster-context kubernetes-admin --v=2
查看加入的集群
kubectl get kubefedclulsters -nkube-federation-system
3.2 注销集群
kubefedctl unjoin test-2 --cluster-context test1-admin --host-cluster-context kubernetes-admin --v=2
参考:
https://github.com/kubernetes-sigs/kubefed/blob/master/charts/kubefed/README.md
https://github.com/kubernetes-sigs/kubefed/blob/master/docs/userguide.md
更多推荐
所有评论(0)