English | 中文
KubeSphere 支持在已有 Kubernetes 集群之上部署 KubeSphere。
- 确认现有的
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 版本进行升级。
- 确认已安装
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 升级
- 集群现有的可用内存至少在
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
- 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 环境满足以上的要求,那么可以接着执行下面的步骤了。
$ 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
以上为最小化部署,如需开启更多功能,请参考如下步骤配置相关依赖:
- 创建集群 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
- 编辑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
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 |
- 组件解耦,做成可插拔式的设计,使安装更轻量,资源消耗率更低。