1,kubesphere简介
1.1 kubesphere官网
https://kubesphere.com.cn/
1.2 什么是 KubeSphere
KubeSphere 是在 Kubernetes 之上构建的以应用为中心的企业级分布式容器平台,提供简单易用的操作界面以及向导式操作方式,在降低用户使用容器调度平台学习成本的同时,极大减轻开发、测试、运维的日常工作的复杂度,旨在解决 Kubernetes 本身存在的存储、网络、安全和易用性等痛点。除此之外,平台已经整合并优化了多个适用于容器场景的功能模块,以完整的解决方案帮助企业轻松应对敏捷开发与自动化运维、DevOps、微服务治理、灰度发布、多租户管理、工作负载和集群管理、监控告警、日志查询与收集、服务与网络、应用商店、镜像构建与镜像仓库管理和存储管理等多种业务场景。后续版本还将提供和支持多集群管理、大数据、人工智能等更为复杂的业务场景。
KubeSphere 从项目初始阶段就采用开源的方式来进行项目的良性发展,相关的项目源代码和文档都在 GitHub 可见。KubeSphere 支持部署和运行在包括公有云、私有云、VM、BM 和 Kubernetes 等任何基础设施之上,并且支持在线安装与离线安装,目前已在 阿里云、腾讯云、华为云、青云、AWS、Kubernetes 上进行过部署测试。
1.3 平台功能
KubeSphere 作为开源的企业级全栈化容器平台,为用户提供了一个具备极致体验的 Web 控制台,让您能够像使用任何其他互联网产品一样,快速上手各项功能与服务。KubeSphere 目前提供了工作负载管理、微服务治理、DevOps 工程、Source to Image/Binary to Image、多租户管理、多维度监控、日志查询与收集、告警通知、服务与网络、应用管理、基础设施管理、镜像管理、应用配置密钥管理等功能模块,开发了适用于物理机部署 Kubernetes 的 负载均衡器插件 Porter,并支持对接多种开源的存储与网络方案,支持高性能的商业存储与网络服务。
对底层 Kubernetes中的多种类型的资源提供可视化的展示与监控数据,以向导式 UI实现工作负载管理、镜像管理、服务与应用路由管理 (服务发现)、密钥配置管理等,并提供弹性伸缩 (HPA)和容器健康检查支持,支持数万规模的容器资源调度,保证业务在高峰并发情况下的高可用性。
微服务治理
灵活的微服务框架:基于 Istio 微服务框架提供可视化的微服务治理功能,将 Kubernetes 的服务进行更细粒度的拆分
完善的治理功能:支持熔断、灰度发布、流量管控、限流、链路追踪、智能路由等完善的微服务治理功能,同时,支持代码无侵入的微服务治理
多租户管理
DevOps
开箱即用的 DevOps:基于 Jenkins 的可视化 CI / CD 流水线编辑,无需对Jenkins进行配置,同时内置丰富的 CI/CD 流水线插件
CI/CD 图形化流水线提供邮件通知功能,新增多个执行条件
为流水线、s2i、b2i 提供代码依赖缓存支持
端到端的流水线设置:支持从仓库 (Git/ SVN / BitBucket)、代码编译、镜像制作、镜像安全、推送仓库、版本发布、到定时构建的端到端流水线设置
安全管理:支持代码静态分析扫描以对 DevOps 工程中代码质量进行安全管理
日志:日志完整记录 CI / CD 流水线运行全过程
快速构建与发布
提供对代码(Source-to-Image)或者制品(Binary-to-Image)进行快速容器化的工具,无需编写 dockerfile,仅需要通过简单的设置即可将制品和代码构建成服务。
支持从已有的代码仓库中获取代码,或通过上传制品的方式,自动构建镜像和完成部署,并将镜像推送至目标仓库,每次构建镜像和服务的过程将以任务 (Job) 的方式去完成。
多维度监控
KubeSphere 全监控运维功能可通过可视化界面操作,同时,开放标准接口,易于对接企业运维系统,以统一运维入口实现集中化运维
立体化秒级监控:秒级频率、双重维度、十六项指标立体化监控
1>在集群资源维度,提供 CPU
2>利用率、内存利用率、CPU
3>平均负载、磁盘使用量、inode
4>使用率、磁盘吞吐量、IOPS、网卡速率、容器组运行状态、ETCD 监控、API Server 监控等多项指标
在应用资源维度,提供针对应用的 CPU 用量、内存用量、容器组数量、网络流出速率、网络流入速率等五项监控指标。并支持按用量排序和自定义时间范围查询,快速定位异常
提供按节点、企业空间、项目等资源用量排行
提供服务组件监控,快速定位组件故障
自研多租户告警系统
日志查询与收集
应用商店
提供存储类型管理、主机管理和监控、资源配额管理,并且支持镜像仓库管理、权限管理、镜像安全扫描。内置 Harbor 镜像仓库,支持添加 Docker 或私有的 Harbor 镜像仓库。
多存储类型支持
多网络方案支持
2,kubesphere安装
2.1 在线安装
文档位置:
在线安装all-in-one
在线安装multi-node
离线安装kubesphere2.1.1
注意:
# MD5: 12c0a336ba7d48bf33e7825befab25c2
curl -L https://kubesphere.io/download/offline/latest > kubesphere-all-offline-v2.1.1.tar.gz \
&& tar -zxf kubesphere-all-offline-v2.1.1.tar.gz
kubesphere正式环境安装
2.2 离线安装镜像包
busybox:1.28.4
calico/kube-controllers:v3.7.3
calico/node:v3.7.3
coredns/coredns:1.6.0
dockerhub.qingcloud.com/coreos/etcd:v3.2.18
dockerhub.qingcloud.com/google_containers/metrics-server-amd64:v0.3.1
dockerhub.qingcloud.com/pires/docker-elasticsearch-curator:5.5.4
gcr.azk8s.cn/google-containers/hyperkube:v1.15.5
gcr.azk8s.cn/google-containers/k8s-dns-node-cache:1.15.5
gcr.azk8s.cn/kubernetes-helm/tiller:v2.14.3
goharbor/chartmuseum-photon:v0.9.0-v1.9.1
goharbor/clair-photon:v2.0.9-v1.9.1
goharbor/harbor-core:v1.9.1
goharbor/harbor-db:v1.9.1
goharbor/harbor-jobservice:v1.9.1
goharbor/harbor-portal:v1.9.1
goharbor/harbor-registryctl:v1.9.1
goharbor/nginx-photon:v1.9.1
goharbor/redis-photon:v1.9.1
goharbor/registry-photon:v2.7.1-patch-2819-2553-v1.9.1
istio/citadel:1.3.3
istio/galley:1.3.3
istio/kubectl:1.3.3
istio/mixer:1.3.3
istio/pilot:1.3.3
istio/proxyv2:1.3.3
istio/sidecar_injector:1.3.3
jaegertracing/jaeger-agent:1.13
jaegertracing/jaeger-collector:1.13
jaegertracing/jaeger-operator:1.13.1
jaegertracing/jaeger-query:1.13
jenkins/jenkins:2.176.2
kubesphere/jenkins-uc:v2.1.0
kubesphere/addon-resizer:1.8.4
kubesphere/alert_adapter:v2.1.0
kubesphere/alerting-dbinit:v2.1.0
kubesphere/alerting:v2.1.0
kubesphere/configmap-reload:v0.0.1
kubesphere/elasticsearch-oss:6.7.0-1
kubesphere/fluent-bit:v1.3.2-reload
kubesphere/fluentbit-operator:v2.1.0
kubesphere/ks-account:v2.1.0
kubesphere/ks-apigateway:v2.1.0
kubesphere/ks-apiserver:v2.1.0
kubesphere/ks-console:v2.1.0
kubesphere/ks-controller-manager:v2.1.0
kubesphere/ks-devops:flyway-v2.1.0
kubesphere/ks-installer:v2.1.0
kubesphere/kube-rbac-proxy:v0.4.1
kubesphere/kube-state-metrics:v1.5.2
kubesphere/kubectl:v1.0.0
kubesphere/log-sidecar-injector:1.0
kubesphere/node-exporter:ks-v0.16.0
kubesphere/notification:flyway_v2.1.0
kubesphere/notification:v2.1.0
kubesphere/prometheus-config-reloader:v0.27.1
- [ ] kubesphere/prometheus-operator:v0.27.1
kubesphere/prometheus:v2.5.0
kubesphere/s2ioperator:v2.1.0
minio/minio:RELEASE.2019-08-07T01-59-21Z
mirrorgitlabcontainers/kubectl:v1.12.10
mirrorgooglecontainers/cluster-proportional-autoscaler-amd64:1.6.0
mirrorgooglecontainers/defaultbackend-amd64:1.4
mysql:8.0.11
nginx:1.14-alpine
openpitrix/openpitrix:flyway-v0.4.5
openpitrix/openpitrix:v0.4.5
openpitrix/release-app:v0.4.2
openpitrix/runtime-provider-kubernetes:v0.1.2
osixia/openldap:1.3.0
quay.azk8s.cn/openebs/node-disk-manager-amd64:v0.4.1
quay.azk8s.cn/openebs/node-disk-operator-amd64:v0.4.1
quay.azk8s.cn/openebs/provisioner-localpv:1.1.0
redis:5.0.5-alpine
可以将上面镜像保存成一个文件,例如 images ,然后执行下面命令:
root@host:~# docker login -u guest -p guest dockerhub.qingcloud.com
root@host:~# for line in `cat images`; do docker pull $line; done
对于dockerhub.qingcloud.com 的镜像,需要先登录:
root@host:~# docker login -u guest -p guest dockerhub.qingcloud.com
2.3 Multi-Node模式安装
2.3.1 下载 KubeSphere 2.1.1安装包至待安装机器,进入 conf目录。
curl -L https://kubesphere.io/download/stable/v2.1.1 > installer.tar.gz \
&& tar -zxf installer.tar.gz && cd kubesphere-all-v2.1.1/conf
2.3.2 编辑主机配置文件 conf/hosts.ini,为了对目标机器及部署流程进行集中化管理配置,集群中各个节点在主机配置文件 hosts.ini中应参考如下配置,建议使用 root用户进行安装。
说明:
centos7.6示例配置如下:
[root@master kubesphere-all-v2.1.1]# cd conf/
[root@master conf]# ll
total 28
-rw-r--r--. 1 root root 8247 Jul 28 16:51 common.yaml
-rw-r--r--. 1 root root 1233 Jul 28 17:26 hosts.ini
-rw-r--r--. 1 root root 267 May 19 16:41 plugin-aliyun.yaml
-rw-r--r--. 1 root root 3913 May 19 16:41 plugin-qingcloud.yaml
-rw-r--r--. 1 root root 220 May 19 16:41 plugin-tencentcloud.yaml
[root@master conf]# cat hosts.ini
; Parameters:
; ansible_connection: connection type to the target machine
; ansible_host: the host name of the target machine
; ip: ip address of the target machine
; ansible_user: the default user name for ssh connection
; ansible_ssh_pass: the password for ssh connection
; ansible_become_pass: the privilege escalation password to grant access
; ansible_port: the ssh port number, if not 22
; If installer is ran as non-root user who has sudo privilege, refer to the following sample configuration:
; e.g
; master ansible_connection=local ip=192.168.0.5 ansible_user=ubuntu ansible_become_pass=Qcloud@123
; node1 ansible_host=192.168.0.6 ip=192.168.0.6 ansible_user=ubuntu ansible_become_pass=Qcloud@123
; node2 ansible_host=192.168.0.8 ip=192.168.0.8 ansible_user=ubuntu ansible_become_pass=Qcloud@123
; As recommended as below sample configuration, use root account by default to install
[all]
master ansible_connection=local ip=192.168.2.122
node1 ansible_host=192.168.2.123 ip=192.168.2.123 ansible_ssh_pass=hly
node2 ansible_host=192.168.2.124 ip=192.168.2.124 ansible_ssh_pass=hly
[kube-master]
master
[kube-node]
node1
node2
[etcd]
master
[k8s-cluster:children]
kube-node
kube-master
说明:
[all]: 中需要修改集群中各个节点的内网 IP 和主机 root 用户密码: 主机名为 "master" 的节点作为已通过 SSH 连接的 Taskbox 所以无需填写密码。 Node 节点的参数比如 node1 和 node2 的 ansible_host和 ip都替换为当前 node1 和 node2 的内网 IP,将 ansible_ssh_pass相应替换为 node1 和 node2 的 root用户密码。
参数解释:
[kube-master]和 [etcd]:应将主机名 "master" 填入 [kube-master] 和 [etcd] 部分,"master" 节点作为 taskbox,用来执行整个集群的安装任务,同时 "master" 节点在 KubeSphere 集群架构中也将作为 Master 节点管理集群和 etcd 节点负责保存集群的数据。
[kube-node]:将主机名 "node1","node2" 填入 - [kube-node] 部分,作为 KubeSphere 集群的 node 节点。
[local-registry]:离线安装包中该参数值表示设置哪个节点作为本地镜像仓库,默认值为 master 节点。建议给该节点的 /mnt/registry单独挂盘 (参考 fdisk 命令),使镜像可保存在持久化存储并节省机器空间。
2.4 安装 KubeSphere
2.4.1 如果安装过程中安装插件,需要设置如下:
编辑 conf/common.yaml,参考如下说明开启所有组件(将 false 改为 true):
# LOGGING CONFIGURATION
# logging is an optional component when installing KubeSphere, and
# Kubernetes builtin logging APIs will be used if logging_enabled is set to false.
# Builtin logging only provides limited functions, so recommend to enable logging.
logging_enabled: true # 是否安装内置的日志系统
elasticsearch_master_replica: 1 # es 主节点副本数,主节点数不能为偶数
elasticsearch_data_replica: 2 # 数据节点副本数
elasticsearch_volume_size: 20Gi # Elasticsearch 存储卷大小
log_max_age: 7 # 集群内置的 Elasticsearch 中日志保留时间,默认是 7 天
elk_prefix: logstash # 自定义 index 命名方式,index 将以 ks--log 形式命名
kibana_enabled: false # 是否部署内置的 Kibana
#external_es_url: SHOULD_BE_REPLACED # 安装支持对接外部的 Elasticsearch 7.x,可减少资源消耗,此处填写 ES 服务的地址
#external_es_port: SHOULD_BE_REPLACED # 此处填写 ES 服务暴露的端口号
#DevOps Configuration
devops_enabled: true # 是否安装内置的 DevOps 系统(支持流水线、 S2i 和 B2i 等功能)
jenkins_memory_lim: 8Gi # Jenkins 内存限制,默认 8 Gi
jenkins_memory_req: 4Gi # Jenkins 内存请求,默认 4 Gi
jenkins_volume_size: 8Gi # Jenkins 存储卷大小,默认 8 Gi
jenkinsJavaOpts_Xms: 3g # 以下三项为 jvm 启动参数
jenkinsJavaOpts_Xmx: 6g
jenkinsJavaOpts_MaxRAM: 8g
sonarqube_enabled: true # 是否安装内置的 SonarQube (代码静态分析工具)
#sonar_server_url: SHOULD_BE_REPLACED # 安装支持对接外部已有的 SonarQube,此处填写 SonarQube 服务的地址
#sonar_server_token: SHOULD_BE_REPLACED # 此处填写 SonarQube 的 Token
# Following components are all optional for KubeSphere,
# Which could be turned on to install it before installation or later by updating its value to true
openpitrix_enabled: true # KubeSphere 应用商店
metrics_server_enabled: true # KubeSphere HPA(弹性伸缩)
servicemesh_enabled: true # KubeSphere Service Mesh
notification_enabled: true # KubeSphere 通知系统
alerting_enabled: true # KubeSphere 告警系统
2.4.2 进入安装目录,建议使用 root 用户执行 install.sh安装脚本。再次提醒大陆用户需要配置镜像加速.
青云docker下载(可以在脚本安装完成docker后使用):
docker login -u guest -p guest dockerhub.qingcloud.com
阿里云镜像加速(阿里云官网登录后会生成):
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://sg3p12qa.mirror.aliyuncs.com"]
}
EOF
cd ..
cd scripts
./install.sh
2.4.3 输入数字 2选择第二种 Multi-node 模式开始部署,安装程序会提示您的环境是否前提条件,若满足请输入 "yes" 开始安装。
################################################
KubeSphere Installer Menu
################################################
* 1) All-in-one
* 2) Multi-node
* 3) Quit
################################################
https://kubesphere.io/ 2020-02-23
################################################
Please input an option: 2