集群联邦(Federation)的目的是实现单一集群统一管理多个Kubernetes集群的机制,这些集群可能是跨地区(Region),也可能是在不同公有云供应商上,或者是公司内部自行建立的集群。,一但集群进行联邦后,就可以利用 Federation API资源来统一管理多个集群的Kubernetes API资源,如定义Deployment如何部署到不同集群上,其集群所需的副本数等。,通过集群联邦,我们可以:,简化管理多个集群的Kubernetes 组件,如Deployment, Service 等,在多个集群之间分散工作负载,以提升应用的可靠性,跨集群的资源编排,依据编排策略在多个集群进行应用部署,在不同集群中,能更快速更容易地迁移应用,跨集群的服务发现,服务可以实现地理位置感知,以降低延迟(不一定必须用kubefed实现),实践多云(Multi-cloud)或混合云(Hybird Cloud)的部署,这篇文章主要记录跨集群资源同步的内容,跨集群服务发现的开新的文章记录。,Federation v2 的安装分两个部分,一是 Controller Plan 和 kubefedctl。其中 Controller Plan是基于 helm 安装的,所以我们先安装helm。,可自行查找文档安装。,Controller Plan 可以使用 Helm 部署(目前 Helm 还是使用 v2 版本),参考官方安装文档:https://github.com/kubernetes-sigs/kubefed/blob/master/charts/kubefed/README.md,添加源,搜索,安装,kubefedctl 是一个二进制程序,可以在 Github 的 Release 页面找到最新版本的下载地址:https://github.com/kubernetes-sigs/kubefed/releases,参考我先前的文章 《kubernetes switch context》,
,基本使用方式为:,例如:,
,Kubefed 是利用 CRD 来存储自己所需要的数据,因此当使用 kubefedctl join 后,可以在 host cluster 查看到集群信息:,kubefedctl join 命令只是将 Kubeconfig 里的配置转化为 KubeFedCluster 自定义资源存储到 kube-federation-system 命名空间中。,
,
,对于 KubeFed 来说,资源管理分两类,一是资源的类型管理,另一个是被联邦(federated)的资源管理。,对于资源类型,kubefedctl 提供了 enable 来使新的资源可以被联邦管理:,其中可以使用以下的描述:,因为 Kubefed 是通过 CRD 管理资源,因此,当 enable 执行之后可以看到 Host Cluster 中新增了一种名为 federatedvirtualservices 的 CRD:,默认已启用的联邦资源:,
,也可以对自定义CRD资源启用联邦。kubefedctl enable 完成了资源类型的管理,对于需要被联邦的资源管理编辑基于新创建的 CRD 展开的。,不过要部署资源之前,需要先创建 federatednamespaces ,多集群的资源只会部署到被 kubefed 管理的 namespace 中。,使用官方的demo,可以快速体验示例:https://github.com/kubernetes-sigs/kubefed/tree/master/example/sample1,注意,官方特地留了一个资源让我们手动enable,运行上面命令后会出现如下提示:,
,需要对ClusterRoleBinding 类型启用联邦化。,
,
,最后在n1 n2集群上运行结果如下:,
,确认正常运行:,
,
© 版权声明
文章版权归作者所有,未经允许请勿转载。