如何为联邦添加集群?附API Server证书认证及宿主集群kubeconfig信息
向Kubernetes联邦添加集群并配置API Server证书认证
先理清楚你的现状:已经把联邦控制平面部署在宿主集群,kubeconfig里也有了联邦的相关配置,接下来咱们一步步完成集群加入和证书认证的配置:
第一步:准备目标集群的认证信息
你得先拿到要加入联邦的那个集群的关键认证数据:
- 它的API Server地址(比如
https://xxx.xxx.xxx.xxx:6443) - 集群的CA证书(可以是本地文件,或者base64编码后的字符串)
- 一个有权限访问该集群的用户凭证(cert和key文件,用来让联邦控制平面能访问这个集群)
第二步:切换到联邦控制平面的上下文
先确保kubectl当前指向的是联邦控制平面,从你给的kubeconfig看,已经有federation这个集群项,对应的上下文你应该补全了,执行命令切换:
kubectl config use-context <你的联邦上下文名称,比如federation-context>
第三步:用证书认证方式创建FederatedCluster资源
咱们用证书认证来做联邦和目标集群的双向验证,分小步骤来:
3.1 把证书转成base64编码
如果你的目标集群CA证书、用户cert/key都是本地文件,先转成base64(方便写到YAML里):
# 转CA证书 cat target-cluster-ca.pem | base64 -w 0 # 转用户cert cat target-user-cert.pem | base64 -w 0 # 转用户key cat target-user-key.pem | base64 -w 0
把输出的字符串记下来,后面要用。
3.2 创建存储用户凭证的Secret
联邦需要用这个Secret来访问目标集群,创建一个cluster-creds.yaml文件:
apiVersion: v1 kind: Secret metadata: name: <给secret起个名字,比如cluster-01-creds> type: kubernetes.io/tls data: tls.crt: <刚才生成的用户cert的base64字符串> tls.key: <刚才生成的用户key的base64字符串>
然后应用这个Secret:
kubectl apply -f cluster-creds.yaml
3.3 编写FederatedCluster配置文件
创建federated-cluster.yaml,替换成你的实际信息:
apiVersion: types.kubefed.io/v1beta1 kind: FederatedCluster metadata: name: <给目标集群起个名字,比如cluster-01> spec: clusterSpec: server: <目标集群的API Server地址> certificate-authority-data: <目标集群CA证书的base64字符串> secretRef: name: <刚才创建的secret名称,比如cluster-01-creds>
注意:如果你的联邦是新版本,API版本可能是core.kubefed.io/v1beta1,根据你的实际情况调整。
3.4 应用配置加入集群
执行命令把集群加入联邦:
kubectl apply -f federated-cluster.yaml
第四步:验证集群是否成功加入
等个几十秒,执行命令查看状态:
kubectl get federatedclusters
如果STATUS列显示Ready,就说明集群已经成功加入,证书认证也配置好了~
一些要注意的点
- 目标集群的用户凭证一定要有足够权限,最好给
cluster-admin权限,不然联邦控制平面可能没法正常同步资源。 - 如果加入失败,去联邦控制平面的namespace(一般是
kube-federation-system)下看控制器的日志:
kubectl logs -n kube-federation-system -l app=kubefed-controller
从日志里找问题就行。
内容的提问来源于stack exchange,提问作者MelDev
相关产品推荐
相关产品推荐

