# ks-installer **Repository Path**: kaiyi/ks-installer ## Basic Information - **Project Name**: ks-installer - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2021-01-03 - **Last Updated**: 2021-01-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 在 Kubernetes 集群在线部署 KubeSphere > [English](README.md) | 中文 KubeSphere 支持在已有 Kubernetes 集群之上部署 [KubeSphere](https://kubesphere.io/)。 ## 准备工作 1. 确认现有的 `Kubernetes` 版本为 `1.15.x, 1.16.x, 1.17.x`,可以执行 `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.15.0`,Kubernetes 的版本是可以安装的。如果低于 `v1.15.0` ,可以先对 K8s 版本进行升级。 2. 确认已安装 `Helm`,`2.10.0` ≤ Helm version < `3.0`。在终端执行 `helm version`,得到类似下面的输出: >> 注: helm v2.16.0 以及 v2.16.5 存在已知问题,如果已安装该版本,建议升级或更换其他版本。 ```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` 查看当前环境中的存储类型(当使用默认存储类型时,配置文件中可以不填存储相关信息). ```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 ``` 5. CSR signing 功能在 kube-apiserver 中被激活,参考 [RKE installation issue](https://github.com/kubesphere/kubesphere/issues/1925#issuecomment-591698309)。 如果你的 Kubernetes 环境满足以上的要求,那么可以接着执行下面的步骤了。 ## 部署 KubeSphere #### 最小化快速部署: ```bash $ 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 ``` 2. 编辑configmap开启相关功能: ```bash $ kubectl edit cm ks-installer -n kubesphere-system ``` > 按功能需求编辑配置文件之后,退出等待生效即可,如长时间未生效请使用如下命令查看相关日志: ```bash $ kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f ``` ## 升级 1. 获取 2.1.1 的 YAML 文件,若服务器提示无法访问 GitHub,可以将静态文件拷贝至服务器执行。 ```bash $ wget https://raw.githubusercontent.com/kubesphere/ks-installer/master/kubesphere-minimal.yaml ``` 2. 编辑 `kubesphere-minimal.yaml` 中 config 部分,与旧版本的存储类型配置与组件开启状态等配置需保持一致。确认配置同步后,使用 kubectl 执行如下命令进行升级。 ``` $ kubectl apply -f kubesphere-minimal.yaml ``` > 提示:不再提供 Harbor、Gitlab 部署,如需要相关功能,建议通过 [Harbor](https://github.com/goharbor/harbor-helm),[Gitlab](https://about.gitlab.com/install/)官方文档进行部署。 ## 参数说明
| 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 |