Skip to content

Latest commit

 

History

History
349 lines (315 loc) · 15.7 KB

README_zh.md

File metadata and controls

349 lines (315 loc) · 15.7 KB

在 Kubernetes 集群在线部署 KubeSphere

English | 中文

KubeSphere 支持在已有 Kubernetes 集群之上部署 KubeSphere

准备工作

  1. 确认现有的 Kubernetes 版本为 1.15.x, 1.16.x, 1.17.x,可以执行 kubectl version 来确认 :
root@kubernetes:~# kubectl version
Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.1", GitCommit:"4485c6f18cee9a5d3c3b4e523bd27972b1b53892", GitTreeState:"clean", BuildDate:"2019-07-18T09:09:21Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.1", GitCommit:"4485c6f18cee9a5d3c3b4e523bd27972b1b53892", GitTreeState:"clean", BuildDate:"2019-07-18T09:09:21Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}

注意输出结果中的 Server Version 这行,如果显示 GitVersion 大于 v1.15.0,Kubernetes 的版本是可以安装的。如果低于 v1.15.0 ,可以先对 K8s 版本进行升级。

  1. 确认已安装 Helm,并且 Helm 的版本至少为 2.10.0。在终端执行 helm version,得到类似下面的输出

注: helm v2.16.0无法创建job,如果已安装该版本,建议升级或更换其他版本。

root@kubernetes:~# helm version
Client: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}

如果提示 helm: command not found, 表示还未安装 Helm。参考这篇 Install Helm 安装 Helm, 安装完成后执行 helm init .

如果 helm 的版本比较老 (<2.10.0), 需要首先升级,参考 Upgrading Tiller 升级

  1. 集群现有的可用内存至少在 10G 以上。 如果是执行的 allinone 安装,那么执行 free -g 可以看下可用资源
root@kubernetes:~# free -g
              total        used        free      shared  buff/cache   available
Mem:              16          4          10           0           3           2
Swap:             0           0           0
  1. KubeSphere 需配合持久化存储使用,执行kubectl get sc 查看当前环境中的存储类型(当使用默认存储类型时,配置文件中可以不填存储相关信息).
root@kubernetes:~$ kubectl get sc
NAME                      PROVISIONER               AGE
ceph                      kubernetes.io/rbd         3d4h
csi-qingcloud (default)   disk.csi.qingcloud.com    54d
glusterfs                 kubernetes.io/glusterfs   3d4h

如果你的 Kubernetes 环境满足以上的要求,那么可以接着执行下面的步骤了。

部署 KubeSphere

最小化快速部署:

 $ kubectl apply -f https://raw.githubusercontent.com/kubesphere/ks-installer/master/kubesphere-minimal.yaml

 # 查看部署进度及日志
 $ kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f

部署完成后可查看控制台的服务端口,使用 IP:consolePort(default: 30880) 访问 KubeSphere UI 界面,默认的集群管理员账号为 admin/P@88w0rd

$ kubectl get svc -n kubesphere-system    
# 查看 ks-console 服务的端口  默认为 NodePort: 30880

以上为最小化部署,如需开启更多功能,请参考如下步骤配置相关依赖:

安装功能组件:

  1. 创建集群 etcd 的证书 Secret。(开启etcd监控需设置)

注:根据集群实际 etcd 证书位置创建;

  • 若 etcd 已经配置过证书,则参考如下创建(以下命令适用于 Kubeadm 创建的 Kubernetes 集群环境):
$ kubectl create ns kubesphere-monitoring-system
$ kubectl -n kubesphere-monitoring-system create secret generic kube-etcd-client-certs  \
--from-file=etcd-client-ca.crt=/etc/kubernetes/pki/etcd/ca.crt  \
--from-file=etcd-client.crt=/etc/kubernetes/pki/etcd/healthcheck-client.crt  \
--from-file=etcd-client.key=/etc/kubernetes/pki/etcd/healthcheck-client.key
  • 若 etcd 没有配置证书,则创建空 Secret:
$ kubectl -n kubesphere-monitoring-system create secret generic kube-etcd-client-certs
  1. 编辑configmap开启相关功能:
$ kubectl edit cm ks-installer -n kubesphere-system

按功能需求编辑配置文件之后,退出等待生效即可,如长时间未生效请使用如下命令查看相关日志:

$ kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f

升级

$ wget https://raw.githubusercontent.com/kubesphere/ks-installer/master/kubesphere-minimal.yaml
# 编辑kubesphere-minimal.yaml中config部分,与旧版本存储及组件开启状态等配置保持一致
$ kubectl apply -f kubesphere-minimal.yaml

不再提供Harbor、Gitlab部署,如需要相关功能,建议通过HarborGitlab官方文档进行部署

参数说明

Parameter Description Default
persistence storageClass 存储类型,不填则使用默认存储类型(sc) “”
etcd monitoring 是否开启etcd监控 False
endpointIps etcd地址,如etcd为集群,地址以逗号分离(如:192.168.0.7,192.168.0.8,192.168.0.9)
port etcd端口 (默认2379,如使用其它端口,请配置此参数) 2379
tlsEnable 是否开启etcd TLS证书认证(True / False) True
common mysqlVolumeSize mysql存储卷大小,设置后不可修改 20Gi
minioVolumeSize minio存储卷大小,设置后不可修改 20Gi
etcdVolumeSize etcd存储卷大小,设置后不可修改 20Gi
openldapVolumeSize openldap存储卷大小,设置后不可修改 2Gi
redisVolumSize redis存储卷大小,设置后不可修改 2Gi
console enableMultiLogin 是否启动多点登录 (True / False) False
port console登录端口 (NodePort) 30880
monitoring prometheusReplicas prometheus副本数 1
prometheusMemoryRequest prometheus内存请求空间 400Mi
prometheusVolumeSize prometheus持久化存储空间 20Gi
grafana.enabled 是否开启grafana (True / False) False
logging
(至少 56 M, 2.76 G)
enabled 是否启用日志组件elasticsearch   (True / False) False
elasticsearchMasterReplicas elasticsearch主节点副本数 1
elasticsearchDataReplicas elasticsearch数据节点副本数 1
logsidecarReplicas 日志sidecar副本数 2
elasticsearchVolumeSize elasticsearch数据盘尺寸 20Gi
logMaxAge 日志留存时间(天) 7
elkPrefix 日志索引  logstash 
containersLogMountedPath 容器日志挂载路径 “”
kibana.enabled 是否启动kibana  (True / False) False
devops
(集群的可用资源至少 0.47 core, 8.6 G )
enabled 是否启用DevOps功能  (True / False) False
jenkinsMemoryLim jenkins内存限制 2Gi
jenkinsMemoryReq jenkins内存请求 1500Mi
jenkinsVolumeSize jenkins持久化存储空间 8Gi
jenkinsJavaOpts_Xms jenkins  jvm参数(Xms) 512m
jenkinsJavaOpts_Xmx jenkins  jvm参数(Xmx) 512m
jenkinsJavaOpts_MaxRAM jenkins  jvm参数(MaxRAM) 2Gi
sonarqube.enabled 是否启用 SonarQube 的安装(True / False) False
openpitrix
(至少 0.3 core, 300 MiB)
enable 平台的应用商店与应用模板、应用管理都基于 OpenPitrix,建议开启安装(True / False) False
metrics_server
(至少 5 m, 44.35 MiB)
enabled 是否安装metrics_server    (True / False) False
servicemesh
(至少 2 core, 3.6 G)
enabled 是否启用微服务治理功能  (True / False) False
notification
(Notification 和 Alerting 一共至少需要 0.08 core, 80 M)
enabled 是否启用通知功能 (True / False) False
alerting enabled 是否启用告警功能 (True / False) False

未来计划

  • 组件解耦,做成可插拔式的设计,使安装更轻量,资源消耗率更低。