KubeSphere 支持在已有 Kubernetes 集群之上部署 KubeSphere。
准备工作
- 确认现有的
Kubernetes
版本在>=1.13.0
,KubeSphere 依赖Kubernetes 1.13.0
版本之后的新特性,可以在执行kubectl version
来确认 :
$ kubectl version | grep Server
Server Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.5", GitCommit:"2166946f41b36dea2c4626f90a77706f426cdea2", GitTreeState:"clean", BuildDate:"2019-03-25T15:19:22Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"linux/amd64"}
说明:注意输出结果中的
Server Version
这行,如果显示GitVersion
大于v1.13.0
,Kubernetes 的版本是可以安装的。如果低于v1.13.0
,可以查看 Upgrading kubeadm clusters from v1.12 to v1.13 先升级下 K8s 版本。
- 确认已安装
Helm
,并且Helm
的版本至少为2.10.0
。在终端执行helm version
,得到类似下面的输出$ 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
看下当前是否设置了默认的storageclass
。
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
提示:若未设置持久化存储,安装将默认使用 hostpath,该方式能顺利安装,但可能会由于 Pod 漂移带来其它问题,正式环境建议配置 StorageClass 使用持久化存储。
如果你的 Kubernetes 环境满足以上的要求,那么可以接着执行下面的步骤了。
部署 KubeSphere
- 在 Kubernetes 集群中创建名为
kubesphere-system
和kubesphere-monitoring-system
的namespace
。
$ cat <<EOF | kubectl create -f -
---
apiVersion: v1
kind: Namespace
metadata:
name: kubesphere-system
---
apiVersion: v1
kind: Namespace
metadata:
name: kubesphere-monitoring-system
EOF
- 创建 Kubernetes 集群 CA 证书的 Secret。
注:按照当前集群 ca.crt 和 ca.key 证书路径创建(Kubeadm 创建集群的证书路径一般为
/etc/kubernetes/pki
)
$ kubectl -n kubesphere-system create secret generic kubesphere-ca \
--from-file=ca.crt=/etc/kubernetes/pki/ca.crt \
--from-file=ca.key=/etc/kubernetes/pki/ca.key
- 创建 etcd 的证书 Secret。
注:根据集群实际 etcd 证书位置创建;
- 若 etcd 已经配置过证书,则参考如下创建:
$ 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(以下命令适用于 Kubeadm 创建的 Kubernetes 集群环境):
$ kubectl -n kubesphere-monitoring-system create secret generic kube-etcd-client-certs
- 克隆 kubesphere-installer 仓库至本地。
$ git clone https://github.com/kubesphere/ks-installer.git
- 进入 ks-installer,然后在 Kubernetes 集群部署 KubeSphere。
$ cd deploy
$ vim kubesphere-installer.yaml # 根据下方的参数说明列表,编辑 kubesphere-installer.yaml 中 kubesphere-config 为当前集群参数信息。(若etcd 无证书,设置 etcd_tls_enable: False)
$ kubectl apply -f kubesphere-installer.yaml
- 查看部署日志。
$ kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l job-name=kubesphere-installer -o jsonpath='{.items[0].metadata.name}') -f
- 查看控制台的服务端口,使用
IP:30880
访问 KubeSphere UI 界面,默认的集群管理员账号为admin/P@88w0rd
。
$ kubectl get svc -n kubesphere-system
# 查看 ks-console 服务的端口 默认为 NodePort: 30880
参数说明
<![if supportMisalignedColumns]> <![endif]>参数 | 描述 | 默认值 | |
kube_apiserver_host | 当前集群kube-apiserver地址(ip:port) | ||
etcd_tls_enable | 是否开启etcd TLS证书认证(True / False) | True | |
etcd_endpoint_ips | etcd地址,如etcd为集群,地址以逗号分离(如:192.168.0.7,192.168.0.8,192.168.0.9) | ||
etcd_port | etcd端口 (默认2379,如使用其它端口,请配置此参数) | 2379 | |
disableMultiLogin | 是否关闭多点登录 (True / False) | True | |
elk_prefix | 日志索引 | logstash | |
keep_log_days | 日志留存时间(天) | 7 | |
metrics_server_enable | 是否安装metrics_server (True / False) | True | |
istio_enable | 是否安装istio (True / False) | True | |
persistence | enable | 是否启用持久化存储 (True / False)(非测试环境建议开启数据持久化) | |
storageClass | 启用持久化存储要求环境中存在已经创建好的 StorageClass(默认为空,则使用 default StorageClass) | “” | |
containersLogMountedPath(可选) | 容器日志挂载路径 | “/var/lib/docker/containers” | |
external_es_url(可选) | 外部es地址,支持对接外部es用 | ||
external_es_port(可选) | 外部es端口,支持对接外部es用 | ||
local_registry (离线部署使用) | 离线部署时,对接本地仓库 (使用该参数需将安装镜像使用scripts/download-docker-images.sh导入本地仓库中) |
未来计划
- 支持多个公有云的网络插件与存储插件;
- 组件解耦,做成可插拔式的设计,使安装更轻量,资源消耗率更低。
当前内容版权归 KubeSphere 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 KubeSphere .