kubeykey是KubeSphere基于Go 语言开发的kubernetes集群部署工具,使用 KubeKey,您可以轻松、高效、灵活地单独或整体安装Kubernetes和KubeSphere。
官网:KubeKey
KubeKey可以用于以下三种安装场景:
kubekey核心命令:
export KKZONE=cn
curl -sfL https://get-kk.kubesphere.io | VERSION=v1.2.1 sh -
chmod +x kk
# 生成安装k8s的脚本
./kk create config config-sample.yaml
# 生成安装带有kubesphere的脚本
./kk create config --with-kubesphere v3.2.1 config-sample.yaml
# 创建集群
./kk create cluster -f config-sample.yaml
KubeSphere 是在目前主流容器调度平台 Kubernetes 之上构建的企业级分布式多租户容器平台,提供简单易用的操作界面以及向导式操作方式,在降低用户使用容器调度平台学习成本的同时,极大减轻开发、测试、运维的日常工作的复杂度,旨在解决 Kubernetes 本身存在的存储、网络、安全和易用性等痛点。
除此之外,平台已经整合并优化了多个适用于容器场景的功能模块,以完整的解决方案帮助企业轻松应对敏捷开发与自动化运维、微服务治理、多租户管理、工作负载和集群管理、服务与网络管理、应用编排与管理、镜像仓库管理和存储管理等业务场景。
相比较易捷版,KubeSphere 高级版提供企业级容器应用管理服务,支持更强大的功能和灵活的配置,满足企业复杂的业务需求。比如支持 Master 和 etcd 节点高可用、可视化 CI/CD 流水线、多维度监控告警日志、多租户管理、LDAP 集成、新增支持 HPA (水平自动伸缩) 、容器健康检查以及 Secrets、ConfigMaps 的配置管理等功能,新增微服务治理、灰度发布、s2i、代码质量检查等,后续还将提供和支持多集群管理、大数据、人工智能等更为复杂的业务场景。
总之,通过 KubeSphere 可以快速管理 Kubernetes 集群、部署应用、服务发现、CI/CD 流水线、集群扩容、微服务治理、日志查询和监控告警。换句话说,Kubernetes 是一个很棒的开源项目(或被认为是一个框架),但是 KubeSphere 是一款非常专业的企业级平台产品,专注于解决用户在复杂业务场景中的痛点,提供更友好更专业的用户体验。
名词解释:
KubeSphere | Kubernetes 对照释义 |
---|---|
项目 | Namespace, 为 Kubernetes 集群提供虚拟的隔离作用,详见 Namespace。 |
容器组 | Pod,是 Kubernetes 进行资源调度的最小单位,每个 Pod 中运行着一个或多个密切相关的业务容器 |
部署 | Deployments,表示用户对 Kubernetes 集群的一次更新操作,详见 Deployment。 |
有状态副本集 | StatefulSets,用来管理有状态应用,可以保证部署和 scale 的顺序,详见 StatefulSet。 |
守护进程集 | DaemonSets,保证在每个 Node 上都运行一个容器副本,常用来部署一些集群的日志、监控或者其他系统管理应用,详见 Daemonset。 |
任务 | Jobs,在 Kubernetes 中用来控制批处理型任务的资源对象,即仅执行一次的任务,它保证批处理任务的一个或多个 Pod 成功结束。任务管理的 Pod 根据用户的设置将任务成功完成就自动退出了。比如在创建工作负载前,执行任务,将镜像上传至镜像仓库。详见 Job。 |
定时任务 | CronJob,是基于时间的 Job,就类似于 Linux 系统的 crontab,在指定的时间周期运行指定的 Job,在给定时间点只运行一次或周期性地运行。详见 CronJob |
服务 | Service, 一个 Kubernete 服务是一个最小的对象,类似 Pod,和其它的终端对象一样,详见 Service。 |
应用路由 | Ingress,是授权入站连接到达集群服务的规则集合。可通过 Ingress 配置提供外部可访问的 URL、负载均衡、SSL、基于名称的虚拟主机等,详见 Ingress。 |
镜像仓库 | Image Registries,镜像仓库用于存放 Docker 镜像,Docker 镜像用于部署容器服务, 详见 Images。 |
存储卷 | PersistentVolumeClaim(PVC),满足用户对于持久化存储的需求,用户将 Pod 内需要持久化的数据挂载至存储卷,实现删除 Pod 后,数据仍保留在存储卷内。Kubesphere 推荐使用动态分配存储,当集群管理员配置存储类型后,集群用户可一键式分配和回收存储卷,无需关心存储底层细节。详见 Persistent Volumes | Kubernetes。 |
存储类型 | StorageClass,为管理员提供了描述存储 “Class(类)” 的方法,包含 Provisioner、 ReclaimPolicy 和 Parameters 。详见 StorageClass。 |
流水线 | Pipeline,简单来说就是一套运行在 Jenkins 上的 CI/CD 工作流框架,将原来独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排和可视化的工作。 |
企业空间 | Workspace,是 KubeSphere 实现多租户模式的基础,是您管理项目、 DevOps 工程和企业成员的基本单位。 |
官网:
面向云原生应用的容器混合云,支持 Kubernetes 多集群管理的 PaaS 容器云平台解决方案 | KubeSphere
1. KubeSphere特点
KubeSphere 为企业用户提供高性能可伸缩的容器应用管理服务,旨在帮助企业完成新一代互联网技术驱动下的数字化转型,加速业务的快速迭代与交付,以满足企业日新月异的业务需求。
1)极简体验,向导式 UI
2)业务高可靠与高可用
3)容器化 DevOps 持续交付
4)开箱即用的微服务治理
5)灵活的持久化存储方案
6)灵活的网络方案支持
7)多维度监控日志告警
2. KubeSphere功能详解
KubeSphere®️ 作为企业级的全栈化容器平台,为用户提供了一个具备极致体验的 Web 控制台,让您能够像使用任何其他互联网产品一样,快速上手各项功能与服务。KubeSphere 目前提供了工作负载管理、微服务治理、DevOps 工程、Source to Image、多租户管理、多维度监控、日志查询与收集、告警通知、服务与网络、应用管理、基础设施管理、镜像管理、应用配置密钥管理等功能模块,开发了适用于适用于物理机部署 Kubernetes 的 负载均衡器插件 Porter,并支持对接多种开源的存储与网络方案,支持高性能的商业存储与网络服务。
以下从专业的角度为您详解各个模块的功能服务:
1)Kubernetes 资源管理
对底层 Kubernetes 中的多种类型的资源提供极简的图形化向导式 UI 实现工作负载管理、镜像管理、服务与应用路由管理 (服务发现)、密钥配置管理等,并提供弹性伸缩 (HPA) 和容器健康检查支持,支持数万规模的容器资源调度,保证业务在高峰并发情况下的高可用性。
2)微服务治理
3) 多租户管理
4)DevOps 工程
5)Source to Image
提供 Source to Image (s2i) 的方式从已有的代码仓库中获取代码,并通过 Source to Image 构建镜像的方式来完成部署,并将镜像推送至目标仓库,每次构建镜像的过程将以任务 (Job) 的方式去完成。
6)多维度监控
7)自研多租户告警系统
8) 日志查询与收集
9)应用管理与编排
10)基础设施管理
提供存储类型管理、主机管理和监控、资源配额管理,并且支持镜像仓库管理、权限管理、镜像安全扫描。内置 Harbor 镜像仓库,支持添加 Docker 或私有的 Harbor 镜像仓库。
11) 多存储类型支持
12)多网络方案支持
KubeSphere 采用了前后端分离的架构,实现了面向云原生的设计,后端的各个功能组件可通过 REST API 对接外部系统,可参考 API 文档。KubeSphere 无底层的基础设施依赖,可以运行在任何 Kubernetes、私有云、公有云、VM 或物理环境(BM)之上。
后端组件 | 功能说明 |
---|---|
ks-account | 提供用户、权限管理相关的 API |
ks-apiserver | 整个集群管理的 API 接口和集群内部各个模块之间通信的枢纽,以及集群安全控制 |
ks-apigateway | 负责处理服务请求和处理 API 调用过程中的所有任务 |
ks-console | 提供 KubeSphere 的控制台服务 |
ks-controller-manager | 实现业务逻辑的,例如创建企业空间时,为其创建对应的权限;或创建服务策略时,生成对应的 Istio 配置等 |
Metrics-server | Kubernetes 的监控组件,从每个节点的 Kubelet 采集指标信息 |
Elasticsearch | 提供集群的日志索引、查询、数据管理等服务,在安装时也可对接您已有的 ES 减少资源消耗 |
Prometheus | 提供集群、节点、工作负载、API 对象等相关监控数据与服务 |
Fluent Bit | 提供日志接收与转发,可将采集到的⽇志信息发送到 ElasticSearch、Kafka |
Jenkins | 提供 CI/CD 流水线服务 |
SonarQube | 可选安装项,提供代码静态检查与质量分析 |
Source-to-Image | 将源代码自动将编译并打包成 Docker 镜像,方便快速构建镜像 |
Istio | 提供微服务治理与流量管控,如灰度发布、金丝雀发布、熔断、流量镜像等 |
Jaeger | 收集 Sidecar 数据,提供分布式 Tracing 服务 |
OpenPitrix | 提供应用模板、应用部署与管理的服务 |
Alert | 提供集群、Workload、Pod、容器级别的自定义告警服务 |
Notification | 通用的通知服务,目前支持邮件通知 |
redis | 将 ks-console 与 ks-account 的数据存储在内存中的存储系统 |
MySQL | 集群后端组件的数据库,监控、告警、DevOps、OpenPitrix 共用 MySQL 服务 |
PostgreSQL | SonarQube 和 Harbor 的后端数据库 |
OpenLDAP | 负责集中存储和管理用户账号信息与对接外部的 LDAP |
存储 | 内置 CSI 插件对接云平台存储服务,可选安装开源的 NFS/Ceph/Gluster 的客户端 |
网络 | 可选安装 Calico/Flannel 等开源的网络插件,支持对接云平台 SDN |
除了上述列表的组件,KubeSphere 还支持 Harbor 与 GitLab 作为可选安装项,您可以根据项目需要进行安装。以上列表中每个功能组件下还有多个服务组件,关于服务组件的说明,可参考 服务组件说明。
KubeSphere®️ 适用于企业在数字化转型时所面临的敏捷开发与自动化运维、微服务应用架构与流量治理、自动弹性伸缩和业务高可用、DevOps 持续集成与交付等应用场景。
1)一步升级容器架构,助力业务数字化转型
企业用户部署于物理机、传统虚拟化环境的业务系统,各业务模块会深度耦合,资源不能灵活的水平扩展。 KubeSphere 帮助企业将 IT 环境容器化并提供完整的运维管理功能,同时依托青云QingCloud 为企业提供强大的网络、存储支持,并可高效对接企业原监控、运维系统,一站式高效完成企业 IT 容器化改造。
2)多维管控 Kubernetes,降低运维复杂度
无论将业务架构在 Kubernetes 平台上的用户,还是使用多套来自不同厂商提供的 Kubernetes 平台的用户,复杂的运维管理使企业压力倍增。KubeSphere 可提供统一平台纳管异构 Kubernetes 集群,支持应用自动化部署,减轻日常运维压力。同时,完善的监控告警与日志管理系统有效节省运维人工成本,使企业能够将更多精力投放到业务创新上。
3)敏捷开发与自动化运维,推动企业 DevOps 落地
DevOps 将开发团队与运营团队通过一套流程或方法建立更具协作性、更高效的的关系,使得开发、测试、发布应用能够更加敏捷、高效、可靠。KubeSphere CI / CD 功能可为企业DevOps 提供敏捷开发与自动化运维。同时, KubeSphere 的微服务治理功能,帮助企业以一种细粒度的方式开发、测试和发布服务,有效推动企业 DevOps 落地。
4)灵活的微服务解决方案,一步升级云原生架构
微服务架构可轻量级构建冗余,可扩展性强,非常适合构建云原生应用程序。KubeSphere 基于主流微服务解决方案 Istio,提供无代码侵入的微服务治理平台。后续将集成 SpringCloud,便于企业构建 Java 应用,助力企业一步实现微服务架构,实现应用云原生转型。
5)基于物理环境构建全栈容器架构,释放硬件最大效能
支持在全物理环境部署全栈容器架构,利用物理交换机,为 KubeSphere 提供负载均衡器服务,同时,通过 KubeSphere 与 QingCloud VPC 以及QingStor NeonSAN 的组合,可打通负载均衡、容器平台、网络、存储全栈功能,实现真正意义上的物理环境一体化多租户容器架构解决方案,并实现自主可控、统一管理。避免虚拟化带来的性能损耗,释放硬件最大效能。
1)external loadBalancer
2)internal loadBalancer
节点规划:
我们这里,将采用第二种安装方式,internal loadBalancer;可以不用额外的机器资源,内部负载均衡:
export KKZONE=cn
curl -sfL https://get-kk.kubesphere.io | VERSION=v1.2.1 sh -
chmod +x kk
# ⽣成安装k8s的脚本
./kk create config -f config-sample.yaml
修改配置文件:
apiVersion: kubekey.kubesphere.io/v1alpha1
kind: Cluster
metadata:
name: sample
spec:
hosts:
- {name: master1, address: 10.4.7.60, internalAddress: 10.4.7.60, user: root, password: '123456'}
- {name: master2, address: 10.4.7.61, internalAddress: 10.4.7.61, user: root, password: '123456'}
- {name: master3, address: 10.4.7.62, internalAddress: 10.4.7.62, user: root, password: '123456'}
- {name: node1, address: 10.4.7.70, internalAddress: 10.4.7.70, user: root, password: '123456'}
- {name: node2, address: 10.4.7.71, internalAddress: 10.4.7.71, user: root, password: '123456'}
roleGroups:
etcd:
- master1
- master2
- master3
master:
- master1
- master2
- master3
worker:
- node1
- node2
controlPlaneEndpoint:
##Internal loadbalancer for apiservers
internalLoadbalancer: haproxy
domain: lb.kubesphere.local
address: ""
port: 6443
kubernetes:
version: v1.21.5
clusterName: cluster.local
network:
plugin: calico
kubePodsCIDR: 10.233.64.0/18
kubeServiceCIDR: 10.233.0.0/18
registry:
registryMirrors: []
insecureRegistries: []
addons: []
apiVersion: kubekey.kubesphere.io/v1alpha1
kind: Cluster
metadata:
name: sample
spec:
hosts:
- {name: node1, address: 10.4.7.80, internalAddress: 10.4.7.80, user: root, password: '123456'}
roleGroups:
etcd:
- node1
master:
- node1
worker:
- node1
controlPlaneEndpoint:
##Internal loadbalancer for apiservers
#internalLoadbalancer: haproxy
domain: lb.kubesphere.local
address: ""
port: 6443
kubernetes:
version: v1.21.5
clusterName: cluster.local
network:
plugin: calico
kubePodsCIDR: 10.233.64.0/18
kubeServiceCIDR: 10.233.0.0/18
registry:
registryMirrors: []
insecureRegistries: []
addons: []
# 直接安装k8s集群
./kk create cluster -f config-sample.yaml
# 如果同时部署 kubesphere
./kk create cluster -f config-sample.yaml --with-kubesphere v3.2.1
Console: http://10.4.7.80:30880/
Account: admin
Password: P@88w0rd
apiVersion: kubekey.kubesphere.io/v1alpha1
kind: Cluster
metadata:
name: sample
spec:
hosts: # 指定集群的节点信息,包括登录集群的账号密码
- {name: master1, address: 10.4.7.60, internalAddress: 10.4.7.60, user: root, password: '123456'}
- {name: master2, address: 10.4.7.61, internalAddress: 10.4.7.61, user: root, password: '123456'}
- {name: master3, address: 10.4.7.62, internalAddress: 10.4.7.62, user: root, password: '123456'}
- {name: node1, address: 10.4.7.70, internalAddress: 10.4.7.70, user: root, password: '123456'}
- {name: node2, address: 10.4.7.71, internalAddress: 10.4.7.71, user: root, password: '123456'}
roleGroups:
etcd: # etcd安装的节点信息
- master1
- master2
- master3
master: # master安装的节点信息
- master1
- master2
- master3
worker: # worker安装的节点信息
- node1
- node2
controlPlaneEndpoint:
##Internal loadbalancer for apiservers
internalLoadbalancer: haproxy # 开启内部的Lb
domain: lb.kubesphere.local
address: "" #虚拟vip,如果是开启的内部的 lb,留空
port: 6443
kubernetes: # 安装k8s版本的信息
version: v1.21.5
clusterName: cluster.local
network: # 选⽤k8s⽹络的信息
plugin: calico
kubePodsCIDR: 10.233.64.0/18
kubeServiceCIDR: 10.233.0.0/18
registry: # 远程仓库的配置信息
registryMirrors: []
insecureRegistries: []
addons: [] # 初始化安装的时候,开启了哪些组件。可以不配置,后续在后台操作
查看集群证书是否到期:
./kk certs check-expiration
更新证书:
# 集群证书位置
/etc/kubernetes/pki/
# 执⾏命令更新证书
./kk certs renew -f config.yaml
1)停止调度节点
以 admin 身份登录控制台,访问集群管理页面。若要将节点标记为不可调度,从左侧菜单中选择节点下的集群节点,找到想要从集群中删除的节点,点击停止调度。
或直接执行命令 kubectl cordon $NODENAME 。
2)./kk delete node -f config-sample.yaml
请参考:启用可插拔组件
请参考:节点管理
./kk delete cluster -f config-sample.yaml
请参考:
在阿里云 ACK 上安装 KubeSphere
请参考:
Kubernetes上安装KubeSphere · 语雀
⻆色说明:
架构说明:
KubeSphere 的多租户系统分三个层级,即集群、企业空间和项目。KubeSphere 中的项目等同于 Kubernetes的 名字空间 | Kubernetes
实践用户列表:
测试密码全部设置为: Test123
admin初始的账号,已经修改为:Test123456
1)创建用户
点击左上⻆的平台管理,然后选择访问控制。在左侧导航栏中,选择平台⻆色。这里是查看⻆色
点击左上⻆的平台管理,然后选择访问控制。在左侧导航栏中,选择用户。创建用户,根据上面的图示,创建对应的用户来测试。
2)创建企业空间
3)创建项目
4)创建DevOps项目
若要创建 DevOps 项目,需要预先启用 KubeSphere DevOps 系统,该系统是个可插拔的组件
应用部署需要关注的信息【应用部署三要素】:
1. 基础准备
1)部署分析
2)找到安装mysql的命令
Docker Hub
docker run -p 3306:3306 --name mysql-01 \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=root \
--restart=always \
-d mysql:5.7
3)mysql配置的内容
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
init_connect='SET collation_connection = utf8mb4_unicode_ci'
init_connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
2. 配置
配置的就是ConfigMap的信息,我们会把mysql的配置内容,定义在ConfigMap中。
说明:
键:
值:
3. 存储
pvc,用来存储数据的,比如这里会把单独申请一个存储空间来保存mysql的内容。
注意:这里如果是提前申请的 pvc,也就是在 存储->存储卷中申请。后续mysql扩容的话,会都使用这一个存储卷。
一般是在应用负载配置的时候,一同申请。这样如果mysql扩容,也会一同申请新的pvc。
1)进入页面
平台管理->集群管理->存储->存储卷
2)配置
4. 发布和暴露服务
1)进入配置
进入配置页面;平台管理->集群管理->应用负载->工作负载
2)选择有状态副本集
3)创建基本信息
4)容器组配置-添加容器
5)设置资源限制
6)设置环境变量
7)同步主机时区
8)存储卷设置-挂载存储卷
/var/lib/mysql:
9) 存储卷设置-挂载配置字典
10)确认配置内容,并创建
进入终端,查看:
11)对外提供服务
应用负载->服务
在容器内登录mysql查看:
对外发布服务:
应用负载->服务->创建
12)测试链接
1. 基础准备
1)部署分析
2)找到安装 redis 的命令
Docker Hub
3)配置内容
#创建配置⽂件
## 1、准备redis配置⽂件内容
mkdir -p /mydata/redis/conf && vim /mydata/redis/conf/redis.conf
##配置示例
appendonly yes
port 6379
bind 0.0.0.0
#docker启动redis
docker run -d -p 6379:6379 --restart=always \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /mydata/redis-01/data:/data \
--name redis-01 redis:6.2.5 \
redis-server /etc/redis/redis.conf
2. 配置
1)进入配置页面;平台管理->集群管理->配置->配置字典
2)配置
3. 发布和暴露服务
1)进入配置
进入配置页面;平台管理->集群管理->应用负载->工作负载
2)选择有状态副本集
3)创建基本信息
4)容器组配置-添加容器
5)存储卷设置-挂载存储卷
这里,没有提前准备pvc,所以直接操作:
6)存储卷设置-挂载配置字典
7)确认配置内容,并创建
8)进入终端,查看
9)对外提供服务
应用负载->服务->创建
1. 基础准备
1)部署分析
2)找到安装 es 的命令
Docker Hub
3)配置内容
# 创建数据目录
mkdir -p /mydata/es-01/data && chmod 777 -R /mydata/es-01/data
# 容器启动
docker run --restart=always -d -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
-v es-config:/usr/share/elasticsearch/config \
-v /mydata/es-01/data:/usr/share/elasticsearch/data \
--name es-01 \
elasticsearch:7.13.4
elasticsearch.yml:
cluster.name: "docker-cluster"
network.host: 0.0.0.0
jvm.options:
################################################################
##
## JVM configuration
##
################################################################
##
## WARNING: DO NOT EDIT THIS FILE. If you want to override the
## JVM options in this file, or set any additional options, you
## should create one or more files in the jvm.options.d
## directory containing your adjustments.
##
## See https://www.elastic.co/guide/en/elasticsearch/reference/current/jvm-options.html
## for more information.
##
################################################################
################################################################
## IMPORTANT: JVM heap size
################################################################
##
## The heap size is automatically configured by Elasticsearch
## based on the available memory in your system and the roles
## each node is configured to fulfill. If specifying heap is
## required, it should be done through a file in jvm.options.d,
## and the min and max should be set to the same value. For
## example, to set the heap to 4 GB, create a new file in the
## jvm.options.d directory containing these lines:
##
## -Xms4g
## -Xmx4g
##
## See https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html
## for more information
##
################################################################
################################################################
## Expert settings
################################################################
##
## All settings below here are considered expert settings. Do
## not adjust them unless you understand what you are doing. Do
## not edit them in this file; instead, create a new file in the
## jvm.options.d directory containing your adjustments.
##
################################################################
## GC configuration
8-13:-XX:+UseConcMarkSweepGC
8-13:-XX:CMSInitiatingOccupancyFraction=75
8-13:-XX:+UseCMSInitiatingOccupancyOnly
## G1GC Configuration
# NOTE: G1 GC is only supported on JDK version 10 or later
# to use G1GC, uncomment the next two lines and update the version on the
# following three lines to your version of the JDK
# 10-13:-XX:-UseConcMarkSweepGC
# 10-13:-XX:-UseCMSInitiatingOccupancyOnly
14-:-XX:+UseG1GC
## JVM temporary directory
-Djava.io.tmpdir=${ES_TMPDIR}
## heap dumps
# generate a heap dump when an allocation from the Java heap fails; heap dumps
# are created in the working directory of the JVM unless an alternative path is
# specified
-XX:+HeapDumpOnOutOfMemoryError
# specify an alternative path for heap dumps; ensure the directory exists and
# has sufficient space
-XX:HeapDumpPath=data
# specify an alternative path for JVM fatal error logs
-XX:ErrorFile=logs/hs_err_pid%p.log
## JDK 8 GC logging
8:-XX:+PrintGCDetails
8:-XX:+PrintGCDateStamps
8:-XX:+PrintTenuringDistribution
8:-XX:+PrintGCApplicationStoppedTime
8:-Xloggc:logs/gc.log
8:-XX:+UseGCLogFileRotation
8:-XX:NumberOfGCLogFiles=32
8:-XX:GCLogFileSize=64m
# JDK 9+ GC logging
9-:-
Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize
=64m
2. 配置
1)进入配置页面
平台管理->集群管理->配置->配置字典
2)配置
3. 发布和暴露服务
1)进入配置
进入配置页面:
平台管理->集群管理->应用负载->工作负载
2)选择有状态副本集
3)创建基本信息
4)容器组配置-添加容器
5)存储卷设置-挂载存储卷
注意:这里用的是子路径的配置方式。
a. 配置elasticsearch.yml
配置内的内容是: /usr/share/elasticsearch/config/elasticsearch.yml
b. 配置 jvm.options
配置里的内容是: /usr/share/elasticsearch/config/jvm.options
7)确认配置内容,并创建
8)进入终端,查看
9)对外提供服务
应用负载->服务->创建
1)启用应用商店
KubeSphere 应用商店
2)应用商店-rabbitmq
应用商店-消息队列-rabbitmq:
1)安装仓库
helm:k8s的管理。
Helm
Artifact Hub
2)添加仓库
应用管理->应用仓库
注意:要用空间管理员登录,我们这里是用ws-admin来登录。
3)部署应用
1)consul
bitnami中安装。
2)nacos
helm-charts | charts
3)jaeger
Jaeger Tracing Helm Repository | Jaeger Charts
4)kong
bitnami中安装。
1. 启用DevOps
devops:
enabled: true # 将“false”更改为“true”。
您可以使用 Web Kubectl 工具执行以下命令来检查安装过程:
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-
install -o jsonpath='{.items[0].metadata.name}') -f
查看是否安装成功:
kubectl get pod -n kubesphere-devops-system
安装以后,登录后台查看:
2. 创建DevOps项目
若要创建 DevOps 项目,需要预先启用KubeSphere DevOps系统,该系统是个可插拔的组件:
3. 快速入门
DevOps 项目->选中devops项目->流水线->创建
进人流水线,编辑测试:
详情参考:
DevOps 用户指南
项目架构
目录代码:
mall-code
|---mall-common //通⽤模块
|---mall-srv //微服务层-数据层
|------common-srv //公共微服务 [50050]
|------goods-srv //商品微服务 [50052]
|---mall-web //微服务层-业务层
|------api-backend-general-system-web //总后台 [8021]
|------api-mini-program-user-web //⼩程序 [8020]
详情参考:
go-micro: Go Micro是基于Golang的微服务开发框架