更新时间:2023-07-07 GMT+08:00

获取KubeConfig

如果您的当前集群不支持直接导出KubeConfig文件,可采用以下方法获取MCP可用的KubeConfig文件。

  1. (可选)设置kubectl。

    若集群可正常执行kubectl,可跳过本步骤。

    which kubectl
    获取kubectl文件的绝对路径xxx/kubectl,获取KubeConfig文件路径yyy/config
    alias kubectl='xxx/kubectl --kubeconfig=yyy/config'

  2. 创建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

  3. 在纳管集群上进行操作。

    kubectl apply -f my-user-sa.yaml
    kubectl apply -f my-user-role.yaml
    kubectl apply -f my-user-role-binding.yaml

  4. 使用以下命令获取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

  5. 配置KubeConfig文件。

    在下面kubeconfig.json中,将“server”参数替换为1“yyy/config”文件中的“server”字段地址,“token”参数替换为4中获取的值。

    kubeconfig.json:

    kind: Config
    apiVersion: v1
    preferences: {}
    clusters:
      - name: internalCluster
        cluster:
          server: 'https://119.xxx.xxx.xxx:5443'
          insecure-skip-tls-verify: true
    users:
      - name: user
        user:
          token: 'MIIFbAYJKo*****'
    contexts:
      - name: internal
        context:
          cluster: internalCluster
          user: user
    current-context: internal

  6. 添加集群,使用5中配置的KubeConfig文件。成功添加集群后,可以删除3中创建的ClusterRole、ClusterRoleBinding以及ServiceAccount。