KubeSphere 支持直接在 Linux 上部署集群,也支持在 Kubernetes 上部署,我这里选择后者,基本的要求如下:

一、安装helm

1.1、简介

Helm 基本思想如图所示
223.1、kubesphere安装 - 图1
以下内容引用自 此篇文章
Helm 基本概念
Helm 可以理解为 Kubernetes 的包管理工具,可以方便地发现、共享和使用为Kubernetes构建的应用,它包含几个基本概念:

  • Chart:一个 Helm 包,其中包含了运行一个应用所需要的镜像、依赖和资源定义等,还可能包含 Kubernetes 集群中的服务定义
  • Release: 在 Kubernetes 集群上运行的 Chart 的一个实例。在同一个集群上,一个 Chart 可以安装很多次。每次安装都会创建一个新的 release。例如一个 MySQL Chart,如果想在服务器上运行两个数据库,就可以把这个 Chart 安装两次。每次安装都会生成自己的 Release,会有自己的 Release 名称。
  • Repository:用于发布和存储 Chart 的仓库。

1.2、安装

安装步骤如下:
(1)、安装客户端

  1. wget https://get.helm.sh/helm-v2.16.3-linux-amd64.tar.gz
  2. tar zxf helm-v2.16.3-linux-amd64.tar.gz
  3. mv linux-amd64/helm /usr/local/bin/helm

(2)、安装tiller服务端
直接执行如下命令安装

  1. helm init

不过我们会发现pod的状态是imagePullError。这是因为镜像在国外。
我们需要改成国内的镜像。

  1. kubectl edit deploy tiller-deploy -n kube-system
  2. 把镜像地址改成如下:
  3. registry.cn-hangzhou.aliyuncs.com/rookieops/tiller:v2.16.3

然后可以看到pod正常了,但是现在还没完,如果仅仅是这样,还是用不了,会报权限错误。我们需要给tiller添加权限,yaml如下:

  1. apiVersion: v1
  2. kind: ServiceAccount
  3. metadata:
  4. name: tiller
  5. namespace: kube-system
  6. ---
  7. apiVersion: rbac.authorization.k8s.io/v1beta1
  8. kind: ClusterRoleBinding
  9. metadata:
  10. name: tiller
  11. roleRef:
  12. apiGroup: rbac.authorization.k8s.io
  13. kind: ClusterRole
  14. name: cluster-admin
  15. subjects:
  16. - kind: ServiceAccount
  17. name: tiller
  18. namespace: kube-system

执行上面的清单文件,然后再给tiller打上权限,命令如下:2

  1. kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'

现在的helm就可以正常使用了。

  1. # helm version
  2. Client: &version.Version{SemVer:"v2.16.3", GitCommit:"1ee0254c86d4ed6887327dabed7aa7da29d7eb0d", GitTreeState:"clean"}
  3. Server: &version.Version{SemVer:"v2.16.3", GitCommit:"1ee0254c86d4ed6887327dabed7aa7da29d7eb0d", GitTreeState:"clean"}

二、安装storageClass

Kubernetes 支持多种 StorageClass,我这选择 NFS 作为集群的 StorageClass。
参考地址:https://github.com/kubernetes-incubator/external-storage/tree/master/nfs-client

2.1、安装nfs

安装命令如下:

  1. yum -y install nfs-utils
  2. systemctl start nfs-utils
  3. systemctl enable nfs-utils

然后创建共享目录:

  1. mkdir /data/k8s -p

配置NFS共享()

  1. # cat /etc/exports
  2. /data/k8s *(rw,sync,no_root_squash)

然后重启NFS

  1. systemctl restart nfs

2.2、部署storageclass

(1)、下载所需要的文件

  1. mkdir nfsvolume && cd nfsvolume
  2. for file in class.yaml deployment.yaml rbac.yaml ; do wget https://raw.githubusercontent.com/kubernetes-incubator/external-storage/master/nfs-client/deploy/$file ; done

(2)、修改 deployment.yaml 中的两处 NFS 服务器 IP 和目录

  1. ....
  2. env:
  3. - name: PROVISIONER_NAME
  4. value: fuseim.pri/ifs
  5. - name: NFS_SERVER
  6. value: 172.17.100.120
  7. - name: NFS_PATH
  8. value: /data/k8s
  9. volumes:
  10. - name: nfs-client-root
  11. nfs:
  12. server: 172.17.100.120
  13. path: /data/k8s

(3)、创建清单文件

  1. kubectl create -f rbac.yaml
  2. kubectl create -f class.yaml
  3. kubectl create -f deployment.yaml

然后可以看到storageclass创建成功。

  1. # kubectl get sc
  2. NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
  3. managed-nfs-storage (default) fuseim.pri/ifs Delete Immediate false 54m

(4)、把其标记为默认的storageclass

  1. kubectl patch storageclass -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

到此storageclass部署完成。

三、部署kubesphere

过程很简单,如果你的机器资源足够,建议你进行完整安装,操作步骤如下。如果你的资源不是很充足,则可以进行最小化安装,参考地址
我这里进行最小化安装。

  1. wget https://raw.githubusercontent.com/kubesphere/ks-installer/master/kubesphere-minimal.yaml
  2. kubectl apply -f kubesphere-minimal.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 部署成功.

  1. Start installing monitoring
  2. **************************************************
  3. task monitoring status is successful
  4. total: 1 completed:1
  5. **************************************************
  6. #####################################################
  7. ### Welcome to KubeSphere! ###
  8. #####################################################
  9. Console: http://172.17.100.120:30880
  10. Account: admin
  11. Password: P@88w0rd
  12. NOTES
  13. 1. After logging into the console, please check the
  14. monitoring status of service components in
  15. the "Cluster Status". If the service is not
  16. ready, please wait patiently. You can start
  17. to use when all components are ready.
  18. 2. Please modify the default password after login.
  19. #####################################################

参考文档:
1、https://kubesphere.io/docs/zh-CN/installation/install-on-k8s/