从 Kubefed 迁移
Karmada 是在 Kubernetes Federation v1 和 Federation v2(也称为 Kubefed)的基础上开发的。 Karmada 继承了很多两者的概念。例如:
- 资源模板:Karmada 使用 Kubernetes 原生 API 定义用于联邦化的资源模板,使其易于与已采用 Kubernetes 的现有工具集成。
- 分发策略:Karmada 提供独立的 Propagation(placement) Policy API 来定义多集群调度和分发要求。
- 差异化策略:Karmada 提供了独立的 Override Policy API,专门自动化处理集群相关的配置。
Kubefed 的大多数功能都在 Karmada 进行了重塑,因此可以说 Karmada 是其自然继任者。
一般来说,从 Kubefed 迁移到 Karmada 很容易。 本文档概述了 Kubefed 用户的基本迁移路径。 **注意:**本文档正在编撰中,欢迎任何反馈。
集群注册
Kubefed 在 kubefedctl 命令行工具中提供 join 和 unjoin 命令,Karmada 也在 karmadactl 中实现了这两个命令。
请参阅 kubefed 集群注册和 Karmada 集群注册了解详情。
接入集群
假设您如下使用 kubefedctl 工具接入集群:
kubefedctl join cluster1 --cluster-context cluster1 --host-cluster-context cluster1
现在通过 Karmada,您可以用 karmadactl 工具达到同样的效果:
karmadactl join cluster1 --cluster-context cluster1 --karmada-context karmada 
join 命令背后的行为在 Kubefed 和 Karmada 中类似。
对于 Kubefed,此命令将创建一个KubeFedCluster对象,
而 Karmada 将创建一个 Cluster对象来描述所接入的集群。
检查接入集群的状态
假设您如下使用 kubefedctl 工具来检查接入集群的状态:
$ kubectl -n kube-federation-system get kubefedclusters
NAME       AGE   READY   KUBERNETES-VERSION
cluster1   1m    True    v1.21.2
cluster2   1m    True    v1.22.0
现在通过 Karmada,您可以用 karmadactl 工具达到同样的效果:
$ kubectl get clusters
NAME      VERSION   MODE   READY   AGE
member1   v1.20.7   Push   True    66s
Kubefed 管理着 PUSH 模式的集群,但是 Karmada 支持 PUSH 和 PULL 两种模式。
请参阅集群模式概述。