如何获取接入集群信息?
问题描述
为了获得与接入集群连接所需的配置信息,以便在后续操作中平台可以授权访问和管理该集群。本节提供了获取接入集群信息的操作介绍。
前提条件
-
一个配置好 kubectl 客户端的环境。 对于公有云集群,强烈建议使用公有云平台提供的 CloudShell。 没有 CloudShell 可用时,建议使用 Linux 或 macOS 操作系统。
-
用户已经获得接入集群的 KubeConfig 文件,并将该文件拷贝到安装有 kubectl 客户端的环境上。 为避免误操作其他环境,请强制覆盖一次
"${HOME}/.kube/config"文件的内容。
获取集群信息
获取集群令牌
-
请执行以下命令行:
# 【重要!】以下操作只支持在 bash 中执行 # 手动创建 secret、关联 serviceaccount、生成永不过期的 token kubectl get ns cpaas-system > /dev/null 2>&1 || kubectl create namespace cpaas-system kubectl create serviceaccount k8sadmin -n cpaas-system kubectl create clusterrolebinding k8sadmin --clusterrole=cluster-admin --serviceaccount=cpaas-system:k8sadmin cat | kubectl apply -f - <<EOF apiVersion: v1 kind: Secret metadata: name: k8sadmin namespace: cpaas-system annotations: kubernetes.io/service-account.name: "k8sadmin" type: kubernetes.io/service-account-token EOF kubectl -n cpaas-system describe secret \ $(kubectl -n cpaas-system get secret | (grep k8sadmin || echo "$_") | awk '{print $1}') \ | grep -F 'token:' | awk '{print $2}' -
上一步获得的 token 示例如下图所示。
-
校验获得的 token 的有效期。
可使用任何支持 JWT token 解析的工具分析获得的 token,确认 token 的到期时间. 若解析结果中能找到过期时间(有键值对包含 “exp” 字样,如下图所示),超过该时间后本平台会无法管理接入集群。 此时请停止操作,并申请技术支持。
提示: 过期时间在 JWT token 的原始载荷中记为
"exp": 1684486916,,其值为 UNIX 时间戳,可转换为 UTC 时间。
获取接入集群 apiserver 的访问地址和 CA 证书
**提示:** 如果已通过本平台接入集群页的 `解析 KubeConfig 文件` 功能获得了 apiserver 的访问地址和 CA 证书,请跳过这一步。
-
请执行以下命令行:
# 查看接入集群 apiserver 的访问地址。有可能会找到多个访问地址,请根据接入集群的需要选择合适的访问地址。 kubectl --kubeconfig "${HOME}/.kube/config" config view --show-managed-fields=false --flatten --raw -ojsonpath='{$.clusters..cluster.server}' addr_apiserver='<选定的 apiserver 访问地址>' # 获取上一步指定的 apiserver 的 CA 证书 kubectl --kubeconfig "${HOME}/.kube/config" config view --show-managed-fields=false --flatten --raw \ -ojsonpath="{$.clusters[?(@.cluster.server == '${addr_apiserver}')].cluster.certificate-authority-data}" \ | base64 -d