KubeSphere安装部署
1 Kubesphere简介
KubeSphere是在 Kubernetes 之上构建的企业级分布式多租户容器管理平台,提供简单易用的操作界面以及向导式操作方式,在降低用户使用容器调度平台学习成本的同时,极大减轻开发、测试、运维的日常工作的复杂度,旨在解决 Kubernetes 本身存在的存储、网络、安全和易用性等痛点。除此之外,平台已经整合并优化了多个适用于容器场景的功能模块,以完整的解决方案帮助企业轻松应对敏捷开发与自动化运维、微服务治理、多租户管理、工作负载和集群管理、服务与网络管理、应用编排与管理、镜像仓库管理和存储管理等业务场景。
1.1 产品功能
KubeSphere 为用户提供了一个具备极致体验的 Web 控制台,让您能够像使用任何其他互联网产品一样,快速上手各项功能与服务。KubeSphere 目前集成了应用负载、服务与网络、应用管理、资源管理和平台管理共五大模块,以下从专业的角度为您详解各个模块的功能服务:
1.2 部署模式
KubeSphere 部署支持 all-in-one
和 multi-node
两种部署模式, KubeSphere Installer 采用 Ansible 对部署目标机器及部署流程进行集中化管理配置。采用预配置模板,可以在部署前通过对相关配置文件进行自定义实现对部署过程的预配置,以适应不同的 IT 环境,帮助您快速部署 KubeSphere。
- KubeSphere 集群中由于部署服务的不同,分为管理节点和计算节点两个角色。
- 当进行 all-in-one 模式进行单节点部署时,这个节点既是管理节点,也是计算节点。
- 当进行 multi-node 模式部署多节点集群时,可在配置文件中设置集群角色。
- 由于部署过程中需要更新操作系统和从镜像仓库拉取镜像,因此必须能够访问外网。无外网环境需先下载离线安装包安装。
- 如果是新装系统,在 Software Selection 界面需要把 OpenSSH Server 选上。
2 部署
2.1 环境准备
- 使用 kubeadm 搭建的 Kubernetes 1.15.3 版本集群,Kubernetes 版本要求为 1.13.0 ≤ K8s Version ≤ 1.16 kubernetes(3):kubeadm安装k8s1.15
- Helm v2.13.1 版本,至少为2.10 kubernetes(27):k8s包管理工具-helm(1)-安装helm
- 使用 NFS 作为集群存储后端 kubernetes(13):k8s数据持久化-pv和pvc—NFS实现
- 使用到的安装脚本地址: https://github.com/kubesphere/ks-installer
- 集群现有的可用内存至少在
10G
以上
# kubectl version | grep Server
Server Version: version.Info{Major:”1″, Minor:”15″, GitVersion:”v1.15.3″, GitCommit:”2d3c76f9091b6bec110a5e63777c332469e0cba2″, GitTreeState:”clean”, BuildDate:”2019-08-19T11:05:50Z”, GoVersion:”go1.12.9″, Compiler:”gc”, Platform:”linux/amd64″}
# helm version
Client: &version.Version{SemVer:”v2.13.1″, GitCommit:”618447cbf203d147601b4b9bd7f8c37a5d39fbb4″, GitTreeState:”clean”}
Server: &version.Version{SemVer:”v2.13.1″, GitCommit:”618447cbf203d147601b4b9bd7f8c37a5d39fbb4″, GitTreeState:”clean”}
2.1.1 创建StorageClass
首先需要确保集群中有一个默认的 StorageClass 资源对象,关于 StorageClass 的使用可以查看
kubernetes(14):k8s基于NFS部署storageclass实现pv自动供给
其中 annotations 下面的 storageclass.kubernetes.io/is-default-class: “true” 是必须的:
2.2 清理环境
建议先停止已经安装的prometheus/gitlab/Jenkins/sonarqube/harbor/ metrics_server/node-exporter/ Dashboard会有冲突
2.3 安装
2.3.1 创建命名空间
首先,在集群中创建名为 kubesphere-system 和 kubesphere-monitoring-system 的namespace:
2.3.2 创建集群ca证书secret
注:按照当前集群 ca.crt 和 ca.key 证书路径创建(kubeadm 创建集群的证书路径一般为/etc/kubernetes/pki)
2.3.3 创建etcd证书secret
注:以集群实际 etcd 证书位置创建;若 etcd 没有配置证书,则创建空secret
从这里我们也可以获得 etcd 集群相关的证书。
2.3.4 下载代码
2.3.5 在Kubernetes 集群部署 KubeSphere。
版本不一部署方式也不一样,我这里是通过配置文件确定部署模块的,把Jenkins、gitlab、harbor、sonarqube、监控一堆都部署上
修改cat config.yaml 文件
# cat config.yaml
—
apiVersion: v1
data:
ks-config.yaml: |
—
kubernetes:
apiserverAddr: 10.6.76.25:6443 # master addr or master’s lb addr
etcd:
endpointIps: 10.6.76.25
port: 2379
tlsEnable: True
persistence:
storageClass: “kubesphere-data”
common:
enableHA: True
mysqlVolumeSize: 20Gi
minioVolumeSize: 20Gi
etcdVolumeSize: 20Gi
openldapVolumeSize: 2Gi
redisVolumSize: 2Gi
metrics-server:
enabled: True
console:
enableMultiLogin: True # enable/disable multi login
port: 30880
replicas: 1
monitoring:
prometheusReplicas: 1
prometheusMemoryRequest: 400Mi
prometheusVolumeSize: 20Gi
grafana:
enabled: True
logging:
enabled: True
elasticsearchMasterReplica: 1
elasticsearchDataReplica: 1
elasticsearchVolumeSize: 20Gi
logMaxAge: 7
elkPrefix: logstash
containersLogMountedPath: “”
kibana:
enabled: True
openpitrix:
enabled: True
devops:
enabled: True
jenkinsMemoryLim: 2Gi
jenkinsMemoryReq: 1500Mi
jenkinsVolumeSize: 8Gi
jenkinsJavaOpts_Xms: 512m
jenkinsJavaOpts_Xmx: 512m
jenkinsJavaOpts_MaxRAM: 2g
sonarqube:
enabled: True
servicemesh:
enabled: True
notification:
enabled: True
alerting:
enabled: True
harbor:
enabled: True
domain: harbor.devops.kubesphere.local
gitlab:
enabled: True
domain: gitlab.devops.kubesphere.local
kind: ConfigMap
metadata:
name: ks-installer
namespace: kubesphere-system
cat config.yaml
2.3.6 查看部署日志
#这个不同版本也不一样,实在不行就直接 kubectl -n kubesphere-system logs -f 部署的pod
2.3.7 所需镜像
注意查看失败的pod信息,如果有镜像不能正确拉取,可以通过ks-installer/scripts/download-docker-images.sh下载 或者根据提示失败的node上拉取
3 登录使用kubesphere
3.1 登录
查看控制台的服务端口,使用 IP:30880
访问 KubeSphere UI 界面,默认的集群管理员账号为 admin/P@88w0rd
。
3.2 prometheus监控
ks整合了prometheus监控,多种维度监控
设置一个测试告警
配置起来非常方便
邮件发送
3.3 Jenkins
Jenkins 是一款由 Java 开发的开源的持续集成工具,KubeSphere 内置的 Jenkins 服务端可参考如下步骤登录访问。
1、Jenkins Dashboard 服务暴露的端口 (NodePort) 默认为 30180
,若在云平台部署 KubeSphere,则需要进行端口转发和添加防火墙规则,确保外网流量能够正常通过该端口。
2、然后访问公网 IP 和端口号即 http://${EIP}:${NODEPORT}
,Jenkins 已对接了 KubeSphere 的 LDAP,因此可使用用户名 admin
和 KubeSphere 集群管理员的密码 (初始密码为 P@88w0rd) 登录 Jenkins Dashboard。
说明:若部署在私有环境,则可以在集群的任意节点通过 http://{$
节点
IP}:30180
进行访问。
3.4 sonarqube
SonarQube 是一个开源的代码分析软件,用来持续分析和检测代码的质量,支持检测 Java、C#、C、C++、JavaScript 等二十多种编程语言。通过 SonarQube 可以检测出项目中潜在的 Bug、漏洞、代码规范、重复代码、缺乏单元测试等问题,SonarQube 提供了 UI 界面进行查看和管理。KubeSphere 安装时默认内置了 SonarQube 服务,可参考如下步骤,访问内置 SonarQube。
在浏览器中访问 SonarQube,初次登录的默认账号密码为 admin / admin
e7a66041f8920011049207b480cef50b54474c8a
3.5 gitlab
在浏览器中可以通过 {$
域名
}:{$NodePort}
即 http://gitlab.devops.kubesphere.local:30080
访问 GitLab 登录页面。默认的 GitLab 用户名和密码为 admin / P@88w0rd
。
这个一定要域名解析啊
3.6 harbor
可以域名解析
http://harbor.devops.kubesphere.local:30280
输入默认的管理员用户名和密码 admin / Harbor12345
登录 Harbor。
其它用户登录的账号密码与 KubeSphere 的 LDAP 用户账户体系一致。
3.7 elk日志中心
3.8 kubectl控制台
相当于命令行