k8s多集群管理

kubefed参考我的博客多集群管理kubefed
目前接触的多集群管理开源项目有kubespheretower和华为开源的karmada。这两个都使用了kubernetes Federation的模块,在此基础之上实现了对多集群应用的调度和访问的封装。

karmada

Karmada控制平面由以下组件组成。

1、Karmada API服务器

2、Karmada控制器管理器
3、Karmada调度器
ETCD存储karmada API对象,API服务器是所有其他组件对话的REST端点,Karmada控制器管理器根据你通过API服务器创建的API对象执行操作。

在这里插入图片描述

Karmada控制器管理器运行各种控制器,控制器观察karmada对象,然后与底层集群的API服务器对话,创建常规的Kubernetes资源。包括以下控制器:

(1)集群控制器:将kubernetes集群附加到Karmada,通过创建集群对象来管理集群的生命周期。

(2)政策控制器:该控制器观察PropagationPolicy对象。当PropagationPolicy对象被添加时,它选择一组与resourceSelector匹配的资源,并与每个单一的资源对象创建ResourceBinding

(3)绑定控制器:该控制器观察ResourceBinding对象,并通过单个资源清单创建对应于每个集群的work对象。

(4)执行控制器:该控制器观察work对象。当work对象被创建时,它将把资源分配给成员集群。

在这里插入图片描述

karmada v0.6的例子能调度应用到指定集群,host cluster上能获得其他集群上应用的部分信息(可以获取deployment,但无法获取pod信息),无法在host cluster访问其他集群上的应用。其他集群断线后能自治,自修改应用,但是连线host cluster后没有机制将应用信息同步到host cluster。(考虑云边协同环境,云端应用可以分发到边端,云端的修改可以同步到边端,边端可以离线自治,但是边端的修改在重连云端后无法同步到云端)

kubesphere多集群实现

kubesphere中多集群采用了kubernetes Federation的模块,此外构建了组建tower解决跨网络环境的多集群管理。

kubesphere使用kubefedcluster代表集群,使用以下命令可以查看集群数量

root@bionic-1:/home/test# kubectl get kubefedclusters --all-namespaces
NAMESPACE                NAME       AGE   READY
kube-federation-system   host       16h   True
kube-federation-system   member62   15h   True
kube-federation-system   member63   15h   True
root@bionic-1:/home/test# 

kubesphere使用kubefedworkspace代表多集群工作空间,federatednamespaces代表多集群项目,federateddeployments代表多集群工作负载,federatedstatefulsets代表多集群有状态应用,federatedservice,federatedingress代表多集群服务,federatedapplication代表多集群应用(应用市场)等等。

root@bionic-1:/home/test# kubectl get federatedworkspaces --all-namespaces
NAME               AGE
multi              15h
system-workspace   16h
root@bionic-1:/home/test# kubectl get federatednamespaces --all-namespaces
NAMESPACE                         NAME                              AGE
kubesphere-monitoring-federated   kubesphere-monitoring-federated   16h
mult-project                      mult-project                      15h
root@bionic-1:/home/test# kubectl get federateddeployments --all-namespaces
NAMESPACE      NAME           AGE
mult-project   nginx-multdp   15h
root@bionic-1:/home/test# 

kubesphere采用两种方式来管理多集群,一种是直连,处理成员集群和主机群在同一个可以互相通信的网段;另一种是使用agent连接,处理不能直连的情况(例如,公有云上k8s集群通过负载均衡器的公网IP对外提供服务,公有云集群内部IP不能与成员集群直连),这种情况下,kubesphere会要求用户手动在成员集群运行一个cluster-agent组件(其实内部是跑tower),该组件与主集群的tower loadbalancer ip通信,达到基于sshhttp/https/tcp跨网络通信。

注:kubesphere插件启用容易,禁用插件操作复杂。

注:kubesphere多集群服务统一入口功能未实现,即kubefedingresses不生效,还是需要从过kubernetes service的暴露方式访问。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值