kubesphere集群部署
1,kubesphere简介1.1 kubesphere官网https://kubesphere.com.cn/1.2 什么是 KubeSphereKubeSphere 是在 Kubernetes 之上构建的以应用为中心的企业级分布式容器平台,提供简单易用的操作界面以及向导式操作方式,在降低用户使用容器调度平台学习成本的同时,极大减轻开发、测试、运维的日常工作的复杂度,旨在解决 Kubernete
1,kubesphere简介
1.1 kubesphere官网
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 资源管理
对底层 Kubernetes中的多种类型的资源提供可视化的展示与监控数据,以向导式 UI实现工作负载管理、镜像管理、服务与应用路由管理 (服务发现)、密钥配置管理等,并提供弹性伸缩 (HPA)和容器健康检查支持,支持数万规模的容器资源调度,保证业务在高峰并发情况下的高可用性。
-
微服务治理
-
灵活的微服务框架:基于 Istio 微服务框架提供可视化的微服务治理功能,将 Kubernetes 的服务进行更细粒度的拆分
-
完善的治理功能:支持熔断、灰度发布、流量管控、限流、链路追踪、智能路由等完善的微服务治理功能,同时,支持代码无侵入的微服务治理
-
-
多租户管理
- 多租户:提供基于角色的细粒度多租户统一认证与三层级权限管理
- 统一认证:支持与企业基于 LDAP / AD 协议的集中认证系统对接,支持单点登录 (SSO),以实现租户身份的统一认证
- 权限管理:权限等级由高至低分为集群、企业空间与项目三个管理层级,保障多层级不同角色间资源共享且互相隔离,充分保障资源安全性
-
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 用量、内存用量、容器组数量、网络流出速率、网络流入速率等五项监控指标。并支持按用量排序和自定义时间范围查询,快速定位异常
-
提供按节点、企业空间、项目等资源用量排行
-
提供服务组件监控,快速定位组件故障
-
-
自研多租户告警系统
- 持基于多租户、多维度的监控指标告警,目前告警策略支持集群管理员对节点级别和租户对工作负载级别等两个层级
- 灵活的告警策略:可自定义包含多个告警规则的告警策略,并且可以指定通知规则和重复告警的规则
- 丰富的监控告警指标:提供节点级别和工作负载级别的监控告警指标,包括容器组、CPU、内存、磁盘、网络等多个监控告警指标
- 灵活的告警规则:可自定义某监控指标的检测周期长度、持续周期次数、告警等级等
- 灵活的通知发送规则:可自定义发送通知时间段及通知列表,目前支持邮件通知
- 自定义重复告警规则:支持设置重复告警周期、最大重复次数并和告警级别挂钩
-
日志查询与收集
- 提供多租户日志管理,在 KubeSphere 的日志查询系统中,不同的租户只能看到属于自己的日志信息,支持中文日志检索,支持日志导出
- 多级别的日志查询 (项目/工作负载/容器组/容器以及关键字)、灵活方便的日志收集配置选项等
- 支持多种日志收集平台,如 Elasticsearch、Kafka、Fluentd
- 对于将日志以文件形式保存在 Pod 挂盘上的应用,支持开启落盘日志收集功能
-
应用商店
- 基于开源的 OpenPitrix 提供应用商店和应用仓库服务
- 支持应用上传、应用审核、应用上架与分类、应用部署,为用户提供应用全生命周期管理功能
- 用户基于应用模板可以快速便捷地部署一个完整应用的所有服务
- 基础设施管理
提供存储类型管理、主机管理和监控、资源配额管理,并且支持镜像仓库管理、权限管理、镜像安全扫描。内置 Harbor 镜像仓库,支持添加 Docker 或私有的 Harbor 镜像仓库。
-
多存储类型支持
- 支持 GlusterFS、CephRBD、NFS 等开源存储方案,支持有状态存储
- NeonSAN CSI 插件对接 QingStor NeonSAN,以更低时延、更加弹性、更高性能的存储,满足核心业务需求
- QingCloud CSI 插件对接 QingCloud 云平台各种性能的块存储服务
-
多网络方案支持
- 支持 Calico、Flannel 等开源网络方案
- 开发了适用于物理机部署 Kubernetes 的 负载均衡器插件 Porter
2,kubesphere安装
2.1 在线安装
- all-in-one:单节点安装,支持一键安装。
- multi-node:多节点安装,支持一键安装。
文档位置:
注意:
- 请确保机器磁盘可用空间不小于 100 G,并建议您在安装前,对 /var/lib/docker(存放本机镜像数据) 和 /mnt/registry(仅本地仓库所在机器) 目录单独挂盘(参考 fdisk 命令),挂盘大小请根据业务规模确定,原则不小于100G。
- 由于离线部署无法连接公共 apt 或 yum 源,可能会遇到依赖问题,因此建议使用纯净操作系统进行部署。
- 离线镜像下载地址:
# 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
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
- 安装前可以在common.yaml中配置镜像加速器
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用户进行安装。
说明:
- 若以非 root 用户 (如 ubuntu 用户) 进行安装,[all] 部分可参考配置文件 conf/hosts.ini的注释中 non-root用户示例部分编辑。
- 如果在 taskbox 使用 root 用户无法 ssh 连接到其他机器,也需要参考 conf/hosts.ini的注释中 non-root用户示例部分,但执行安装脚本 install.sh时建议切换到 root 用户,如果对此有疑问可参考 安装常见问题 - 问题 2。
- master, node1, node2 作为集群各个节点的主机名,若需要自定义主机名则所有主机名需要都使用小写形式。
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用户密码。
-
参数解释:
- ansible_connection: 与主机的连接类型,此处设置为 local即本地连接
- ansible_host: 集群中将要连接的主机地址或域名
- ip: 集群中将要连接的主机 IP
- ansible_user: 默认的 SSH 用户名 (非 root),例如 ubuntu
- ansible_become_pass: 默认的 SSH 用户登录密码
- ansible_ssh_pass: 待连接主机 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-<elk_prefix>-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
更多推荐
所有评论(0)