在 AWS EKS 上部署 KubeSphere

    AWS EKS 没有像 GKE CloudShell 这样的 Web 终端,因此我们必须先安装 aws cli。下面以 linux 为例,macOS 和其他操作系统可参考 EKS 入门

    使用检查安装版本。

    1. $ aws --version
    2. aws-cli/2.1.2 Python/3.7.3 Linux/4.18.0-193.6.3.el8_2.x86_64 exe/x86_64.centos.8

    准备 EKS 集群

    1. 在 AWS 上创建一个标准的 Kubernetes 集群是安装 KubeSphere 的前提条件,转到导航菜单,然后参考下图创建集群。

    2. 配置集群页面,配置以下集群信息:

      config-cluster-page

      配置选项说明:

      • 名称:集群的唯一名称。
      • Kubernetes 版本:指定创建集群的 Kubernetes 版本。
      • 集群服务角色:选择通过创建 Amazon EKS 集群 IAM 角色创建的 IAM 角色。
      • Secrets 加密(可选):选择使用 AWS 密钥管理服务(AWS KMS)启用 Kubernetes secrets 的信封加密。如果启用信封加密,Kubernetes secrets 将使用您选择的客户主密钥(CMK)进行加密。CMK 必须是对称的,在与集群相同的区域中创建,如果 CMK 是在不同的帐户中创建的,则用户必须有权访问 CMK。有关详细信息,请在 AWS 密钥管理服务开发人员指南中参阅 。
      • 使用 AWS KMS CM 进行 Kubernetes 秘钥加密需要 Kubernetes 1.13 或更高版本。如果密钥不存在,则必须先创建一个。有关更多信息,请参见创建密钥
      • 标签(可选):将所有标签添加到您的集群。有关更多信息,请参阅。
    3. 选择下一步,在指定联网页面上,为以下字段选择值:

      • VPC:您之前在创建 Amazon EKS 集群 VPC 中创建的 VPC,您可以在下拉列表中找到 VPC 的名称。

      • 子网:默认情况下,上一字段中指定的 VPC 中的可用子网是预选的。选择您不想承载集群资源的任何子网,例如工作节点或负载均衡器。

      • 安全组:通过 中生成的 AWS CloudFormation 输出的 SecurityGroups 值。该安全组在下拉名称中具有ControlPlaneSecurityGroup

      • 对于集群endpoints访问–选择以下选项之一:

        • 公有:仅启用对集群的 Kubernetes API server 端点的公共访问,来自集群 VPC 外部的 Kubernetes API 请求使用这个公共端点。默认情况下,允许从任何源 IP 地址进行访问,您也可以只允许一个或多个 CIDR 地址段访问,例如选择高级设置,然后选择添加源指定地址段 192.168.0.0/16 才能访问。

        • 私有:仅启用对集群的 Kubernetes API server 端点的专用访问。来自集群 VPC 内部的 Kubernetes API 请求使用这个私有 VPC 端点。

          备注

          1. 如果创建的 VPC 没有出站 Internet 访问,则必须启用私有访问。
        • 公有和私有:启用公有和私有访问。

    4. 选择下一步,在配置日志记录页面上,可以选择要启用的日志类型。默认情况下,每种日志类型均为禁用。有关更多信息,请参阅Amazon EKS 控制平面日志记录logging

    5. 选择下一步,在查看和创建页面上,查看在之前页面上输入或选择的信息。如果需要更改任何选择,请选择编辑。对设置满意后,选择创建,状态字段将显示正在创建,直到集群创建完毕。

    6. 点击添加节点组,在此集群中定义 3 个节点。

      node-group

    7. 配置节点组,注意创建。

      备注

      • 如需在 Kubernetes 上安装 KubeSphere 3.2.0,您的 Kubernetes 版本必须为:v1.19.x,v1.20.x,v1.21.x 或 v1.22.x(实验性支持)。
      • 此示例中包括 3 个节点。您可以根据自己的需求添加更多节点,尤其是在生产环境中。
      • t3.medium(2 个 vCPU,4 GB 内存)机器类型仅用于最小化安装,如果要启用可插拔组件或集群用于生产,请选择具有更大规格的机器类型。
      • 对于其他设置,您也可以根据自己的需要进行更改,也可以使用默认值。
    8. 当 EKS 集群准备就绪时,您可以使用 kubectl 连接到集群。

    我们将使用 kubectl 命令行工具与集群 API Server 进行通信。首先需要获取刚刚创建的 EKS 集群的 kubeconfig。

      1. $ aws configure
      2. AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
      3. AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
      4. Default region name [None]: region-code
      5. Default output format [None]: json
    1. 使用 AWS CLI 创建 kubeconfig 文件

      • 默认情况下,生成的配置文件在主目录中的默认 kubeconfig 路径(.kube/config)中创建,或与该位置处的现有 kubeconfig 合并。您可以使用--kubeconfig选项指定其他路径。

      • 您可以使用--role-arn选项指定 IAM 角色 ARN,以在执行 kubectl 命令时用于身份验证。否则,将使用默认 AWS CLI 或 SDK 证书链中的 IAM 实体。您可以通过运行aws sts get-caller-identity命令查看默认的 AWS CLI 或 SDK 身份。

      有关更多信息,请参阅带有 aws eks update-kubeconfig help 命令的帮助页面,或参阅AWS CLI命令参考中的update-kubeconfig。

    2. 测试您的配置。

      1. kubectl get svc

    在 EKS 上安装 KubeSphere

    • 使用 kubectl 安装 KubeSphere,以下命令仅用于默认的最小安装。

      1. kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.2.0/cluster-configuration.yaml
    • 检查安装日志:

      1. kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f
    • 安装完成后,您会看到以下消息:

    现在已经安装了 KubeSphere,您可以按照以下步骤访问 KubeSphere 的 Web 控制台。

    • 查看 ks-console 服务。

      1. kubectl get svc -n kubesphere-system
    • 执行kubectl get svc -n kubesphere-system获取您的 EXTERNAL-IP。

      1. # kubectl get svc -n kubesphere-system
      2. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
      3. ks-apiserver ClusterIP 10.100.108.212 <none> 80/TCP 6m28s
      4. ks-console LoadBalancer 10.100.160.240 ad107c54ee456744c91c8da0b9321f2c-1235661477.ap-east-1.elb.amazonaws.com 80:30880/TCP 6m25s
      5. ks-controller-manager ClusterIP 10.100.126.96 <none> 443/TCP 6m28s
      6. openldap ClusterIP None <none> 389/TCP 6m54s
    • 使用 EKS 生成的 external-ip 访问 KubeSphere 的 Web 控制台。

    启用可插拔组件(可选)

    上面的示例演示了默认的最小安装过程,要在 KubeSphere 中启用其他组件,请参阅。