1. 创建标准托管ACK集群

    • v1.16.9-aliyun.1
    • Docker 19.03.5
    • Terway(根据需求可以替换为Flannel)
    • 存储插件CSI
    • 其他的诸如NAT,交换机,Ingress随需要设置就好
  2. 选择集群中使用的storageClass

    • NAS (优点是不用修改Kubesphere的requestVolume,但是需要事先创建)

    • 云盘(ACK安装好后可直接使用,但是因为不允许创建小于2G的磁盘,所以我们需要修改Kubesphere中的VolumeSize为20Gi)

 ```
     mysqlVolumeSize: 20Gi
     minioVolumeSize: 20Gi
     etcdVolumeSize: 20Gi
     openldapVolumeSize: 20Gi
     redisVolumSize: 20Gi
     prometheusVolumeSize: 20Gi
     elasticsearchMasterVolumeSize: 20Gi
     elasticsearchDataVolumeSize: 20Gi
     jenkinsVolumeSize: 20Gi
     postgresqlVolumeSize: 20Gi
 ```
  • 安装前需要确认集群有默认的 StorageClass。举个例子,如下将集群的 openebs-hostpath 设置为默认的 StorageClass(实际安装时可根据您自己集群的存储类型进行设置):
kubectl patch storageclass openebs-hostpath -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
storageclass.storage.k8s.io/openebs-hostpath patched
  • 如果不把某个SC设置为默认,那需要在 Kubesphere 的安装 yaml 文件中指明,假设 openebs-hostpath 是集群已有的一种存储类型。
 ```
     persistence:
       storageClass: "openebs-hostpath"    
 ```
  1. 安装helm2.16.3
    • 客户端不赘述
    • RBAC
 ```yaml
 ---
 apiVersion: v1
 kind: ServiceAccount
 metadata:
   name: tiller
   namespace: kube-system
 ---
 apiVersion: rbac.authorization.k8s.io/v1beta1
 kind: ClusterRoleBinding
 metadata:
   name: tiller
 roleRef:
   apiGroup: rbac.authorization.k8s.io
   kind: ClusterRole
   name: cluster-admin
 subjects:
   - kind: ServiceAccount
     name: tiller
     namespace: kube-system
 ```

  • Helm Init
 ```sh
 helm init --service-account tiller --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.16.3
 ```
  1. 安装 Kubesphere,请参考 Install KubeSphere on existing K8s
    • 部署刚才修改过的yaml文件
 ```sh
 kubectl apply -f  kubesphere-minimal.yaml
 ```
  1. 重头戏,请特别注意 (自建集群没有出现以下问题)
    • 不管在安装前测试了多少次SC,PVC都可以正常绑定。但是一旦开始安装Kubesphere,PVC就会慢慢失效,逐渐Pending。这时候你会发现,你用之前测试过多少次的pvc.yaml创建也一样会pending
 ```
 deployment-nas-1-755db5846b-jc87t   0/1     Pending   0          5m23s
 deployment-nas-1-7f86d9449f-c59tv   0/1     Pending   0          9m14s
 ```

  • 修改clusterrolebinding
 ```yaml
 kubectl edit clusterrolebinding admin
 
 #行位加入
 - kind: ServiceAccount
   name: admin
   namespace: kube-system
 ```
  1. 静待安装完毕
    4 天 后