部署 SpringBlade

This commit is contained in:
huanqing.shao
2021-05-04 18:20:16 +08:00
parent a176a38aae
commit 1b77d73217
123 changed files with 2289 additions and 321 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 336 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 533 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 657 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 KiB

View File

@ -0,0 +1,138 @@
---
layout: LearningLayout
description: Kubernetes教程_使用Kuboard在Kubernetes上部署Spring_Cloud微服务平台SpringBlade
meta:
- name: keywords
content: Kubernetes教程,K8S教程,Kubernetes微服务,Kubernetes Spring Cloud
---
# 部署 blade-admin
<AdSenseTitle/>
::: tip 前提条件
部署 ***blade-admin*** 之前,请确保:
* 您的环境已经满足 [环境准备](../prepare/prepare.html) 中的要求
* 您已经完成了:
* [部署 nacos-mysql](./nacos-mysql.html)
* [部署 nacos](./nacos.html)
* [导入配置到 nacos](./nacos-config.html)
* [部署 redis](./m-redis.html)
* [部署 sentinel](./m-sentinel.html)
* [部署 saber-db](./m-saber-db.html)
* [部署接口网关](./m-gateway.html)
:::
本文将按照如下步骤完成 `blade-admin` 的创建:
* 创建 Deployment
* 验证部署结果
* 验证 blade-admin 已成功注册到 nacos
## 创建 Deployment
按照如下步骤创建 `blade-admin` Deployment
* 在 Kuboard 界面进入名称空间 `spring-blade` 之后,点击菜单 ***名称空间*** -> ***spring-blade*** -> ***常用操作*** -> ***创建工作负载*** ,如下图所示:
并填写表单:
| 字段名称 | 字段值 | 备注 |
| ------------ | ------------- | -------------------------------------------- |
| 工作负载类型 | `Deployment` | |
| 工作负载分层 | `中间件` | 填写后将自动添加 `k8s.kuboard.cn/layer` 标签 |
| 工作负载名称 | `blade-admin` | 填写后将自动添加 `k8s.kuboard.cn/name` 标签 |
| 副本数 | `1` | |
![image-20210504130036681](./blade-admin.assets/image-20210504130036681.png)
* 切换到 ***容器信息*** 标签,如下图所示:
点击左侧的 ***添加工作容器*** 按钮,添加一个工作容器,并填写表单:
| 字段名称 | 字段值 | 备注 |
| ----------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| 名称 | `blade-admin` | |
| 容器镜像 | `从其他镜像仓库加载镜像(不使用用户名密码)` | |
| 容器镜像-->镜像仓库 | `swr.cn-east-2.myhuaweicloud.com` | |
| 容器镜像-->镜像路径 | `blade/blade-admin` | |
| 容器镜像-->镜像标签 | `3.0.3` | |
| 镜像拉取策略 | `始终拉取新镜像Always` | |
| 命令参数<div style="width: 120px;"></div> | 参数<div style="width: 450px;"> `--spring.profiles.active=${PROFILE} --spring.cloud.nacos.config.server-addr=${NACOS_SERVER_ADDR} --spring.cloud.nacos.discovery.server-addr=${NACOS_SERVER_ADDR} --spring.cloud.sentinel.transport.dashboard=${SENTINEL_DASHBOARD_ADDR} --server.port=80` </div> | 通过启动参数指定:<li>spring的 profile</li><li>Nacos配置中心地址</li><li>Nacos服务发现地址</li><li>Sentinel地址</li><li>服务端口</li><div style="width: 150px;"></div> |
| 环境变量 | `配置字典引用` `blade-config` | 点击 ***+ 配置*** 按钮,可以添加一个配置字典的条目;此配置将 `blade-config` 配置字典中的每一个条目都映射成容器中的一个变量及变量值 |
| 资源请求/限制 | 内存资源请求:`200Mi`<br />内存资源限制:`2048Mi` | |
| 容器端口 | `server ` `80` | |
| 健康检查-->容器启动检查探针 | 探测方式: `HTTP请求`<br />HTTP请求端口 `80`<br />HTTP请求路径 `/actuator/health`<br />不健康阈值: `20` | |
| 健康检查-->容器存活检查探针 | 探测方式: `HTTP请求`<br />HTTP请求端口 `80`<br />HTTP请求路径 `/actuator/health` | |
| 健康检查-->容器就绪检查探针 | 探测方式: `HTTP请求`<br />HTTP请求端口 `80`<br />HTTP请求路径 `/actuator/health` | |
![image-20210504130950532](./blade-admin.assets/image-20210504130950532.png)
* 点击 ***保存*** 按钮,完成 `blade-admin` Deployment 的创建
## 验证部署结果
按照下面的步骤,可以验证 `blade-admin` 是否已经成功启动:
* 在上面的步骤中,完成 Deployment 的保存以后,将会进入该 Deployment 的详情页面,如下图所示:
![image-20210504131902305](./blade-admin.assets/image-20210504131902305.png)
* 点击上图中的 ***追踪日志*** 按钮,可以看到 blade-admin 的日志信息,如下图所示,日志将提示:
```
---[BLADE-ADMIN]---启动完成,当前使用的端口:[80],环境变量:[test]---
```
![image-20210504131945818](./blade-admin.assets/image-20210504131945818.png)
## 验证 blade-admin 已成功注册到 nacos
按照下面的步骤,可以验证 `blade-admin` 是否已经成功注册到 nacos 服务注册中心:
* 切换到 `nacos` StatefulSet 的详情页,如下图所示:
![image-20210502205924106](./nacos-install.assets/image-20210502205924106.png)
* 点击上图中,容器端口 `8848` 后面对应的绿色图标,如下图所示:
修改 ***访问路径*** 字段为 `/nacos`
![image-20210502210356041](./nacos-install.assets/image-20210502210356041.png)
* 在上图中修改 ***访问路径*** 字段后,点击 ***在浏览器窗口打开*** 按钮,将会打开一个新的窗口,如下图所示:
填写登录信息:
用户名:`nacos`
密码: `nacos`
![image-20210502210647992](./nacos-install.assets/image-20210502210647992.png)
* 在上图中点击 ***提交*** 按钮,完成 nacos 登录,并切换到 ***服务管理*** --> ***服务列表*** 菜单项, 如下图所示:
![image-20210504132242261](./blade-admin.assets/image-20210504132242261.png)
* 至此,我们可以认为 blade-admin 已经部署成功。
下一步,请 [部署其他微服务](./blade-others.html)

Binary file not shown.

After

Width:  |  Height:  |  Size: 419 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 584 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 642 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 298 KiB

View File

@ -0,0 +1,130 @@
---
layout: LearningLayout
description: Kubernetes教程_使用Kuboard在Kubernetes上部署Spring_Cloud微服务平台SpringBlade
meta:
- name: keywords
content: Kubernetes教程,K8S教程,Kubernetes微服务,Kubernetes Spring Cloud
---
# 部署其他微服务
<AdSenseTitle/>
::: tip 前提条件
部署其他微服务之前,请确保您:
* 您的环境已经满足 [环境准备](../prepare/prepare.html) 中的要求
* 您已经完成了:
* [部署 blade-admin](./blade-admin.html)
:::
除了已经完成部署的 `blade-admin`,还剩下 8个微服务尚未部署
`blade-auth``blade-desk``blade-develop``blade-log``blade-report``blade-resource``blade-system``blade-user`
由于每一个微服务在 K8S 中的部署信息大同小异,本文将按照如下步骤完成其他 8 个微服务的部署:
* 复制并部署 `blade-auth`
* 验证 `blade-auth` 的部署结果
* 验证 `blade-auth` 已成功注册到 nacos
* 复制并部署其他 7 个微服务
## 复制并部署 blade-auth
* 在 Kuboard 中导航到菜单 ***名称空间*** --> ***spring-blade*** --> ***工作负载***,如下图所示:
![image-20210504151541106](./blade-others.assets/image-20210504151541106.png)
* 点击上图中 `blade-admin` 所对应的 ***复制*** 按钮,如下图所示:
填写表单:
| 字段名 | 字段值 | 备注 |
| -------- | ------------ | ------------------------ |
| 名称空间 | spring-blade | 目标工作负载所在名称空间 |
| 名称 | blade-auth | 目标工作负载名称 |
![image-20210504152141789](./blade-others.assets/image-20210504152141789.png)
* 点击上图中的 ***确定*** 按钮,将跳转到工作负载创建页面,然后,切换到 ***容器信息*** 标签页,如下图所示:
修改如下两个字段:
| 字段名 | 字段值 | 备注 |
| ------------ | ------------------ | ---------------------- |
| 工作容器名称 | `blade-auth` | 原为 blade-admin |
| 镜像路径 | `blade/blade-auth` | 原为 blade/blade-admin |
![image-20210504152544113](./blade-others.assets/image-20210504152544113.png)
* 点击 ***保存*** 按钮,创建 `blade-auth` Deployment
## 验证 blade-auth 的部署结果
* 在完成 `blade-auth` Deployment 的保存以后,将跳转到 `blade-auth` 的工作负载详情页,如下图所示:
![image-20210504153517902](./blade-others.assets/image-20210504153517902.png)
* 点击上图中的 ***追踪日志*** 按钮,可以看到 blade-auth 的日志信息,如下图所示,日志将提示:
```
---[BLADE-AUTH]---启动完成,当前使用的端口:[80],环境变量:[test]---
```
![image-20210504153651845](./blade-others.assets/image-20210504153651845.png)
## 验证 blade-auth 已成功注册到 nacos
按照下面的步骤,可以验证 `blade-auth` 是否已经成功注册到 nacos 服务注册中心:
* 切换到 `nacos` StatefulSet 的详情页,如下图所示:
![image-20210502205924106](./nacos-install.assets/image-20210502205924106.png)
* 点击上图中,容器端口 `8848` 后面对应的绿色图标,如下图所示:
修改 ***访问路径*** 字段为 `/nacos`
![image-20210502210356041](./nacos-install.assets/image-20210502210356041.png)
* 在上图中修改 ***访问路径*** 字段后,点击 ***在浏览器窗口打开*** 按钮,将会打开一个新的窗口,如下图所示:
填写登录信息:
用户名:`nacos`
密码: `nacos`
![image-20210502210647992](./nacos-install.assets/image-20210502210647992.png)
* 在上图中点击 ***提交*** 按钮,完成 nacos 登录,并切换到 ***服务管理*** --> ***服务列表*** 菜单项, 如下图所示:
![image-20210504154255962](./blade-others.assets/image-20210504154255962.png)
* 至此,我们可以认为 blade-auth 已经部署成功。
## 复制并部署其他 7 个微服务
重复前面的步骤:
* 复制并部署 `blade-xxx`
* 验证 `blade-xxx` 的部署结果
* 验证 `blade-xxx` 已成功注册到 nacos
完成其余 7 个微服务的部署:`blade-desk`、`blade-develop`、`blade-log`、`blade-report`、`blade-resource`、`blade-system`、`blade-user`
完成所有微服务的部署以后nacos 的服务列表界面如下图所示:
![image-20210504161052418](./blade-others.assets/image-20210504161052418.png)
至此,我们完成了所有微服务的部署。
接下来,请 [部署 saber-web](./saber-web.html)

View File

@ -0,0 +1,25 @@
---
layout: LearningLayout
description: Kubernetes教程_使用Kuboard在Kubernetes上部署Spring_Cloud微服务平台SpringBlade
meta:
- name: keywords
content: Kubernetes教程,K8S教程,Kubernetes微服务,Kubernetes Spring Cloud
---
# 部署所有的微服务
<AdSenseTitle/>
SpringBlade 所需要部署的微服务有 9 个之多,包括有:
* blade-admin
* blade-auth
* blade-desk
* blade-develop
* blade-log
* blade-report
* blade-resource
* blade-system
* blade-user
每一个微服务在 K8S 里的部署参数相差不大,鉴于这个特点,在部署微服务时,我们将先 [部署其中一个微服务 blade-admin](./blade-admin.html),然后再利用 Kuboard 中的 ***复制工作负载*** 的功能,从 `blade-admin` 复制以 [部署其余 8 个微服务工作负载](./blade-others.html)。

View File

@ -0,0 +1,46 @@
---
layout: LearningLayout
description: Kubernetes教程_使用Kuboard在Kubernetes上部署Spring_Cloud微服务平台SpringBlade
meta:
- name: keywords
content: Kubernetes教程,K8S教程,Kubernetes微服务,Kubernetes Spring Cloud
---
# 部署 SpringBlade
<AdSenseTitle/>
本系列文档部署的 SpringBlade 为其开源版本 [SpringBlade v3.0.3](https://gitee.com/smallc/SpringBlade/tree/v3.0.2/),开始部署前,请确保您的环境已就绪,具体要求请参考 [环境准备](../prepare/prepare.html)
本系列文档提供两种部署方式:
## 逐步部署
逐步部署时,您可以按照文档的顺序一个一个地完成 SpringBlade 各组件的部署,这个过程中,您将熟悉如何使用 Kuboard 在 Kubernetes 上部署 Spring 微服务应用程序。
SpringBlade 的组件较多,根据其依赖关系,本系列文档按照如下顺序完成 SpringBlade 的部署:
* 部署配置管理及微服务注册中心 Nacos
* [Nacos 介绍](./nacos.html)
* [部署 nacos-mysql](./nacos-mysql.html)
* [部署 nacos](./nacos-install.html)
* [导入配置到 nacos](./nacos-config.html)
* 部署其他的基础软件
* [部署 redis](./m-redis.html)
* [部署 sentinel](./m-sentinel.html)
* [部署 saber-db](./m-saber-db.html)
* [部署 api-gateway](./m-gateway.html)
* [部署 swagger](./m-swagger.html)
* 部署微服务应用
* [部署 blade-admin](./blade-admin.html)
* [部署其他微服务](./blade-others.html)
* [部署 saber-web](./saber-web.html)
* [验证 SpringBlade 部署结果](./validate.html)
## 一键导入
一键导入时,您可以下载一个事先准备好的 yaml 文件,并通过 Kuboard 界面一次性导入 SpringBlade 的所有组件,快速完成 SpringBlade 应用的部署。熟悉这种部署方式,可以帮助您快速地在一个新的环境中部署好您的微服务应用程序。
具体操作请参考 [导入 yaml](../import/import.html)

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 359 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 391 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 562 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 671 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 403 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 674 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 KiB

View File

@ -0,0 +1,164 @@
---
layout: LearningLayout
description: Kubernetes教程_使用Kuboard在Kubernetes上部署Spring_Cloud微服务平台SpringBlade
meta:
- name: keywords
content: Kubernetes教程,K8S教程,Kubernetes微服务,Kubernetes Spring Cloud
---
# 部署接口网关
<AdSenseTitle/>
::: tip 前提条件
部署接口网关之前,请确保:
* 您的环境已经满足 [环境准备](../prepare/prepare.html) 中的要求;
* 已经完成了 [nacos 的部署](./nacos.html)
:::
本文将按照如下步骤完成 `api-gateway` 的创建:
* 创建配置字典 `blade-config`
* 创建 Deployment
* 验证部署结果
* 验证 blade-gateway 已经成功注册到 nacos
## 创建配置字典 blade-config
* 导航到菜单项 ***名称空间*** --> ***spring-blade*** --> ***配置中心*** --> ***配置字典***
![image-20210503211458752](./m-gateway.assets/image-20210503211458752.png)
* 点击上图中的 ***创建 ConfigMap*** 按钮,结果如下图所示:
填写表单:
| 字段名 | 字段值 | 备注 |
| ------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| 名称 | `blade-config` | |
| 数据<div style="width: 50px;"></div> | `PROFILE` = `test`<br />`NACOS_SERVER_ADDR` = `nacos-0.nacos:8848`<br />`SENTINEL_DASHBOARD_ADDR` = `sentinel-0.sentinel:8858`<div style="width: 450px;"></div> | 这些参数将作为环境变量注入到 `blade-gateway` 以及 `blade-admin` 等微服务组件中,作为应用启动参数的一部分 |
![image-20210504132838786](./m-gateway.assets/image-20210504132838786.png)
* 点击 ***保存*** 按钮,完成配置字典 `blade-config` 的创建。
## 创建 Deployment
按照如下步骤创建 `blade-gateway` Deployment
* 在 Kuboard 界面进入名称空间 `spring-blade` 之后,点击菜单 ***名称空间*** -> ***spring-blade*** -> ***常用操作*** -> ***创建工作负载*** ,如下图所示:
并填写表单:
| 字段名称 | 字段值 | 备注 |
| ------------ | --------------- | -------------------------------------------- |
| 工作负载类型 | `Deployment` | |
| 工作负载分层 | `API网关层` | 填写后将自动添加 `k8s.kuboard.cn/layer` 标签 |
| 工作负载名称 | `blade-gateway` | 填写后将自动添加 `k8s.kuboard.cn/name` 标签 |
| 副本数 | `1` | |
![image-20210503210239238](./m-gateway.assets/image-20210503210239238.png)
* 切换到 ***容器信息*** 标签,如下图所示:
点击左侧的 ***添加工作容器*** 按钮,添加一个工作容器,并填写表单:
| 字段名称 | 字段值 | 备注 |
| ----------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| 名称 | `blade-gateway` | |
| 容器镜像 | `从其他镜像仓库加载镜像(不使用用户名密码)` | |
| 容器镜像-->镜像仓库 | `swr.cn-east-2.myhuaweicloud.com` | |
| 容器镜像-->镜像路径 | `blade/blade-gateway` | |
| 容器镜像-->镜像标签 | `3.0.3` | |
| 镜像拉取策略 | `始终拉取新镜像Always` | |
| 命令参数<div style="width: 120px;"></div> | 参数<div style="width: 450px;"> `--spring.profiles.active=${PROFILE} --spring.cloud.nacos.config.server-addr=${NACOS_SERVER_ADDR} --spring.cloud.nacos.discovery.server-addr=${NACOS_SERVER_ADDR} --spring.cloud.sentinel.transport.dashboard=${SENTINEL_DASHBOARD_ADDR} --server.port=80` </div> | 通过启动参数指定:<li>spring的 profile</li><li>Nacos配置中心地址</li><li>Nacos服务发现地址</li><li>Sentinel地址</li><li>服务端口</li><div style="width: 150px;"></div> |
| 环境变量 | `配置字典引用` `blade-config` | 点击 ***+ 配置*** 按钮,可以添加一个配置字典的条目;此配置将 `blade-config` 配置字典中的每一个条目都映射成容器中的一个变量及变量值 |
| 资源请求/限制 | 内存资源请求:`200Mi`<br />内存资源限制:`2048Mi` | |
| 容器端口 | `server ` `80` | |
| 健康检查-->容器启动检查探针 | 探测方式: `HTTP请求`<br />HTTP请求端口 `80`<br />HTTP请求路径 `/actuator/health`<br />初始延迟:`30`<br />不健康阈值: `20` | |
| 健康检查-->容器存活检查探针 | 探测方式: `HTTP请求`<br />HTTP请求端口 `80`<br />HTTP请求路径 `/actuator/health` | |
| 健康检查-->容器就绪检查探针 | 探测方式: `HTTP请求`<br />HTTP请求端口 `80`<br />HTTP请求路径 `/actuator/health` | |
![image-20210503214928838](./m-gateway.assets/image-20210503214928838.png)
* 切换到 ***服务/应用路由*** 标签页,如下图所示:
并填写表单:
| 字段名称 | 字段值 | 备注 |
| ------------------------------------ | ----------------------------------------------------------- | ------------------------------------------------------------ |
| 服务类型 | `ClusterIP` | ClusterIP以便 `saber-web` 的 nginx 可以将 api 请求反向代理到 `http://blade-gateway:80` |
| 端口<div style="width: 80px;"></div> | `server` `TCP ` `80` `80`<div style="width: 200px;"></div> | 将容器的 `80` 端口映射到 Service 的 `80` 端口 |
![image-20210503220054714](./m-gateway.assets/image-20210503220054714.png)
* 点击 ***保存*** 按钮,完成 `blade-gateway` Deployment 的创建
## 验证部署结果
按照下面的步骤,可以验证 `blade-gateway` 是否已经成功启动:
* 在上面的步骤中,完成 Deployment 的保存以后,将会进入该 Deployment 的详情页面,如下图所示:
![image-20210503215741162](./m-gateway.assets/image-20210503215741162.png)
* 点击上图中的 ***追踪日志*** 按钮,可以看到 blade-gateway 的日志信息,如下图所示,日志将提示:
```
---[BLADE-GATEWAY]---启动完成,当前使用的端口:[80],环境变量:[k8s]---
```
![image-20210503220711880](./m-gateway.assets/image-20210503220711880.png)
## 验证 blade-gateway 已经成功注册到 nacos
按照下面的步骤,可以验证 `blade-gateway` 是否已经成功注册到 nacos 服务注册中心:
* 切换到 `nacos` StatefulSet 的详情页,如下图所示:
![image-20210502205924106](./nacos-install.assets/image-20210502205924106.png)
* 点击上图中,容器端口 `8848` 后面对应的绿色图标,如下图所示:
修改 ***访问路径*** 字段为 `/nacos`
![image-20210502210356041](./nacos-install.assets/image-20210502210356041.png)
* 在上图中修改 ***访问路径*** 字段后,点击 ***在浏览器窗口打开*** 按钮,将会打开一个新的窗口,如下图所示:
填写登录信息:
用户名:`nacos`
密码: `nacos`
![image-20210502210647992](./nacos-install.assets/image-20210502210647992.png)
* 在上图中点击 ***提交*** 按钮,完成 nacos 登录,并切换到 ***服务管理*** --> ***服务列表*** 菜单项, 如下图所示:
![image-20210503220918194](./m-gateway.assets/image-20210503220918194.png)
服务列表中出现 `blade-gateway`,则我们可以认为 blade-gateway 已经部署成功。
下一步,请 [部署 swagger](./m-swagger.html)

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 561 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 321 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 291 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 647 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

View File

@ -0,0 +1,143 @@
---
layout: LearningLayout
description: Kubernetes教程_使用Kuboard在Kubernetes上部署Spring_Cloud微服务平台SpringBlade
meta:
- name: keywords
content: Kubernetes教程,K8S教程,Kubernetes微服务,Kubernetes Spring Cloud
---
# 部署 redis
<AdSenseTitle/>
::: tip 前提条件
* 部署 `redis` 之前,请确保您的环境已经满足 [环境准备](../prepare/prepare.html) 中的要求;
* `redis` 的部署并不依赖于 `nacos`,您也可以先部署 `redis` 再部署 `nacos`
:::
## 创建 StatefulSet
按照如下步骤创建 `redis` StatefulSet
* 在 Kuboard 界面进入名称空间 `spring-blade` 之后,点击菜单 ***名称空间*** -> ***spring-blade*** -> ***常用操作*** -> ***创建工作负载*** ,如下图所示:
并填写表单:
| 字段名称 | 字段值 | 备注 |
| ------------ | ------------- | -------------------------------------------- |
| 工作负载类型 | `StatefulSet` | |
| 工作负载分层 | `持久层` | 填写后将自动添加 `k8s.kuboard.cn/layer` 标签 |
| 工作负载名称 | `redis` | 填写后将自动添加 `k8s.kuboard.cn/name` 标签 |
| 副本数 | `1` | |
![image-20210503091044671](./m-redis.assets/image-20210503091044671.png)
* 切换到 ***容器信息*** 标签,如下图所示:
点击左侧的 ***添加工作容器*** 按钮,添加一个工作容器,并填写表单:
| 字段名称 | 字段值 | 备注 |
| --------------------------- | ------------------------------------------------------------ | ---- |
| 名称 | `redis` | |
| 容器镜像 | `从其他镜像仓库加载镜像(不使用用户名密码)` | |
| 容器镜像-->镜像仓库 | `swr.cn-east-2.myhuaweicloud.com` | |
| 容器镜像-->镜像路径 | `blade/redis` | |
| 容器镜像-->镜像标签 | `5.0.2-alpine` | |
| 镜像拉取策略 | `始终拉取新镜像Always` | |
| 命令参数 | 命令 `redis-server --appendonly yes` | |
| 资源请求/限制 | 内存资源请求:`100Mi`<br />内存资源限制:`1024Mi` | |
| 容器端口 | `TCP`<br />`redis`<br />`6379` | |
| 健康检查-->容器启动检查探针 | 探测方式: `TCP连接`<br />TCP端口 `6379`<br />不健康阈值:`20` | |
| 健康检查-->容器存活检查探针 | 探测方式: `TCP连接`<br />TCP端口 `6379` | |
| 健康检查-->容器就绪检查探针 | 探测方式: `TCP连接`<br />TCP端口 `6379` | |
![image-20210503092613363](./m-redis.assets/image-20210503092613363.png)
* 切换到 ***存储挂载*** 标签页,并点击其中的 ***添加存储卷声明模板*** 按钮,如下图所示:
填写表单:
| 字段名称 | 字段值 | 备注 |
| --------------------- | ------------------ | ------------------------------------------------------------ |
| 名称 | `data` | |
| 存储类 | `cephfs-raspberry` | * 下拉选择,根据您集群环境的不同,此参数的值可以<br />不一样,但是对应的存储类必须为有效的存储类,并<br />能够动态提供存储卷 |
| 分配模式 | `动态分配` | |
| 读写模式 | `可被多节点读写` | |
| 总量 | `2Gi` | |
| redis容器中的挂载类型 | `读写` | |
| redis容器中的挂载路径 | `/data` | |
> * 要完成这一步骤,您必须有一个有效的存储类,关于存储类的介绍请参考 [StorageClass](/learning/k8s-intermediate/persistent/storage-class.html)
> * 如果您的集群中尚未配置存储类,请参考如下三种存储类配置中的任意一种:
> * [使用 CephFS 作为存储类](/learning/k8s-intermediate/persistent/ceph/k8s-config.html)
> * [使用 CephFS 作为存储类 - Rook](/learning/k8s-intermediate/persistent/ceph/rook-config.html)
> * [使用 NFS 作为存储类](/learning/k8s-intermediate/persistent/nfs.html)
![image-20210503093400995](./m-redis.assets/image-20210503093400995.png)
* 切换到 ***高级设置*** 标签页,如下图所示:
并填写表单:
| 字段名称 | 字段值 | 备注 |
| -------------- | --------------------------- | ------------------------------------------------------------ |
| 容器组管理策略 | `Parallel` | 不按容器组的序号顺序更新容器组。此为测试环境mysql 只部署<br />一个副本,不考虑主从的情况,否则此参数不能选择 `Parallel` |
| 历史版本数量 | `10` | |
| 更新策略 | `滚动更新RollingUpdate` | |
| 分割点 | `0` | 从序号为 `0` 的容器组开始更新 StatefulSet 中的所有容器组 |
![image-20210501192537254](./m-redis.assets/image-20210501192537254.png)
* 切换到 ***服务/应用路由*** 标签页,如下图所示:
并填写表单:
| 字段名称 | 字段值 | 备注 |
| -------- | ------------------------------------------ | ------------------------------------------------- |
| 服务类型 | `Headless` | 无头 Service专用于 StatefulSet |
| 端口 | `redis`<br />`TCP`<br />`6379`<br />`6379` | 将容器的 `6379` 端口映射到 Service 的 `6379` 端口 |
![image-20210503093716733](./m-redis.assets/image-20210503093716733.png)
* 点击 ***保存*** 按钮,完成 `redis` StatefulSet 的创建
## 验证部署结果
* 在上面的步骤中,完成 StatefulSet 的保存以后,将会进入该 StatefulSet 的详情页面,如下图所示:
* 启动过程中,会看到一个 `FailedSchedule` 事件,是因为 StatefulSet ***存储卷声明模板*** 指定的 ***存储卷声明*** 尚未成功创建和绑定,只要对应的存储类是没有问题的,稍等片刻即可;
![image-20210503094542907](./m-redis.assets/image-20210503094542907.png)
* 点击上图中的 ***追踪日志*** 按钮,可以看到 redis 的日志信息,如下图所示,日志将提示:
```
Ready to accept connections
```
![image-20210503094429786](./m-redis.assets/image-20210503094429786.png)
* 点击上图中的 ***sh*** 按钮,可以进入 redis 容器的命令行终端界面,如下图所示:
执行命令:
```sh
redis-cli
PING
```
![image-20210503094931571](./m-redis.assets/image-20210503094931571.png)
如果打印出 `PONG`,我们可以认为 Redis 已经部署成功。
下一步,请 [部署 sentinel](./m-sentinel.html)

Binary file not shown.

After

Width:  |  Height:  |  Size: 327 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 418 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 291 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 787 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 317 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 585 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 585 KiB

View File

@ -0,0 +1,139 @@
---
layout: LearningLayout
description: Kubernetes教程_使用Kuboard在Kubernetes上部署Spring_Cloud微服务平台SpringBlade
meta:
- name: keywords
content: Kubernetes教程,K8S教程,Kubernetes微服务,Kubernetes Spring Cloud
---
# 部署 saber-db
<AdSenseTitle/>
::: tip 前提条件
* 部署 `saber-db` 之前,请确保您的环境已经满足 [环境准备](../prepare/prepare.html) 中的要求;
* `saber-db` 的部署并不依赖于 `nacos``redis``sentinel`,您也可以先部署 `saber-db` 再部署 `nacos``redis``sentinel`
:::
## 创建 StatefulSet
按照如下步骤创建 `saber-db` StatefulSet
* 在 Kuboard 界面进入名称空间 `spring-blade` 之后,点击菜单 ***名称空间*** -> ***spring-blade*** -> ***常用操作*** -> ***创建工作负载*** ,如下图所示:
并填写表单:
| 字段名称 | 字段值 | 备注 |
| ------------ | ------------- | -------------------------------------------- |
| 工作负载类型 | `StatefulSet` | |
| 工作负载分层 | `持久层` | 填写后将自动添加 `k8s.kuboard.cn/layer` 标签 |
| 工作负载名称 | `saber-db` | 填写后将自动添加 `k8s.kuboard.cn/name` 标签 |
| 副本数 | `1` | |
![image-20210503194614214](./m-saber-db.assets/image-20210503194614214.png)
* 切换到 ***容器信息*** 标签,如下图所示:
点击左侧的 ***添加工作容器*** 按钮,添加一个工作容器,并填写表单:
| 字段名称 | 字段值 | 备注 |
| --------------------------- | ------------------------------------------------------------ | --------------------------------------------- |
| 名称 | `saber-db` | |
| 容器镜像 | `从其他镜像仓库加载镜像(不使用用户名密码)` | |
| 容器镜像-->镜像仓库 | `swr.cn-east-2.myhuaweicloud.com` | |
| 容器镜像-->镜像路径 | `blade/saber-db` | |
| 容器镜像-->镜像标签 | `3.0.3` | |
| 镜像拉取策略 | `始终拉取新镜像Always` | |
| 环境变量 | `MYSQL_ALLOW_EMPTY_PASSWORD`=`1`<br />`MYSQL_ROOT_PASSWORD`=`root` | 类型为 `值`,点击 ***名值对*** 按钮可添加一组 |
| 资源请求/限制 | 内存资源请求:`200Mi`<br />内存资源限制:`2048Mi` | |
| 容器端口 | `mysql`<br />`3306` | |
| 健康检查-->容器启动检查探针 | 探测方式: `命令行`<br />执行命令: `mysql -uroot -proot -e 'select 1'`<br />初始延迟:`30`<br />不健康阈值:`20` | |
| 健康检查-->容器存活检查探针 | 探测方式: `命令行`<br />执行命令: `mysqladmin -uroot -proot ping` | |
| 健康检查-->容器就绪检查探针 | 探测方式: `命令行`<br />执行命令: `mysql -uroot -proot -e 'select 1'`<br /><div style="width: 400px;"></div> | |
![image-20210503204714644](./m-saber-db.assets/image-20210503204714644.png)
* 切换到 ***存储挂载*** 标签页,并点击其中的 ***添加存储卷声明模板*** 按钮,如下图所示:
填写表单:
| 字段名称 | 字段值 | 备注 |
| --------------------- | ------------------ | ------------------------------------------------------------ |
| 名称 | `data` | |
| 存储类 | `cephfs-raspberry` | * 下拉选择,根据您集群环境的不同,此参数的值可以<br />不一样,但是对应的存储类必须为有效的存储类,并<br />能够动态提供存储卷 |
| 分配模式 | `动态分配` | |
| 读写模式 | `可被多节点读写` | |
| 总量 | `2Gi` | |
| mysql 容器中的挂载类型 | `读写` | |
| mysql 容器中的挂载路径 | `/var/lib/mysql` | |
> * 要完成这一步骤,您必须有一个有效的存储类,关于存储类的介绍请参考 [StorageClass](/learning/k8s-intermediate/persistent/storage-class.html)
> * 如果您的集群中尚未配置存储类,请参考如下三种存储类配置中的任意一种:
> * [使用 CephFS 作为存储类](/learning/k8s-intermediate/persistent/ceph/k8s-config.html)
> * [使用 CephFS 作为存储类 - Rook](/learning/k8s-intermediate/persistent/ceph/rook-config.html)
> * [使用 NFS 作为存储类](/learning/k8s-intermediate/persistent/nfs.html)
![image-20210503200618642](./m-saber-db.assets/image-20210503200618642.png)
* 切换到 ***高级设置*** 标签页,如下图所示:
并填写表单:
| 字段名称 | 字段值 | 备注 |
| -------------- | --------------------------- | ------------------------------------------------------------ |
| 容器组管理策略 | `Parallel` | 不按容器组的序号顺序更新容器组。此为测试环境mysql 只部署<br />一个副本,不考虑主从的情况,否则此参数不能选择 `Parallel` |
| 历史版本数量 | `10` | |
| 更新策略 | `滚动更新RollingUpdate` | |
| 分割点 | `0` | 从序号为 `0` 的容器组开始更新 StatefulSet 中的所有容器组 |
![image-20210501192537254](./m-redis.assets/image-20210501192537254.png)
* 切换到 ***服务/应用路由*** 标签页,如下图所示:
并填写表单:
| 字段名称 | 字段值 | 备注 |
| -------- | ------------------------------------------ | ------------------------------------------------- |
| 服务类型 | `Headless` | 无头 Service专用于 StatefulSet |
| 端口 | `mysql`<br />`TCP`<br />`3306`<br />`3306` | 将容器的 `3306` 端口映射到 Service 的 `3306` 端口 |
![image-20210503200837429](./m-saber-db.assets/image-20210503200837429.png)
* 点击 ***保存*** 按钮,完成 `saber-db` StatefulSet 的创建
## 验证部署结果
* 在上面的步骤中,完成 StatefulSet 的保存以后,将会进入该 StatefulSet 的详情页面,如下图所示:
* 启动过程中,会看到一个 `FailedSchedule` 事件,是因为 StatefulSet ***存储卷声明模板*** 指定的 ***存储卷声明*** 尚未成功创建和绑定,只要对应的存储类是没有问题的,稍等片刻即可;
* `Unhealthy` 事件,启动过程中尝试校验,但是未能成功,继续等候,待数据库初始化成功以后,***容器启动检查探针*** 和 ***容器就绪检查探针成功*** 就可以执行成功,容器组进入就绪状态,如下图所示:
![image-20210503202925230](./m-saber-db.assets/image-20210503202925230.png)
* 点击上图中的 ***sh*** 按钮,可以进入 saber-db 容器的命令行终端界面,如下图所示:
执行命令:
```sh
mysql -uroot -proot
show databases;
use blade;
show tables;
```
![image-20210503203333701](./m-saber-db.assets/image-20210503203333701.png)
如果能够显示数据库 `blade` 中的表结构,则我们可以认为 `saber-db` 部署成功。
下一步,请 [部署接口网关](./m-gateway.html)

Binary file not shown.

After

Width:  |  Height:  |  Size: 319 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 613 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 554 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 349 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 KiB

View File

@ -0,0 +1,124 @@
---
layout: LearningLayout
description: Kubernetes教程_使用Kuboard在Kubernetes上部署Spring_Cloud微服务平台SpringBlade
meta:
- name: keywords
content: Kubernetes教程,K8S教程,Kubernetes微服务,Kubernetes Spring Cloud
---
# 部署 sentinel
<AdSenseTitle/>
::: tip 前提条件
* 部署 `sentinel` 之前,请确保您的环境已经满足 [环境准备](../prepare/prepare.html) 中的要求;
* `sentinel` 的部署并不依赖于 `nacos``redis`,您也可以先部署 `sentinel` 再部署 `nacos``redis`
:::
## 创建 StatefulSet
按照如下步骤创建 `sentinel` StatefulSet
* 在 Kuboard 界面进入名称空间 `spring-blade` 之后,点击菜单 ***名称空间*** -> ***spring-blade*** -> ***常用操作*** -> ***创建工作负载*** ,如下图所示:
并填写表单:
| 字段名称 | 字段值 | 备注 |
| ------------ | ------------- | -------------------------------------------- |
| 工作负载类型 | `StatefulSet` | |
| 工作负载分层 | `持久层` | 填写后将自动添加 `k8s.kuboard.cn/layer` 标签 |
| 工作负载名称 | `sentinel` | 填写后将自动添加 `k8s.kuboard.cn/name` 标签 |
| 副本数 | `1` | |
![image-20210503191147261](./m-sentinel.assets/image-20210503191147261.png)
* 切换到 ***容器信息*** 标签,如下图所示:
点击左侧的 ***添加工作容器*** 按钮,添加一个工作容器,并填写表单:
| 字段名称 | 字段值 | 备注 |
| --------------------------- | ------------------------------------------------------------ | ---- |
| 名称 | `sentinel` | |
| 容器镜像 | `从其他镜像仓库加载镜像(不使用用户名密码)` | |
| 容器镜像-->镜像仓库 | `swr.cn-east-2.myhuaweicloud.com` | |
| 容器镜像-->镜像路径 | `blade/sentinel-dashboard` | |
| 容器镜像-->镜像标签 | `1.8.0` | |
| 镜像拉取策略 | `始终拉取新镜像Always` | |
| 资源请求/限制 | 内存资源请求:`100Mi`<br />内存资源限制:`1024Mi` | |
| 容器端口 | `TCP`<br />`web`<br />`8858` | |
| 健康检查-->容器启动检查探针 | 探测方式: `HTTP请求`<br />HTTP请求端口 `8858`<br />HTTP请求路径`/`<br />不健康阈值:`20` | |
| 健康检查-->容器存活检查探针 | 探测方式: `HTTP请求`<br />HTTP请求端口 `8858`<br />HTTP请求路径`/` | |
| 健康检查-->容器就绪检查探针 | 探测方式: `TCP连接`<br />HTTP请求端口 `8858`<br />HTTP请求路径`/` | |
![image-20210503193100317](./m-sentinel.assets/image-20210503193100317.png)
* 切换到 ***高级设置*** 标签页,如下图所示:
并填写表单:
| 字段名称 | 字段值 | 备注 |
| -------------- | --------------------------- | ------------------------------------------------------------ |
| 容器组管理策略 | `Parallel` | 不按容器组的序号顺序更新容器组。此为测试环境mysql 只部署<br />一个副本,不考虑主从的情况,否则此参数不能选择 `Parallel` |
| 历史版本数量 | `10` | |
| 更新策略 | `滚动更新RollingUpdate` | |
| 分割点 | `0` | 从序号为 `0` 的容器组开始更新 StatefulSet 中的所有容器组 |
![image-20210501192537254](./m-redis.assets/image-20210501192537254.png)
* 切换到 ***服务/应用路由*** 标签页,如下图所示:
并填写表单:
| 字段名称 | 字段值 | 备注 |
| -------- | ---------------------------------------------------------- | ------------------------------------------------- |
| 服务类型 | `NodePort` | NodePort可将端口映射到任意节点的指定节点端口 |
| 端口 | `sentinel`<br />`TCP`<br />`8858`<br />`32100`<br />`8858` | 将容器的 `8858` 端口映射到 Service 的 `8858` 端口 |
![image-20210503193251271](./m-sentinel.assets/image-20210503193251271.png)
* 点击 ***保存*** 按钮,完成 `sentinel` StatefulSet 的创建
## 验证部署结果
* 在上面的步骤中,完成 StatefulSet 的保存以后,将会进入该 StatefulSet 的详情页面,如下图所示:
![image-20210503192601281](./m-sentinel.assets/image-20210503192601281.png)
* 点击上图中的 ***追踪日志*** 按钮,可以看到 sentinel 的日志信息,如下图所示,日志将提示:
```
Started DashboardApplication in 6.317 seconds (JVM running for 7.225)
```
![image-20210503192716871](./m-sentinel.assets/image-20210503192716871.png)
* 在浏览器中输入地址 `http://任意节点IP:32100` ,并打开该页面,如下图所示:
使用默认用户名密码完成登录:
用户名: `sentinel`
密码: `sentinel`
![image-20210503193935702](./m-sentinel.assets/image-20210503193935702.png)
* 登录成功后,界面显示如下:
![image-20210503194048357](./m-sentinel.assets/image-20210503194048357.png)
* 至此,我们可以认为 sentinel 已部署成功。
下一步,请 [部署 saber-db](./m-saber-db.html)

Binary file not shown.

After

Width:  |  Height:  |  Size: 334 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 518 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 651 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 749 KiB

View File

@ -0,0 +1,100 @@
---
layout: LearningLayout
description: Kubernetes教程_使用Kuboard在Kubernetes上部署Spring_Cloud微服务平台SpringBlade
meta:
- name: keywords
content: Kubernetes教程,K8S教程,Kubernetes微服务,Kubernetes Spring Cloud
---
# 部署 swagger
<AdSenseTitle/>
::: tip 前提条件
部署 swagger 之前,请确保:
* 您的环境已经满足 [环境准备](../prepare/prepare.html) 中的要求
* 已经完成了 [部署 nacos](./nacos.html)
* 已经完成了 [部署接口网关](./gateway.html)
:::
本文将按照如下步骤完成 `swagger` 的创建:
* 创建 Deployment
* 验证部署结果
## 创建 Deployment
按照如下步骤创建 `swagger` Deployment
* 在 Kuboard 界面进入名称空间 `spring-blade` 之后,点击菜单 ***名称空间*** -> ***spring-blade*** -> ***常用操作*** -> ***创建工作负载*** ,如下图所示:
并填写表单:
| 字段名称 | 字段值 | 备注 |
| ------------ | ------------ | -------------------------------------------- |
| 工作负载类型 | `Deployment` | |
| 工作负载分层 | `中间件` | 填写后将自动添加 `k8s.kuboard.cn/layer` 标签 |
| 工作负载名称 | `swagger` | 填写后将自动添加 `k8s.kuboard.cn/name` 标签 |
| 副本数 | `1` | |
![image-20210503223531766](./m-swagger.assets/image-20210503223531766.png)
* 切换到 ***容器信息*** 标签,如下图所示:
点击左侧的 ***添加工作容器*** 按钮,添加一个工作容器,并填写表单:
| 字段名称 | 字段值 | 备注 |
| ----------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| 名称 | `swagger` | |
| 容器镜像 | `从其他镜像仓库加载镜像(不使用用户名密码)` | |
| 容器镜像-->镜像仓库 | `swr.cn-east-2.myhuaweicloud.com` | |
| 容器镜像-->镜像路径 | `blade/swagger` | |
| 容器镜像-->镜像标签 | `3.0.3` | |
| 镜像拉取策略 | `始终拉取新镜像Always` | |
| 命令参数<div style="width: 120px;"></div> | 参数<div style="width: 450px;"> `--spring.profiles.active=${PROFILE} --spring.cloud.nacos.config.server-addr=${NACOS_SERVER_ADDR} --spring.cloud.nacos.discovery.server-addr=${NACOS_SERVER_ADDR} --spring.cloud.sentinel.transport.dashboard=${SENTINEL_DASHBOARD_ADDR} --server.port=80` </div> | 通过启动参数指定:<li>spring的 profile</li><li>Nacos配置中心地址</li><li>Nacos服务发现地址</li><li>Sentinel地址</li><li>服务端口</li><div style="width: 150px;"></div> |
| 环境变量 | `配置字典引用` `blade-config` | 点击 ***+ 配置*** 按钮,可以添加一个配置字典的条目;此配置将 `blade-config` 配置字典中的每一个条目都映射成容器中的一个变量及变量值 |
| 资源请求/限制 | 内存资源请求:`200Mi`<br />内存资源限制:`2048Mi` | |
| 容器端口 | `server ` `80` | |
| 健康检查-->容器启动检查探针 | 探测方式: `HTTP请求`<br />HTTP请求端口 `80`<br />HTTP请求路径 `/actuator/health`<br />初始延迟:`30`<br />不健康阈值: `20` | |
| 健康检查-->容器存活检查探针 | 探测方式: `HTTP请求`<br />HTTP请求端口 `80`<br />HTTP请求路径 `/actuator/health` | |
| 健康检查-->容器就绪检查探针 | 探测方式: `HTTP请求`<br />HTTP请求端口 `80`<br />HTTP请求路径 `/actuator/health` | |
![image-20210503224351929](./m-swagger.assets/image-20210503224351929.png)
* 点击 ***保存*** 按钮,完成 `swagger` Deployment 的创建
## 验证部署结果
按照下面的步骤,可以验证 `swagger` 是否已经成功启动:
* 在上面的步骤中,完成 Deployment 的保存以后,将会进入该 Deployment 的详情页面,如下图所示:
![image-20210503224838823](./m-swagger.assets/image-20210503224838823.png)
* 点击上图中的 ***追踪日志*** 按钮,可以看到 swagger 的日志信息,如下图所示,日志将提示:
```
---[BLADE-SWAGGER]---启动完成,当前使用的端口:[80],环境变量:[k8s]---
```
![image-20210503224954790](./m-swagger.assets/image-20210503224954790.png)
* 至此,我们可以认为 swagger 已经部署成功。
下一步,请 [部署所有的微服务](./blade-svc.html)

View File

@ -0,0 +1,19 @@
---
layout: LearningLayout
description: Kubernetes教程_使用Kuboard在Kubernetes上部署Spring_Cloud微服务平台SpringBlade
meta:
- name: keywords
content: Kubernetes教程,K8S教程,Kubernetes微服务,Kubernetes Spring Cloud
---
# 部署其他基础软件
<AdSenseTitle/>
nacos 是 SpringBlade 应用中需要最先部署的应用,除此之外,如下基础软件也建议在部署微服务组件之前完成:
* [部署 redis](./m-redis.html)
* [部署 sentinel](./m-sentinel.html)
* [部署 saber-db](./m-saber-db.html)
* [部署 api-gateway](./m-gateway.html)
* [部署 swagger](./m-swagger.html)

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 528 KiB

View File

@ -0,0 +1,75 @@
---
layout: LearningLayout
description: Kubernetes教程_使用Kuboard在Kubernetes上部署Spring_Cloud微服务平台SpringBlade
meta:
- name: keywords
content: Kubernetes教程,K8S教程,Kubernetes微服务,Kubernetes Spring Cloud
---
# 导入配置到 nacos
<AdSenseTitle/>
::: tip 前提条件
导入配置到 nacos 之前,请确保您已完成:
* [部署 nacos-mysql](./nacos-mysql.html)
* [部署 nacos](./nacos-install.html)
:::
SpringBlade 使用 nacos 作为微服务配置中心,按照本文描述的步骤,可以将 SpringBlade 的微服务配置文件导入到 nacos 配置中心。
## 导入配置文件
* 依据 [部署 nacos](./nacos-install.html#验证部署结果) 中描述的方式登录 Nacos 界面,如下图所示:
![image-20210502211147897](./nacos-config.assets/image-20210502211147897.png)
* 点击上图中红色箭头指向的按钮,结果如下图所示:
填写表单:
| 字段名 | 字段值 | 备注 |
| -------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| Data ID | `blade.yaml` | |
| Group | `DEFAULT_GROUP` | |
| 配置格式 | `YAML` | |
| 配置内容 <div style="width: 80px;"></div> | 链接 <a href="https://gitee.com/smallc/SpringBlade/raw/v3.0.3/doc/nacos/blade.yaml" target="_blank">https://gitee.com/smallc/SpringBlade/raw/v3.0.3/doc/nacos/blade.yaml</a> 中的内容 | 在浏览器打开该链接,并将其内容复制粘贴到 ***配置内容*** 字段 |
![image-20210502221927378](./nacos-config.assets/image-20210502221927378.png)
* 点击 ***发布*** 按钮,并重复上述过程,添加一个新的配置 ***blade-test.yaml***
表单如下:
| 字段名 | 字段值 | 备注 |
| -------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| Data ID | `blade-test.yaml` | <div style="color: red; font-weight: bold;">此处为 `blade-test.yaml` 不要写错</div> |
| Group | `DEFAULT_GROUP` | |
| 配置格式 | `YAML` | |
| 配置内容 <div style="width: 80px;"></div> | 链接 <a href="https://gitee.com/smallc/SpringBlade/raw/v3.0.3/doc/nacos/blade-k8s.yaml" target="_blank">https://gitee.com/smallc/SpringBlade/raw/v3.0.3/doc/nacos/blade-k8s.yaml</a> | 在浏览器打开该链接,并将其内容复制粘贴到 ***配置内容*** 字段;<br /><div style="color: red; font-weight: bold;">此处使用 `blade-k8s.yaml` 文件中的内容,不要弄错</div> |
## 验证配置存储
* 在 Kuboard 中切换到 StatefulSet `nacos_mysql` 的详情页,如下图所示:
![image-20210502223150396](./nacos-config.assets/image-20210502223150396.png)
* 点击上图中的 ***sh*** 按钮,打开终端界面,如下图所示:
在终端界面中执行如下命令,可以看到前面步骤中向 nacos 添加的配置信息被存到了 `nacos_test` 数据库中的 `config_info` 表中。
``` sh
mysql
use nacos_test;
select data_id, group_id, gmt_create from config_info;
```
![image-20210502222927450](./nacos-config.assets/image-20210502222927450.png)
* 至此,我们可以认为 nacos 的配置导入成功。
下一步,请 [部署 redis](./redis.html)

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 414 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 553 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 407 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 416 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 419 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 330 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 334 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 387 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 691 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

View File

@ -0,0 +1,223 @@
---
layout: LearningLayout
description: Kubernetes教程_使用Kuboard在Kubernetes上部署Spring_Cloud微服务平台SpringBlade
meta:
- name: keywords
content: Kubernetes教程,K8S教程,Kubernetes微服务,Kubernetes Spring Cloud
---
# 部署 nacos
<AdSenseTitle/>
::: tip 前提条件
部署 nacos 之前,请确保
* 您的环境已经满足 [环境准备](../prepare/prepare.html) 中的要求;
* 您已经完成了 [部署 nacos-mysql](./nacos-mysql.html)
:::
## 创建 StatefulSet
按照如下步骤创建 `nacos-mysql` StatefulSet
* 在 Kuboard 界面进入名称空间 `spring-blade` 之后,点击菜单 ***名称空间*** -> ***spring-blade*** -> ***常用操作*** -> ***创建工作负载*** ,如下图所示:
并填写表单:
| 字段名称 | 字段值 | 备注 |
| ------------ | ------------- | -------------------------------------------- |
| 工作负载类型 | `StatefulSet` | |
| 工作负载分层 | `持久层` | 填写后将自动添加 `k8s.kuboard.cn/layer` 标签 |
| 工作负载名称 | `nacos` | 填写后将自动添加 `k8s.kuboard.cn/name` 标签 |
| 副本数 | `1` | |
![image-20210502165610161](./nacos-install.assets/image-20210502165610161.png)
* 切换到 ***容器信息*** 标签,如下图所示:
点击左侧的 ***添加工作容器*** 按钮,添加一个工作容器,并填写表单:
| 字段名称 | 字段值 | 备注 |
| ------------------- | ------------------------------------------------------------ | --------------------------------------------------- |
| 名称 | `nacos` | |
| 容器镜像 | `从其他镜像仓库加载镜像(不使用用户名密码)` | |
| 容器镜像-->镜像仓库 | `swr.cn-east-2.myhuaweicloud.com` | |
| 容器镜像-->镜像路径 | `blade/nacos-server` | |
| 容器镜像-->镜像标签 | `2.0.0` | |
| 镜像拉取策略 | `始终拉取新镜像Always` | |
| 环境变量 | `MODE` = `standalone`<br/>`PREFER_HOST_MODE` = `hostname`<br/>`SPRING_DATASOURCE_PLATFORM` = `mysql`<br/>`MYSQL_SERVICE_HOST` = `nacos-mysql-0.nacos-mysql`<br/>`MYSQL_SERVICE_DB_NAME` = `nacos_test`<br/>`MYSQL_SERVICE_PORT` = `3306`<br/>`MYSQL_SERVICE_USER` = `nacos`<br/>`MYSQL_SERVICE_PASSWORD` = `nacos` | 类型为 `值`,点击 ***名值对*** <br />按钮可添加一组 |
| 资源请求/限制 | 内存资源请求:`200Mi`<br />内存资源限制:`2048Mi` | |
| 容器端口 | `client` `8848`<br />`client-rpc` `9848`<br />`raft-rpc` `9849` | |
![image-20210502170037521](./nacos-install.assets/image-20210502170037521.png)
点击 ***容器启动检查探针*** 的 ***启用*** 按钮:
并填写表单:
| 字段名称 | 字段值 | 备注 |
| -------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| 探针类型 | `HTTP请求` | |
| HttpGet | 端口 `8848`<br />路径`/nacos/v1/ns/instance/list?serviceName=nacos` <div style="width: 280px;"></div>| |
| 初始延迟(秒) | `30` | |
| 不健康阈值 | `20` | 执行探测频率 * 不健康阈值 = 10 * 20 = 200秒容器创建 200 秒后HttpGet `http://${podIP}:8848/nacos/v1/ns/instance/list?serviceName=nacos` 如果仍未执行成功kubelet 将认为该容器启动失败,并强制重启该容器。 |
![image-20210502170212388](./nacos-install.assets/image-20210502170212388.png)
按照同样的方式,启用 ***容器存活检查探针*** ,表单内容如下所示:
| 字段名称 | 字段值 | 备注 |
| ---------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| 探针类型探针类型 | `HTTP请求` | |
| HttpGetCommand | 端口 `8848`<br />路径 `/nacos/v1/ns/instance/list?serviceName=nacos` <div style="width: 280px;"></div> | |
| 初始延迟(秒) | `30` | |
| 不健康阈值 | `3` | 连续3此失败后kubelet 将认为该容器已经不健康,并强制重启该容器 |
按照同样的方式,启用 ***容器就绪检查探针*** ,表单内容如下所示:
| 字段名称 | 字段值 | 备注 |
| ---------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| 探针类型探针类型 | `HTTP请求` | |
| HttpGetCommand | 端口 `8848`<br />路径 `/nacos/v1/ns/instance/list?serviceName=nacos` <div style="width: 280px;"></div> | |
| 初始延迟(秒) | `30` | |
| 健康阈值 | `2` | 探针连续执行成功 2 次以后kubelet 认为该容器已就绪,并将其添加到对应 Service (如果有)的 Endpoint 中Service 此时可以分发流量到该容器 |
| 不健康阈值 | `3` | 探针连续执行失败 3 此以后kubelet 认为该容器已经不健康,并强制重启该容器 |
完成 ***健康检查*** 的设置以后,界面截图如下所示:
![image-20210502171300961](./nacos-install.assets/image-20210502171300961.png)
* 切换到 ***存储挂载*** 标签页,如下图所示:
![image-20210501191649020](./nacos-install.assets/image-20210501191649020.png)
点击上图中 ***添加存储卷声明模板*** 按钮,如下图所示:
填写表单:
| 字段名称 | 字段值 | 备注 |
| --------------------- | ------------------ | ------------------------------------------------------------ |
| 名称 | `logs` | |
| 存储类 | `cephfs-raspberry` | * 下拉选择,根据您集群环境的不同,此参数的值可以<br />不一样,但是对应的存储类必须为有效的存储类,并<br />能够动态提供存储卷 |
| 分配模式 | `动态分配` | |
| 读写模式 | `可被多节点读写` | |
| 总量 | `2Gi` | |
| nacos容器中的挂载类型 | `读写` | |
| nacos容器中的挂载路径 | `/home/nacos/logs` | Nacos 存储日志的位置。StatefuSet 的 ***存储卷声明模板*** 会为每个容器组分配一个存储卷声明,以便存在多个 nacos 副本时,每个副本的日志文件不会产生冲突。 |
> * 要完成这一步骤,您必须有一个有效的存储类,关于存储类的介绍请参考 [StorageClass](/learning/k8s-intermediate/persistent/storage-class.html)
> * 如果您的集群中尚未配置存储类,请参考如下三种存储类配置中的任意一种:
> * [使用 CephFS 作为存储类](/learning/k8s-intermediate/persistent/ceph/k8s-config.html)
> * [使用 CephFS 作为存储类 - Rook](/learning/k8s-intermediate/persistent/ceph/rook-config.html)
> * [使用 NFS 作为存储类](/learning/k8s-intermediate/persistent/nfs.html)
![image-20210502171521627](./nacos-install.assets/image-20210502171521627.png)
点击上图中 ***添加数据卷*** 按钮,如下图所示:
![image-20210502171857250](./nacos-install.assets/image-20210502171857250.png)
在上图中切换到 ***配置字典*** 标签页,并点击 ***创建*** 按钮,如下图所示:
填写表单:
| 字段名称 | 字段值 | 备注 |
| -------- | ------------------------------------------------------------ | -------------------------------------------------------- |
| 名称 | nacos-config | 配置字典的名称 |
| 数据 | `custom.properties`<br /><div style="color: grey; padding: 10px 15px; background-color: white; font-size: 13px;"> #spring.security.enabled=false<br/>#management.security=false<br/>#security.basic.enabled=false<br/>#nacos.security.ignore.urls=/**<br/>#management.metrics.export.elastic.host=http://localhost:9200<br/># metrics for prometheus<br/>management.endpoints.web.exposure.include=*<br/><br/># metrics for elastic search<br/>#management.metrics.export.elastic.enabled=false<br/>#management.metrics.export.elastic.host=http://localhost:9200<br/><br/># metrics for influx<br/>#management.metrics.export.influx.enabled=false<br/>#management.metrics.export.influx.db=springboot<br/>#management.metrics.export.influx.uri=http://localhost:8086<br/>#management.metrics.export.influx.auto-create-db=true<br/>#management.metrics.export.influx.consistency=one<br/>#management.metrics.export.influx.compressed=true</div> | nacos的配置文件内容作为 <br />`custom.properties` 的取值 |
![image-20210502174047675](./nacos-install.assets/image-20210502174047675.png)
点击上图中的 ***保存*** 按钮,将完成配置字典 `nacos-config` 的创建,您也可以在菜单 ***名称空间*** -> ***spring-blade*** -> ***配置中心*** -> ***配置字典*** 中管理刚才创建的配置字典。
完成配置字典 `nacos-config` 的创建后,该对话框将关闭,我们继续完善 StatefulSet 的数据卷配置,如下图所示:
填写表单:
| 字段名称 | 字段值 | 备注 |
| ----------------------- | -------------------------------------- | ------------------ |
| 名称 | `volume-6aidn` | 自动生成的名称即可 |
| 数据卷类型 | `配置字典` | |
| | | |
| 分配模式 | `动态分配` | |
| 读写模式 | `可被多节点读写` | |
| 总量 | `2Gi` | |
| nacos容器中的挂载类型 | `只读` | |
| nacos容器中的挂载路径 | `/home/nacos/init.d/custom.properties` | |
| nacos容器中的挂载子路径 | `custom.properties` | |
![image-20210502201519030](./nacos-install.assets/image-20210502201519030.png)
* 切换到 ***高级设置*** 标签页,如下图所示
并填写表单:
| 字段名称 | 字段值 | 备注 |
| -------------- | --------------------------- | ------------------------------------------------------------ |
| 容器组管理策略 | `Parallel` | 不按容器组的序号顺序更新容器组。此为测试环境mysql 只部署<br />一个副本,不考虑主从的情况,否则此参数不能选择 `Parallel` |
| 历史版本数量 | `10` | |
| 更新策略 | `滚动更新RollingUpdate` | |
| 分割点 | `0` | 从序号为 `0` 的容器组开始更新 StatefulSet 中的所有容器组 |
![image-20210502194959055](./nacos-install.assets/image-20210502194959055.png)
* 切换到 ***服务/应用路由*** 标签页,如下图所示:
并填写表单:
| 字段名称 | 字段值 | 备注 |
| -------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| 服务类型 | `NodePort` | `NodePort` 类型的Service可以将容器端口映射到集群中任意节点的节点端口 |
| 端口 | 端口名称: `nacos-client`<br />协 议:`TCP`<br />服务端口: `8848`<br />节点端口: `32000`<br />容器端口: `8848` <div style="width: 240px;"></div>| 将容器的 `8848` 端口映射到 Service 的 `8848` 端口以及任意节点的 `32000` 端口 |
| 会话保持 | `ClientIP`<br />timeoutSeconds`10800` | |
![image-20210502200325168](./nacos-install.assets/image-20210502200325168.png)
* 点击 ***保存*** 按钮,依据界面提示完成保存操作
## 验证部署结果
* 在上面的步骤中,完成 StatefulSet 的保存以后,将会进入该 StatefulSet 的详情页,如下图所示:
* 启动过程中,会看到两个 `FailedSchedule` 事件,是因为 StatefulSet ***存储卷声明模板*** 指定的 ***存储卷声明*** 尚未成功创建和绑定,只要对应的存储类是没有问题的,稍等片刻即可;
![image-20210502205924106](./nacos-install.assets/image-20210502205924106.png)
* 点击上图中,容器端口 `8848` 后面对应的绿色图标,如下图所示:
修改 ***访问路径*** 字段为 `/nacos`
![image-20210502210356041](./nacos-install.assets/image-20210502210356041.png)
* 在上图中修改 ***访问路径*** 字段后,点击 ***在浏览器窗口打开*** 按钮,将会打开一个新的窗口,如下图所示:
填写登录信息:
用户名:`nacos`
密码: `nacos`
![image-20210502210647992](./nacos-install.assets/image-20210502210647992.png)
* 在上图中点击 ***提交*** 按钮,完成 nacos 登录,如下图所示:
![image-20210502211147897](./nacos-install.assets/image-20210502211147897.png)
::: warning KuboardProxy 的使用
* 在本例中,我们使用 KuboardProxy 访问 Nacos 的界面,然而,这种访问方式在绝大多数情况下是可以满足使用要求的(尤其是接口调用测试时),但并不是完美的,因为少部分应用可能会使用绝对路径来加载静态资源。例如 Nacos 就从路径 `/nacos/console-ui/public/icons/icon-font.woff` 加载一些图标,但是 KuboardProxy 必须把应用重新指向了一个比较长的相对路径才能工作;在缺失 `icon-font.woff` 静态资源的情况下Nacos 界面中的部分图标不能正常显示(例如上图红色箭头指向的按钮中,原本有一个加号图标),但是所有的应用功能仍然能够正常操作。
* 按照本文描述的 Nacos 部署方式,您也可以用下面的地址访问 Nacos 界面:
`http://任意节点IP地址:32000/nacos`
:::
* 至此,我们可以认为 `nacos` 部署成功。
下一步,请 [导入配置到 nacos](./nacos-config.html)

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 482 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 809 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 449 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 553 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 365 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 300 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 647 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 247 KiB

View File

@ -0,0 +1,178 @@
---
layout: LearningLayout
description: Kubernetes教程_使用Kuboard在Kubernetes上部署Spring_Cloud微服务平台SpringBlade
meta:
- name: keywords
content: Kubernetes教程,K8S教程,Kubernetes微服务,Kubernetes Spring Cloud
---
# 部署 nacos-mysql
<AdSenseTitle/>
::: tip 前提条件
部署 nacos-mysql 之前,请确保您的环境已经满足 [环境准备](../prepare/prepare.html) 中的要求。
:::
## 创建 StatefulSet
按照如下步骤创建 `nacos-mysql` StatefulSet
* 在 Kuboard 界面进入名称空间 `spring-blade` 之后,点击菜单 ***名称空间*** -> ***spring-blade*** -> ***常用操作*** -> ***创建工作负载*** ,如下图所示:
并填写表单:
| 字段名称 | 字段值 | 备注 |
| ------------ | ----------- | -------------------------------------------- |
| 工作负载类型 | `StatefulSet` | |
| 工作负载分层 | `持久层` | 填写后将自动添加 `k8s.kuboard.cn/layer` 标签 |
| 工作负载名称 | `nacos-mysql` | 填写后将自动添加 `k8s.kuboard.cn/name` 标签 |
| 副本数 | `1` | |
![image-20210501181648619](./nacos-mysql.assets/image-20210501181648619.png)
* 切换到 ***容器信息*** 标签,如下图所示:
点击左侧的 ***添加工作容器*** 按钮,添加一个工作容器,并填写表单:
| 字段名称 | 字段值 | 备注 |
| ------------------- | ------------------------------------------------------------ | ---- |
| 名称 | `mysql` | |
| 容器镜像 | `从其他镜像仓库加载镜像(不使用用户名密码)` | |
| 容器镜像-->镜像仓库 | `swr.cn-east-2.myhuaweicloud.com` | |
| 容器镜像-->镜像路径 | `blade/nacos-mysql` | |
| 容器镜像-->镜像标签 | `5.7` | |
| 镜像拉取策略 | `始终拉取新镜像Always` | |
| 环境变量 | `MYSQL_ALLOW_EMPTY_PASSWORD`=`1`<br />`MYSQL_DATABASE`=`nacos_test`<br />`MYSQL_USER`=`nacos`<br />`MYSQL_PASSWORD`=`nacos` | 类型为 `值`,点击 ***名值对*** 按钮可添加一组 |
| 资源请求/限制 | 内存资源请求:`100Mi`<br />内存资源限制:`1000Mi` | |
| 容器端口 | `mysql`<br />`3306` | |
![image-20210501182754535](./nacos-mysql.assets/image-20210501182754535.png)
启用 ***健康检查*** ,如下图所示:
![image-20210501183908989](./nacos-mysql.assets/image-20210501183908989.png)
点击 ***容器启动检查探针*** 的 ***启用*** 按钮,如下图所示:
并填写表单:
| 字段名称 | 字段值 | 备注 |
| -------------- | ---------------------------------- | ------------------------------------------------------------ |
| 探针类型 | `命令行` | |
| Command | `mysql -h 127.0.0.1 -e 'select 1'` | |
| 初始延迟(秒) | `30` | |
| 不健康阈值 | `20` | 执行探测频率 * 不健康阈值 = 10 * 20 = 200秒<br />容器创建 200 秒后Command<br /> `mysql -h 127.0.0.1 -e 'select 1'` <br />如果仍未执行成功kubelet 将认为该容器启动失败,<br />并强制重启该容器。 |
![image-20210501184519436](./nacos-mysql.assets/image-20210501184519436.png)
按照同样的方式,启用 ***容器存活检查探针*** ,表单内容如下所示:
| 字段名称 | 字段值 | 备注 |
| -------------- | ----------------- | ------------------------------------------------------------ |
| 探针类型 | `命令行` | |
| Command | `mysqladmin ping` | |
| 初始延迟(秒) | `30` | |
| 不健康阈值 | `3` | 连续3此失败后kubelet 将认为该容器已经不健康,并强制重启该容器 |
按照同样的方式,启用 ***容器就绪检查探针*** ,表单内容如下所示:
| 字段名称 | 字段值 | 备注 |
| -------------- | ---------------------------------- | ------------------------------------------------------------ |
| 探针类型 | `命令行` | |
| Command | `mysql -h 127.0.0.1 -e 'select 1'` | |
| 初始延迟(秒) | `30` | |
| 健康阈值 | `2` | 探针连续执行成功 2 次以后kubelet 认为该容器已就绪,并将其添加到对应 Service (如果有)的 Endpoint 中Service 此时可以分发流量到该容器 |
| 不健康阈值 | `3` | 探针连续执行失败 3 此以后kubelet 认为该容器已经不健康,并强制重启该容器 |
完成 ***健康检查*** 的设置以后,界面截图如下所示:
![image-20210501191122507](./nacos-mysql.assets/image-20210501191122507.png)
* 切换到 ***存储挂载*** 标签页,如下图所示:
![image-20210501191649020](./nacos-mysql.assets/image-20210501191649020.png)
点击上图中 ***添加存储卷声明模板*** 按钮,如下图所示:
填写表单:
| 字段名称 | 字段值 | 备注 |
| ---------------------- | ------------------ | ------------------------------------------------------------ |
| 名称 | `data` | |
| 存储类 | `cephfs-raspberry` | * 下拉选择,根据您集群环境的不同,此参数的值可以<br />不一样,但是对应的存储类必须为有效的存储类,并<br />能够动态提供存储卷 |
| 分配模式 | `动态分配` | |
| 读写模式 | `可被多节点读写` | |
| 总量 | `2Gi` | |
| mysql 容器中的挂载类型 | `读写` | |
| mysql 容器中的挂载路径 | `/var/lib/mysql` | |
> * 要完成这一步骤,您必须有一个有效的存储类,关于存储类的介绍请参考 [StorageClass](/learning/k8s-intermediate/persistent/storage-class.html)
> * 如果您的集群中尚未配置存储类,请参考如下三种存储类配置中的任意一种:
> * [使用 CephFS 作为存储类](/learning/k8s-intermediate/persistent/ceph/k8s-config.html)
> * [使用 CephFS 作为存储类 - Rook](/learning/k8s-intermediate/persistent/ceph/rook-config.html)
> * [使用 NFS 作为存储类](/learning/k8s-intermediate/persistent/nfs.html)
![image-20210501191830399](./nacos-mysql.assets/image-20210501191830399.png)
* 切换到 ***高级设置*** 标签页,如下图所示:
并填写表单:
| 字段名称 | 字段值 | 备注 |
| -------------- | --------------------------- | ------------------------------------------------------------ |
| 容器组管理策略 | `Parallel` | 不按容器组的序号顺序更新容器组。此为测试环境mysql 只部署<br />一个副本,不考虑主从的情况,否则此参数不能选择 `Parallel` |
| 历史版本数量 | `10` | |
| 更新策略 | `滚动更新RollingUpdate` | |
| 分割点 | `0` | 从序号为 `0` 的容器组开始更新 StatefulSet 中的所有容器组 |
![image-20210501192537254](./nacos-mysql.assets/image-20210501192537254.png)
* 切换到 ***服务/应用路由*** 标签页,如下图所示:
并填写表单:
| 字段名称 | 字段值 | 备注 |
| -------- | ------------------------------------------ | ------------------------------------------------- |
| 服务类型 | `Headless` | 无头 Service专用于 StatefulSet |
| 端口 | `mysql`<br />`TCP`<br />`3306`<br />`3306` | 将容器的 `3306` 端口映射到 Service 的 `3306` 端口 |
![image-20210501193259832](./nacos-mysql.assets/image-20210501193259832.png)
* 点击 ***保存*** 按钮,依据界面提示完成保存操作
## 验证部署结果
* 完成保存后,并等候一定的时间,界面显示如下:
从界面中我们可以看到多个失败事件:
* `FailedSchedule`,原因是容器组所需要的存储卷声明尚未成功绑定,待存储类动态提供存储卷之后,容器组就立刻进入 ***已调度*** 的状态;
* `Unhealthy`,点击 ***追踪日志*** 的按钮,可以看到,此 mysql 容器在第一次启动时会执行数据初始化的工作因此启动过程耗时较长图中显示整个启动过程中kubelet 执行了 2 次失败的 `Startup probe failed` ***容器启动检查探针***,只要这个次数在前面定义的 ***容器启动检查探针*** --> ***不健康阈值*** 的范围之内kubelet 仍将继续等待该容器的启动,否则 kublet 将强制重启该容器。
> 在截图中,***容器启动检查探针*** 只失败了两次(实际执行了三次,第三次执行结果为成功,并为生成事件,但是变更了容器的状态),容器就成功启动了;
> 在您的安装过程中,依据容器启动的时间长短,***容器启动检查探针*** 失败的次数可能所有不同。
![image-20210501193803996](./nacos-mysql.assets/image-20210501193803996.png)
* 点击上图中的 ***bash*** 按钮,界面显示如下:
下图显示的内容为进入 ***bash*** 界面之后执行了如下指令的结果:
```sh
mysql
show databases;
show tables;
```
![image-20210501194542057](./nacos-mysql.assets/image-20210501194542057.png)
* 至此,我们可以认为 `nacos-mysql` 部署成功。
下一步,请 [部署 nacos](./nacos-install.html)

View File

@ -0,0 +1,33 @@
---
layout: LearningLayout
description: Kubernetes教程_使用Kuboard在Kubernetes上部署Spring_Cloud微服务平台SpringBlade
meta:
- name: keywords
content: Kubernetes教程,K8S教程,Kubernetes微服务,Kubernetes Spring Cloud
---
# Nacos 介绍
<AdSenseTitle/>
在 Spring Blade 中Nacos 被用于:
* 服务发现
* 微服务配置信息管理
Nacos 是 Spring Blade 中一个非常重要的基础软件,也是部署 Spring Blade 时首先要部署的一个软件。
本文描述了如何在 K8S 上部署以 mysql 数据库作为后端存储的单机版 nacos未来将进一步提供 nacos 集群版的部署文档。
部署 nacos 时,需要用到如下两个镜像,这两个镜像均来自于 nacos 官方发布到 docker hub 的镜像,为了给大家提供更快速的国内下载速度,将其推送到华为的镜像仓库,供大家测试使用。
| 镜像标签 | 镜像来源 | 来源链接 |
| ---------------------------------------------------------- | -------------------------- | ------------------------------------------- |
| `swr.cn-east-2.myhuaweicloud.com/blade/nacos-server:2.0.0` | `nacos/nacos-server:2.0.0` | [nacos/nacos-server](https://hub.docker.com/r/nacos/nacos-server) |
| `swr.cn-east-2.myhuaweicloud.com/blade/nacos-mysql:5.7` | `nacos/nacos-mysql:5.7` | [nacos/nacos-mysql](https://hub.docker.com/r/nacos/nacos-mysql) |
部署 Nacos 的步骤主要有:
* [部署 nacos-mysql](./nacos-mysql.html)
* [部署 nacos](./nacos-install.html)
* [导入配置到 nacos](./nacos-config.html)

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 598 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 357 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 453 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 603 KiB

Some files were not shown because too many files have changed in this diff Show More