在华为云 CCE 上安装 KubeSphere

本指南将介绍如果在华为云 CCE 容器引擎上部署并使用 KubeSphere 3.0.0 平台。

华为云 CCE 环境准备

创建 Kubernetes 集群

首先按使用环境的资源需求创建 Kubernetes 集群,满足以下一些条件即可(如已有环境并满足条件可跳过本节内容):

  • 如需在 Kubernetes 上安装 KubeSphere v3.1.1,您的 Kubernetes 版本必须为:v1.17.x,v1.18.x,v1.19.x 或 v1.20.x。
  • 需要确保 Kubernetes 集群所使用的云主机的网络正常工作,可以通过在创建集群的同时自动创建使用已有弹性 IP;或者在集群创建后自行配置网络(如配置 NAT 网关)。
  • 工作节点规格建议选择 s3.xlarge.24核|8GB 配置,并按需扩展工作节点数量(通常生产环境需要 3 个及以上工作节点)。

创建公网 kubectl 证书

  • 创建完集群后,进入资源管理 > 集群管理界面,在基本信息 > 网络 面板中,绑定公网apiserver地址
  • 在右侧面板中,选择 kubectl 标签页,并在下载kubectl配置文件列表项中点击此处下载,即可获取公用可用的 kubectl 证书。

生成 Kubectl 配置文件

获取 kubectl 配置文件后,可通过 kubectl 命令行工具来验证集群连通性:

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.8", GitCommit:"9f2892aab98fe339f3bd70e3c470144299398ace", GitTreeState:"clean", BuildDate:"2020-08-15T10:08:56Z", GoVersion:"go1.14.7", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"17+", GitVersion:"v1.17.9-r0-CCE20.7.1.B003-17.36.3", GitCommit:"136c81cf3bd314fcbc5154e07cbeece860777e93", GitTreeState:"clean", BuildDate:"2020-08-08T06:01:28Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}

部署 KubeSphere

创建自定义 StorageClass

备注

由于华为 CCE 自带的 Everest CSI 组件所提供的 StorageClass csi-disk 默认指定的是 SATA 磁盘(即普通 I/O 磁盘),但实际创建的 Kubernetes 集群所配置的磁盘基本只有 SAS(高 I/O)和 SSD (超高 I/O),因此建议额外创建对应的 StorageClass(并设定为默认)以方便后续部署使用。参见官方文档 - 使用 kubectl 创建云硬盘。 以下示例展示如何创建一个 SAS(高 I/O)磁盘对应的 StorageClass:
# csi-disk-sas.yaml
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
    storageclass.kubesphere.io/support-snapshot: "false"
  name: csi-disk-sas
parameters:
  csi.storage.k8s.io/csi-driver-name: disk.csi.everest.io
  csi.storage.k8s.io/fstype: ext4
  # 绑定华为 “高I/O” 磁盘,如需 “超高I/O“ 则此值改为 SSD
  everest.io/disk-volume-type: SAS
  everest.io/passthrough: "true"
provisioner: everest-csi-provisioner
allowVolumeExpansion: true
reclaimPolicy: Delete
volumeBindingMode: Immediate

关于如何设定/取消默认 StorageClass,可参考 Kubernetes 官方文档 - 改变默认 StorageClass

通过 ks-installer 执行最小化部署

接下来就可以使用 ks-installer 在已有的 Kubernetes 集群上来部署 KubeSphere,建议首先还是以最小功能集进行安装,可执行以下命令:

kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.1.1/kubesphere-installer.yaml
kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.1.1/cluster-configuration.yaml

执行部署命令后,可以通过进入工作负载 > 容器组 Pod 界面,在右侧面板中查询 kubesphere-system 命名空间下的 Pod 运行状态了解 KubeSphere 平台最小功能集的部署状态;通过该命名空间下 ks-console-xxxx 容器的状态来了解 KubeSphere 控制台应用的可用状态。

部署 KubeSphere 最小功能集

开启 KubeSphere 外网访问

通过 kubesphere-system 命名空间下的 Pod 运行状态确认 KubeSphere 基础组件都已进入运行状态后,我们需要为 KubeSphere 控制台开启外网访问。

进入资源管理 > 网络管理,在右侧面板中选择 ks-console 更改网络访问方式,建议选用 负载均衡(LoadBalancer 访问方式(需绑定弹性公网 IP),配置完成后如下图:

开启 KubeSphere 外网访问

服务细节配置基本上选用默认选项即可,当然也可以按需进行调整:

为 KubeSphere 控制台配置负载均衡访问

通过负载均衡绑定公网访问后,即可使用给定的访问地址进行访问,进入到 KubeSphere 的登录界面并使用默认帐户(用户名 admin,密码 P@88w0rd)即可登录平台:

登录 KubeSphere 平台

通过 KubeSphere 开启附加组件

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

警告

在开启 Istio 组件之前,由于自定义资源定义 (CRD) 冲突的问题,需要先删除华为 CCE 自带的 applications.app.k8s.io ,最直接的方式是通过 kubectl 工具来完成:

kubectl delete crd applications.app.k8s.io

全部附加组件开启并安装成功后,进入集群管理界面,可以得到如下界面呈现效果,特别是在 服务组件 部分可以看到已经开启的各个基础和附加组件:

KubeSphere 全功能集管理界面


感谢您的反馈。如果您有关于如何使用 KubeSphere 的具体问题,请在 Slack 上提问。如果您想报告问题或提出改进建议,请在 GitHub 存储库中打开问题。