4. 部署Federation v2
任务目标
在三个已就绪的Kubernetes集群(host集群 + 两个member集群)上部署Federation v2,并将member集群成功注册到host集群的联邦控制平面中,最终通过kubefedctl命令验证集群注册状态。
环境准备
- 三个Kubernetes集群,版本≥1.13,且已配置好
kubeconfig,分别使用context名称:host、member1、member2 - 已安装
kubectl和helm(v3) - 下载
kubefedctl二进制并加入PATH:curl -Ls https://github.com/kubernetes-sigs/kubefed/releases/download/v0.1.0-rc6/kubefedctl-0.1.0-rc6-linux-amd64.tgz | tar xz
部署Federation v2控制平面
在host集群上使用Helm部署Federation v2控制平面。核心操作如下:
# 切换至host集群
kubectl config use-context host
# 添加repo并安装
helm repo add kubefed-charts https://raw.githubusercontent.com/kubernetes-sigs/kubefed/master/charts
helm install kubefed kubefed-charts/kubefed --version=0.1.0-rc6 --namespace kube-federation-system --create-namespace
# 等待控制平面就绪
kubectl -n kube-federation-system rollout status deploy/kubefed-controller-manager --timeout=120s
注册member集群
使用kubefedctl将两个member集群注册到联邦中。注册操作会在host集群创建KubeFedCluster资源,并建立与member集群的连接。
# 注册member1
kubefedctl join member1 --host-cluster-context host --kubefed-namespace kube-federation-system --v=2
# 注册member2
kubefedctl join member2 --host-cluster-context host --kubefed-namespace kube-federation-system --v=2
验证集群注册状态
检查联邦控制平面中已注册的集群及其健康状态:
# 查看已注册集群列表
kubectl -n kube-federation-system get kubefedclusters.core.kubefed.io
# 查看详细状态(确认Ready条件为True)
kubectl -n kube-federation-system get kubefedclusters.core.kubefed.io member1 -o jsonpath='{.status.conditions[?(@.type=="Ready")].status}{"\n"}'
kubectl -n kube-federation-system get kubefedclusters.core.kubefed.io member2 -o jsonpath='{.status.conditions[?(@.type=="Ready")].status}{"\n"}'
判定标准
kubefedctl join命令执行无报错,返回cluster "member1" created类似信息- 上述
get kubefedclusters命令输出包含member1和member2两行记录 - 两个member集群的
Ready条件状态均为True,表示联邦控制平面与member集群的API通信正常
常见问题
- join时报
context deadline exceeded:检查host集群到member集群的网络连通性,确认member集群的kubeconfig中server地址可从host集群访问 - 注册后Ready为False:执行
kubectl -n kube-federation-system describe kubefedcluster member1查看事件,通常为RBAC权限或endpoint不可达问题 - Helm安装失败:确认host集群有足够权限创建CRD和namespace,必要时使用
--set global.scope=Namespaced缩小部署范围