第三方云厂商集群 由于第三方云厂商集群提供的KubeConfig文件格式存在差异,您需要自行创建一个具有所有集群资源操作权限的ServiceAccount,并获取这个ServiceAccount的token,用于配置U
CS 支持的KubeConfig文件。 通过kubectl连接集群。 创建ucs-service-account.yaml文件。 apiVersion: v1
kind: ServiceAccount
metadata:
name: ucs-user
---
apiVersion: v1
kind: Secret
metadata:
name: ucs-user-token
annotations:
kubernetes.io/service-account.name: "ucs-user"
type: kubernetes.io/service-account-token
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: ucs-user-role
rules:
- apiGroups:
- '*'
resources:
- '*'
verbs:
- '*'
- nonResourceURLs:
- '*'
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: ucs-user-role-binding
subjects:
- kind: ServiceAccount
name: ucs-user
namespace: default
roleRef:
kind: ClusterRole
name: ucs-user-role
apiGroup: rbac.authorization.k8s.io 在集群中执行以下命令创建ServiceAccount。 kubectl apply -f ucs-service-account.yaml 使用以下命令获取token。 kubectl get secret ucs-user-token -n default -oyaml | grep token: | awk '{print $2}' | base64 -d ;echo 配置KubeConfig文件。 参考以下示例创建一个kubeconfig.yaml文件,并将token替换为4中获取的值。 kubeconfig.yaml: kind: Config
apiVersion: v1
preferences: {}
clusters:
- name: internalCluster
cluster:
server: 'https://kubernetes.default.svc.cluster.local:443'
insecure-skip-tls-verify: true
users:
- name: ucs-user
user:
token: 'MIIFbAYJKo*****'
contexts:
- name: internal
context:
cluster: internalCluster
user: ucs-user
current-context: internal KubeConfig文件中的关键参数说明如下: 参数名 参数值/参数类型 说明 是否可选 server 'https://kubernetes.default.svc.cluster.local:443' APIServer的集群内访问地址。由于部分厂商集群对APIServer地址做了外部访问限制,可能导致UCS无法正常接入集群,因此建议使用集群内访问地址。 必选 insecure-skip-tls-verify true 如使用该参数,表示跳过证书认证,参数值必须为true。 二选一 说明: 当server字段为集群内访问地址时,优选跳过证书认证。 certificate-authority-data base64加密字符串 如使用该参数,表示集群开启双向认证,参数值为经base64加密后的服务端证书。 原生K8s集群的服务端证书默认地址为master节点的“/etc/kubernetes/pki/ca.crt”。 token 字符串 用户以token方式进行认证,参数值为4中获取的token值。 三选一 说明: 优选token方式,UCS不支持除这三种方式外的其他认证方式。 client-certificate-data client-key-data base64加密字符串 用户以证书加私钥的方式进行认证。 client-certificate-data:经base64加密后的客户端证书。 client-key-data:经base64加密后的客户端私钥。 username password 字符串 用户通过用户名密码进行认证。 username:访问集群的用户名。 password:用户名对应的密码。 使用5中配置的KubeConfig文件接入集群,详细步骤请继续参考注册附着集群(公网接入)或注册附着集群(私网接入)。 使用UCS期间,创建的ServiceAccount、ClusterRole、ClusterRoleBinding对象均不能删除,否则token将会失效。 如集群不再接入UCS,可使用kubectl delete -f ucs-service-account.yaml命令删除UCS创建的SA对象。 如修改集群kubeconfig.yaml文件的server地址为集群的apiserver地址后,集群接入到UCS无法打开,解决方案请参见附着集群接入失败--排查集群kube-apiserver状态。