# ks-installer **Repository Path**: ethanxzw/ks-installer ## Basic Information - **Project Name**: ks-installer - **Description**: Install KubeSphere on existing kubernetes cluster - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-20 - **Last Updated**: 2020-12-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 在 Kubernetes 集群在线部署 KubeSphere > [English](README.md) | 中文 KubeSphere 支持在已有 Kubernetes 集群之上部署 [KubeSphere](https://kubesphere.io/)。 ## 准备工作 1. 确认现有的 `Kubernetes` 版本在 `>= 1.13.0, < 1.16`,KubeSphere 需要 `K8s 1.13.0` 版本之后的新特性,可以在执行 `kubectl version` 来确认 : ```bash 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.13.0`,Kubernetes 的版本是可以安装的。如果低于 `v1.13.0` ,可以查看 [Upgrading kubeadm clusters from v1.12 to v1.13](https://v1-13.docs.kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade-1-13/) 先升级下 K8s 版本。 2. 确认已安装 `Helm`,并且 `Helm` 的版本至少为 `2.10.0`。在终端执行 `helm version`,得到类似下面的输出 ```bash 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](https://helm.sh/docs/using_helm/#from-the-binary-releases) 安装 `Helm`, 安装完成后执行 `helm init` . 如果 `helm` 的版本比较老 (<2.10.0), 需要首先升级,参考 [Upgrading Tiller](https://github.com/helm/helm/blob/master/docs/install.md#upgrading-tiller) 升级 3. 集群现有的可用内存至少在 `10G` 以上。 如果是执行的 `allinone` 安装,那么执行 `free -g` 可以看下可用资源 ```bash root@kubernetes:~# free -g total used free shared buff/cache available Mem: 16 4 10 0 3 2 Swap: 0 0 0 ``` 4. (非必须) KubeSphere 最好配合持久化存储使用,执行 `kubectl get sc` 看下当前是否设置了默认的 `storageclass`. ```bash 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 1. 在 Kubernetes 集群中创建名为 `kubesphere-system` 和 `kubesphere-monitoring-system` 的 `namespace`。 ``` $ cat < 注:按照当前集群 ca.crt 和 ca.key 证书路径创建(Kubeadm 创建集群的证书路径一般为 `/etc/kubernetes/pki`) ```bash $ 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 ``` 3. 创建集群 etcd 的证书 Secret。 > 注:根据集群实际 etcd 证书位置创建; - 若 etcd 已经配置过证书,则参考如下创建(以下命令适用于 Kubeadm 创建的 Kubernetes 集群环境): ``` $ 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: - It will create an empty Secret if the ETCD doesn'st have a configured certificate (The following command has been tested in the Kubernetes created by Kubeadm) ``` $ kubectl -n kubesphere-monitoring-system create secret generic kube-etcd-client-certs ``` 4. 克隆 kubesphere-installer 仓库至本地。 ``` $ git clone https://github.com/kubesphere/ks-installer.git ``` 5. 进入 ks-installer,然后在 Kubernetes 集群部署 KubeSphere。 ``` $ cd deploy $ vim kubesphere.yaml # 根据下方的参数说明列表,编辑 kubesphere.yaml 中 kubesphere-config 为当前集群参数信息(若etcd 无证书,设置 etcd_tls_enable: False)。 $ kubectl apply -f kubesphere.yaml ``` 6. 查看部署日志。 ``` $ kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l job-name=kubesphere-installer -o jsonpath='{.items[0].metadata.name}') -f ``` 7. 查看控制台的服务端口,使用 `IP:30880` 访问 KubeSphere UI 界面,默认的集群管理员账号为 `admin/P@88w0rd`。 ``` $ kubectl get svc -n kubesphere-system # 查看 ks-console 服务的端口 默认为 NodePort: 30880 ``` ![](https://pek3b.qingstor.com/kubesphere-docs/png/20190912002602.png) ## 参数说明
参数 描述 默认值
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导入本地仓库中)
## 未来计划 - 支持多个公有云的网络插件与存储插件; - 组件解耦,做成可插拔式的设计,使安装更轻量,资源消耗率更低。