导入 Google GKE 集群

本教程演示如何使用直接连接方法导入 GKE 集群。如果您想使用代理连接方法,请参考代理连接

准备工作

  • 您需要准备一个已安装 KubeSphere 的 Kubernetes 集群,并将该集群设置为主集群。有关如何准备主集群的更多信息,请参考准备主集群
  • 您需要准备一个 GKE 集群,用作成员集群。

导入 GKE 集群

步骤 1:在 GKE 集群上部署 KubeSphere

您需要首先在 GKE 集群上部署 KubeSphere。有关如何在 GKE 上部署 KubeSphere 的更多信息,请参考在 Google GKE 上部署 KubeSphere

步骤 2:准备 GKE 成员集群

  1. 为了通过主集群管理,您需要使它们之间的 jwtSecret 相同。首先,在主集群上执行以下命令获取 jwtSecret

    1. kubectl -n kubesphere-system get cm kubesphere-config -o yaml | grep -v "apiVersion" | grep jwtSecret

    输出类似如下:

    1. jwtSecret: "QVguGh7qnURywHn2od9IiOX6X8f8wK8g"
  2. admin 身份登录 GKE 的 KubeSphere Web 控制台。点击左上角的平台管理,选择集群管理

  3. 访问定制资源定义,在搜索栏中输入 ClusterConfiguration,然后按下键盘上的回车键。点击 ClusterConfiguration 访问其详情页。

  4. 点击右侧的 导入 Google GKE 集群 - 图1,选择编辑 YAML 来编辑 ks-installer

  5. ks-installer 的 YAML 文件中,将 jwtSecret 的值改为如上所示的相应值,将 clusterRole 的值改为 member

    1. authentication:
    2. jwtSecret: QVguGh7qnURywHn2od9IiOX6X8f8wK8g
    1. multicluster:
    2. clusterRole: member

    备注

    请确保使用自己的 jwtSecret。您需要等待一段时间使更改生效。

步骤 3:创建新的 kubeconfig 文件

  1. 在 GKE Cloud Shell 终端运行以下命令:

    1. TOKEN=$(kubectl -n kubesphere-system get secret $(kubectl -n kubesphere-system get sa kubesphere -o jsonpath='{.secrets[0].name}') -o jsonpath='{.data.token}' | base64 -d)
    2. kubectl config set-credentials kubesphere --token=${TOKEN}
    3. kubectl config set-context --current --user=kubesphere
  2. 运行以下命令获取新的 kubeconfig 文件:

    1. cat ~/.kube/config

    输出类似如下:

    1. apiVersion: v1
    2. clusters:
    3. - cluster:
    4. certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURLekNDQWhPZ0F3SUJBZ0lSQUtPRUlDeFhyWEdSbjVQS0dlRXNkYzR3RFFZSktvWklodmNOQVFFTEJRQXcKTHpFdE1Dc0dBMVVFQXhNa1pqVTBNVFpoTlRVdFpEZzFZaTAwWkdZNUxXSTVNR1V0TkdNeE0yRTBPR1ZpWW1VMwpNQjRYRFRJeE1ETXhNVEl5TXpBMU0xb1hEVEkyTURNeE1ESXpNekExTTFvd0x6RXRNQ3NHQTFVRUF4TWtaalUwCk1UWmhOVFV0WkRnMVlpMDBaR1k1TFdJNU1HVXROR014TTJFME9HVmlZbVUzTUlJQklqQU5CZ2txaGtpRzl3MEIKQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdkVHVGtKRjZLVEl3QktlbXNYd3dPSnhtU3RrMDlKdXh4Z1grM0dTMwpoeThVQm5RWEo1d3VIZmFGNHNWcDFzdGZEV2JOZitESHNxaC9MV3RxQk5iSlNCU1ppTC96V3V5OUZNeFZMS2czCjVLdnNnM2drdUpVaFVuK0tMUUFPdTNUWHFaZ2tTejE1SzFOSU9qYm1HZGVWSm5KQTd6NTF2ZkJTTStzQWhGWTgKejJPUHo4aCtqTlJseDAvV0UzTHZEUUMvSkV4WnRCRGFuVFU0anpHMHR2NGk1OVVQN2lWbnlwRHk0dkFkWm5mbgowZncwVnplUXJqT2JuQjdYQTZuUFhseXZubzErclRqakFIMUdtU053c1IwcDRzcEViZ0lXQTNhMmJzeUN5dEJsCjVOdmJKZkVpSTFoTmFOZ3hoSDJNenlOUWVhYXZVa29MdDdPN0xqYzVFWlo4cFFJREFRQUJvMEl3UURBT0JnTlYKSFE4QkFmOEVCQU1DQWdRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVUVyVkJrc3MydGV0Qgp6ZWhoRi92bGdVMlJiM2N3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUdEZVBVa3I1bDB2OTlyMHZsKy9WZjYrCitBanVNNFoyOURtVXFHVC80OHBaR1RoaDlsZDQxUGZKNjl4eXFvME1wUlIyYmJuTTRCL2NVT1VlTE5VMlV4VWUKSGRlYk1oQUp4Qy9Uaks2SHpmeExkTVdzbzVSeVAydWZEOFZob2ZaQnlBVWczajdrTFgyRGNPd1lzNXNrenZ0LwpuVUlhQURLaXhtcFlSSWJ6MUxjQmVHbWROZ21iZ0hTa3MrYUxUTE5NdDhDQTBnSExhMER6ODhYR1psSi80VmJzCjNaWVVXMVExY01IUHd5NnAwV2kwQkpQeXNaV3hZdFJyV3JFWUhZNVZIanZhUG90S3J4Y2NQMUlrNGJzVU1ZZ0wKaTdSaHlYdmJHc0pKK1lNc3hmalU5bm5XYVhLdXM5ZHl0WG1kRGw1R0hNU3VOeTdKYjIwcU5RQkxhWHFkVmY0PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
    5. server: https://130.211.231.87
    6. name: gke_grand-icon-307205_us-central1-c_cluster-3
    7. contexts:
    8. - context:
    9. cluster: gke_grand-icon-307205_us-central1-c_cluster-3
    10. user: gke_grand-icon-307205_us-central1-c_cluster-3
    11. name: gke_grand-icon-307205_us-central1-c_cluster-3
    12. current-context: gke_grand-icon-307205_us-central1-c_cluster-3
    13. kind: Config
    14. preferences: {}
    15. users:
    16. - name: gke_grand-icon-307205_us-central1-c_cluster-3
    17. user:
    18. auth-provider:
    19. config:
    20. cmd-args: config config-helper --format=json
    21. cmd-path: /usr/lib/google-cloud-sdk/bin/gcloud
    22. expiry-key: '{.credential.token_expiry}'
    23. token-key: '{.credential.access_token}'
    24. name: gcp
    25. - name: kubesphere
    26. user:
    27. token: eyJhbGciOiJSUzI1NiIsImtpZCI6InNjOFpIb3RrY3U3bGNRSV9NWV8tSlJzUHJ4Y2xnMDZpY3hhc1BoVy0xTGsifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlc3BoZXJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJlc3BoZXJlLXRva2VuLXpocmJ3Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6Imt1YmVzcGhlcmUiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyMGFmZGI1Ny01MTBkLTRjZDgtYTAwYS1hNDQzYTViNGM0M2MiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXNwaGVyZS1zeXN0ZW06a3ViZXNwaGVyZSJ9.ic6LaS5rEQ4tXt_lwp7U_C8rioweP-ZdDjlIZq91GOw9d6s5htqSMQfTeVlwTl2Bv04w3M3_pCkvRzMD0lHg3mkhhhP_4VU0LIo4XeYWKvWRoPR2kymLyskAB2Khg29qIPh5ipsOmGL9VOzD52O2eLtt_c6tn-vUDmI_Zw985zH3DHwUYhppGM8uNovHawr8nwZoem27XtxqyBkqXGDD38WANizyvnPBI845YqfYPY5PINPYc9bQBFfgCovqMZajwwhcvPqS6IpG1Qv8TX2lpuJIK0LLjiKaHoATGvHLHdAZxe_zgAC2cT_9Ars3HIN4vzaSX0f-xP--AcRgKVSY9g

步骤 4:导入 GKE 成员集群

  1. admin 身份登录主集群的 KubeSphere Web 控制台。点击左上角的平台管理,选择集群管理。在集群管理页面,点击添加集群

  2. 按需输入基本信息,然后点击下一步

  3. 连接方式选择直接连接 Kubernetes 集群。填写 GKE 的新 kubeconfig,然后点击创建

  4. 等待集群初始化完成。