导入 AWS EKS 集群

在本节中,我们将向您展示如何使用直接连接方法将 EKS 导入 KubeSphere。

备注

如果您打算使用代理连接导入 EKS,则可以跳过本章节并按照代理连接的文档逐步进行。

Amazon EKS不像标准 kubeadm 集群那样提供内置的 kubeconfig 文件。但是您可以通过参考此文档自动创建 kubeconfig。生成的 kubeconfig 将如下所示,

  1. apiVersion: v1
  2. clusters:
  3. - cluster:
  4. server: <endpoint-url>
  5. certificate-authority-data: <base64-encoded-ca-cert>
  6. name: kubernetes
  7. contexts:
  8. - context:
  9. cluster: kubernetes
  10. user: aws
  11. name: aws
  12. current-context: aws
  13. kind: Config
  14. preferences: {}
  15. users:
  16. - name: aws
  17. user:
  18. exec:
  19. apiVersion: client.authentication.k8s.io/v1alpha1
  20. command: aws
  21. args:
  22. - "eks"
  23. - "get-token"
  24. - "--cluster-name"
  25. - "<cluster-name>"
  26. # - "--role"
  27. # - "<role-arn>"
  28. # env:
  29. # - name: AWS_PROFILE
  30. # value: "<aws-profile>"

看起来不错,自动生成的 kubeconfig 只有一个问题,它要求在想要使用此 kubeconfig 的每台计算机上安装命令 aws(aws 命令行工具)。

不使用 aws 命令创建新的 kubeconfig

假设您有一个 EKS 集群,它已经安装了 KubeSphere,并且您已经按照上面的文档创建了一个自动生成的 kubeconfig。所以,现在我们可以从您的本地计算机访问 EKS。

  1. ~:# kubectl get node
  2. NAME STATUS ROLES AGE VERSION
  3. ip-10-0-47-38.cn-north-1.compute.internal Ready <none> 11h v1.18.8-eks-7c9bda
  4. ip-10-0-8-148.cn-north-1.compute.internal Ready <none> 78m v1.18.8-eks-7c9bda

上面的命令将显示您的 EKS 集群节点。

以下部分将获取由 KubeSphere 创建的 serviceaccount kubesphere 的令牌。它具有对集群的集群管理员访问权限,我们将其用作新的 kubeconfig 令牌。

  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-credentials --current --user=kubesphere

检查新的 kubeconfig。

  1. ~:# cat ~/.kube/config

如果一切正常,您将看到如下所示的新的 kubeconfig。注意用户部分,您会发现我们插入了一个新用户 KubeSphere 并将其设置为当前上下文用户。

  1. apiVersion: v1
  2. clusters:
  3. - cluster:
  4. certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZ...S0tLQo=
  5. server: https://*.sk1.cn-north-1.eks.amazonaws.com.cn
  6. name: arn:aws-cn:eks:cn-north-1:660450875567:cluster/EKS-LUSLVMT6
  7. contexts:
  8. - context:
  9. cluster: arn:aws-cn:eks:cn-north-1:660450875567:cluster/EKS-LUSLVMT6
  10. user: kubesphere
  11. name: arn:aws-cn:eks:cn-north-1:660450875567:cluster/EKS-LUSLVMT6
  12. current-context: arn:aws-cn:eks:cn-north-1:660450875567:cluster/EKS-LUSLVMT6
  13. kind: Config
  14. preferences: {}
  15. users:
  16. - name: arn:aws-cn:eks:cn-north-1:660450875567:cluster/EKS-LUSLVMT6
  17. user:
  18. exec:
  19. apiVersion: client.authentication.k8s.io/v1alpha1
  20. args:
  21. - --region
  22. - cn-north-1
  23. - eks
  24. - get-token
  25. - --cluster-name
  26. - EKS-LUSLVMT6
  27. command: aws
  28. env: null
  29. - name: kubesphere
  30. user:
  31. token: eyJhbGciOiJSUzI1NiIsImtpZCI6ImlCRHF4SlE5a0JFNDlSM2xKWnY1Vkt5NTJrcDNqRS1Ta25IYkg1akhNRmsifQ.eyJpc3M................9KQtFULW544G-FBwURd6ArjgQ3Ay6NHYWZe3gWCHLmag9gF-hnzxequ7oN0LiJrA-al1qGeQv-8eiOFqX3RPCQgbybmix8qw5U6f-Rwvb47-xA

再次检查我们的新 kubeconfig 是否可以访问 EKS。

  1. ~:# kubectl get nodes
  2. NAME STATUS ROLES AGE VERSION
  3. ip-10-0-47-38.cn-north-1.compute.internal Ready <none> 11h v1.18.8-eks-7c9bda
  4. ip-10-0-8-148.cn-north-1.compute.internal Ready <none> 78m v1.18.8-eks-7c9bda

创建新的 kubeconfig 后,我们可以使用它直接将 EKS 导入 KubeSphere。不要忘记与主集群同步 jwtSecret

eks 导入

And wola!

eks 概述