获取KubeConfig
在第三方云服务商集群不支持直接导出KubeConfig文件时,可采用下列方法获取MCP可用的KubeConfig文件。
- (可选)设置kubectl。
若集群可正常执行kubectl,可跳过本步骤。
- 获取kubectl文件的绝对路径***/kubectl。
which kubectl
- 获取您的KubeConfig文件路径***/config。默认情况下,kubectl的配置文件位于master节点的“$HOME/.kube/config”路径,您也可以使用--kubeconfig参数指定其他KubeConfig文件,详情请参见使用 kubeconfig 文件组织集群访问。
- 设置kubectl。
alias kubectl='***/kubectl --kubeconfig=***/config'
- 获取kubectl文件的绝对路径***/kubectl。
- 创建my-user-sa.yaml、my-user-role.yaml、my-user-role-binding.yaml文件。
my-user-role.yaml:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: my-user-role rules: - apiGroups: - '*' resources: - '*' verbs: - '*' - nonResourceURLs: - '*' verbs: - get
my-user-role-binding.yaml:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: my-user-role-binding subjects: - kind: ServiceAccount name: my-user namespace: default roleRef: kind: ClusterRole name: my-user-role apiGroup: rbac.authorization.k8s.io
my-user-sa.yaml:
apiVersion: v1 kind: ServiceAccount metadata: name: my-user
- 在纳管集群上进行操作。
kubectl apply -f my-user-sa.yaml kubectl apply -f my-user-role.yaml kubectl apply -f my-user-role-binding.yaml
- 使用以下命令获取token。
kubectl get secret -n default `kubectl get secret -n default | grep my-user | awk '{print $1}'` -oyaml | grep token: | awk '{print $2}' | base64 -d
- 配置KubeConfig文件。
在下面kubeconfig.json中,将“server”参数替换为1里“***/config”文件中的“server”字段地址,“token”参数替换为4中获取的值。
kubeconfig.json:
kind: Config apiVersion: v1 preferences: {} clusters: - name: internalCluster cluster: server: 'https://119.xxx.xxx.xxx:5443' #替换集群API Server地址 insecure-skip-tls-verify: true users: - name: user user: token: 'MIIFbAYJKo*****' #替换token contexts: - name: internal context: cluster: internalCluster user: user current-context: internal
- 添加集群,使用5中配置的KubeConfig文件。成功添加集群后,可以删除3中创建的ClusterRole、ClusterRoleBinding以及ServiceAccount。