部署 SpringBlade
|
After Width: | Height: | Size: 336 KiB |
|
After Width: | Height: | Size: 533 KiB |
|
After Width: | Height: | Size: 657 KiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 218 KiB |
138
learning/k8s-practice/spring-blade/deploy/blade-admin.md
Normal 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` | |
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
* 切换到 ***容器信息*** 标签,如下图所示:
|
||||
|
||||
点击左侧的 ***添加工作容器*** 按钮,添加一个工作容器,并填写表单:
|
||||
|
||||
| 字段名称 | 字段值 | 备注 |
|
||||
| ----------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||
| 名称 | `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` | |
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
* 点击 ***保存*** 按钮,完成 `blade-admin` Deployment 的创建
|
||||
|
||||
|
||||
|
||||
## 验证部署结果
|
||||
|
||||
按照下面的步骤,可以验证 `blade-admin` 是否已经成功启动:
|
||||
|
||||
* 在上面的步骤中,完成 Deployment 的保存以后,将会进入该 Deployment 的详情页面,如下图所示:
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
* 点击上图中的 ***追踪日志*** 按钮,可以看到 blade-admin 的日志信息,如下图所示,日志将提示:
|
||||
|
||||
```
|
||||
---[BLADE-ADMIN]---启动完成,当前使用的端口:[80],环境变量:[test]---
|
||||
```
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
## 验证 blade-admin 已成功注册到 nacos
|
||||
|
||||
按照下面的步骤,可以验证 `blade-admin` 是否已经成功注册到 nacos 服务注册中心:
|
||||
|
||||
* 切换到 `nacos` StatefulSet 的详情页,如下图所示:
|
||||
|
||||

|
||||
|
||||
|
||||
* 点击上图中,容器端口 `8848` 后面对应的绿色图标,如下图所示:
|
||||
|
||||
修改 ***访问路径*** 字段为 `/nacos`;
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
* 在上图中修改 ***访问路径*** 字段后,点击 ***在浏览器窗口打开*** 按钮,将会打开一个新的窗口,如下图所示:
|
||||
|
||||
填写登录信息:
|
||||
|
||||
用户名:`nacos`
|
||||
|
||||
密码: `nacos`
|
||||
|
||||

|
||||
|
||||
* 在上图中点击 ***提交*** 按钮,完成 nacos 登录,并切换到 ***服务管理*** --> ***服务列表*** 菜单项, 如下图所示:
|
||||
|
||||

|
||||
|
||||
* 至此,我们可以认为 blade-admin 已经部署成功。
|
||||
|
||||
下一步,请 [部署其他微服务](./blade-others.html)
|
||||
|
After Width: | Height: | Size: 419 KiB |
|
After Width: | Height: | Size: 340 KiB |
|
After Width: | Height: | Size: 584 KiB |
|
After Width: | Height: | Size: 642 KiB |
|
After Width: | Height: | Size: 1.7 MiB |
|
After Width: | Height: | Size: 239 KiB |
|
After Width: | Height: | Size: 298 KiB |
130
learning/k8s-practice/spring-blade/deploy/blade-others.md
Normal 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*** --> ***工作负载***,如下图所示:
|
||||
|
||||

|
||||
|
||||
* 点击上图中 `blade-admin` 所对应的 ***复制*** 按钮,如下图所示:
|
||||
|
||||
填写表单:
|
||||
|
||||
| 字段名 | 字段值 | 备注 |
|
||||
| -------- | ------------ | ------------------------ |
|
||||
| 名称空间 | spring-blade | 目标工作负载所在名称空间 |
|
||||
| 名称 | blade-auth | 目标工作负载名称 |
|
||||
|
||||

|
||||
|
||||
* 点击上图中的 ***确定*** 按钮,将跳转到工作负载创建页面,然后,切换到 ***容器信息*** 标签页,如下图所示:
|
||||
|
||||
修改如下两个字段:
|
||||
|
||||
| 字段名 | 字段值 | 备注 |
|
||||
| ------------ | ------------------ | ---------------------- |
|
||||
| 工作容器名称 | `blade-auth` | 原为 blade-admin |
|
||||
| 镜像路径 | `blade/blade-auth` | 原为 blade/blade-admin |
|
||||
|
||||

|
||||
|
||||
* 点击 ***保存*** 按钮,创建 `blade-auth` Deployment
|
||||
|
||||
## 验证 blade-auth 的部署结果
|
||||
|
||||
* 在完成 `blade-auth` Deployment 的保存以后,将跳转到 `blade-auth` 的工作负载详情页,如下图所示:
|
||||
|
||||

|
||||
|
||||
* 点击上图中的 ***追踪日志*** 按钮,可以看到 blade-auth 的日志信息,如下图所示,日志将提示:
|
||||
|
||||
```
|
||||
---[BLADE-AUTH]---启动完成,当前使用的端口:[80],环境变量:[test]---
|
||||
```
|
||||
|
||||

|
||||
|
||||
## 验证 blade-auth 已成功注册到 nacos
|
||||
|
||||
按照下面的步骤,可以验证 `blade-auth` 是否已经成功注册到 nacos 服务注册中心:
|
||||
|
||||
* 切换到 `nacos` StatefulSet 的详情页,如下图所示:
|
||||
|
||||

|
||||
|
||||
|
||||
* 点击上图中,容器端口 `8848` 后面对应的绿色图标,如下图所示:
|
||||
|
||||
修改 ***访问路径*** 字段为 `/nacos`;
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
* 在上图中修改 ***访问路径*** 字段后,点击 ***在浏览器窗口打开*** 按钮,将会打开一个新的窗口,如下图所示:
|
||||
|
||||
填写登录信息:
|
||||
|
||||
用户名:`nacos`
|
||||
|
||||
密码: `nacos`
|
||||
|
||||

|
||||
|
||||
* 在上图中点击 ***提交*** 按钮,完成 nacos 登录,并切换到 ***服务管理*** --> ***服务列表*** 菜单项, 如下图所示:
|
||||
|
||||

|
||||
|
||||
* 至此,我们可以认为 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 的服务列表界面如下图所示:
|
||||
|
||||

|
||||
|
||||
至此,我们完成了所有微服务的部署。
|
||||
|
||||
接下来,请 [部署 saber-web](./saber-web.html)
|
||||
25
learning/k8s-practice/spring-blade/deploy/blade-svc.md
Normal 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)。
|
||||
46
learning/k8s-practice/spring-blade/deploy/index.md
Normal 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)
|
||||
|
After Width: | Height: | Size: 338 KiB |
|
After Width: | Height: | Size: 359 KiB |
|
After Width: | Height: | Size: 267 KiB |
|
After Width: | Height: | Size: 267 KiB |
|
After Width: | Height: | Size: 391 KiB |
|
After Width: | Height: | Size: 562 KiB |
|
After Width: | Height: | Size: 340 KiB |
|
After Width: | Height: | Size: 671 KiB |
|
After Width: | Height: | Size: 403 KiB |
|
After Width: | Height: | Size: 674 KiB |
|
After Width: | Height: | Size: 212 KiB |
|
After Width: | Height: | Size: 302 KiB |
164
learning/k8s-practice/spring-blade/deploy/m-gateway.md
Normal 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*** --> ***配置中心*** --> ***配置字典***
|
||||
|
||||

|
||||
|
||||
* 点击上图中的 ***创建 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` 等微服务组件中,作为应用启动参数的一部分 |
|
||||
|
||||

|
||||
|
||||
* 点击 ***保存*** 按钮,完成配置字典 `blade-config` 的创建。
|
||||
|
||||
|
||||
## 创建 Deployment
|
||||
|
||||
按照如下步骤创建 `blade-gateway` Deployment:
|
||||
|
||||
* 在 Kuboard 界面进入名称空间 `spring-blade` 之后,点击菜单 ***名称空间*** -> ***spring-blade*** -> ***常用操作*** -> ***创建工作负载*** ,如下图所示:
|
||||
|
||||
并填写表单:
|
||||
|
||||
| 字段名称 | 字段值 | 备注 |
|
||||
| ------------ | --------------- | -------------------------------------------- |
|
||||
| 工作负载类型 | `Deployment` | |
|
||||
| 工作负载分层 | `API网关层` | 填写后将自动添加 `k8s.kuboard.cn/layer` 标签 |
|
||||
| 工作负载名称 | `blade-gateway` | 填写后将自动添加 `k8s.kuboard.cn/name` 标签 |
|
||||
| 副本数 | `1` | |
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
* 切换到 ***容器信息*** 标签,如下图所示:
|
||||
|
||||
点击左侧的 ***添加工作容器*** 按钮,添加一个工作容器,并填写表单:
|
||||
|
||||
| 字段名称 | 字段值 | 备注 |
|
||||
| ----------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||
| 名称 | `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` | |
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
* 切换到 ***服务/应用路由*** 标签页,如下图所示:
|
||||
|
||||
并填写表单:
|
||||
|
||||
| 字段名称 | 字段值 | 备注 |
|
||||
| ------------------------------------ | ----------------------------------------------------------- | ------------------------------------------------------------ |
|
||||
| 服务类型 | `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` 端口 |
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
* 点击 ***保存*** 按钮,完成 `blade-gateway` Deployment 的创建
|
||||
|
||||
|
||||
|
||||
## 验证部署结果
|
||||
|
||||
按照下面的步骤,可以验证 `blade-gateway` 是否已经成功启动:
|
||||
|
||||
* 在上面的步骤中,完成 Deployment 的保存以后,将会进入该 Deployment 的详情页面,如下图所示:
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
* 点击上图中的 ***追踪日志*** 按钮,可以看到 blade-gateway 的日志信息,如下图所示,日志将提示:
|
||||
|
||||
```
|
||||
---[BLADE-GATEWAY]---启动完成,当前使用的端口:[80],环境变量:[k8s]---
|
||||
```
|
||||
|
||||

|
||||
|
||||
## 验证 blade-gateway 已经成功注册到 nacos
|
||||
|
||||
按照下面的步骤,可以验证 `blade-gateway` 是否已经成功注册到 nacos 服务注册中心:
|
||||
|
||||
* 切换到 `nacos` StatefulSet 的详情页,如下图所示:
|
||||
|
||||

|
||||
|
||||
|
||||
* 点击上图中,容器端口 `8848` 后面对应的绿色图标,如下图所示:
|
||||
|
||||
修改 ***访问路径*** 字段为 `/nacos`;
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
* 在上图中修改 ***访问路径*** 字段后,点击 ***在浏览器窗口打开*** 按钮,将会打开一个新的窗口,如下图所示:
|
||||
|
||||
填写登录信息:
|
||||
|
||||
用户名:`nacos`
|
||||
|
||||
密码: `nacos`
|
||||
|
||||

|
||||
|
||||
* 在上图中点击 ***提交*** 按钮,完成 nacos 登录,并切换到 ***服务管理*** --> ***服务列表*** 菜单项, 如下图所示:
|
||||
|
||||

|
||||
|
||||
服务列表中出现 `blade-gateway`,则我们可以认为 blade-gateway 已经部署成功。
|
||||
|
||||
下一步,请 [部署 swagger](./m-swagger.html)
|
||||
|
After Width: | Height: | Size: 384 KiB |
|
After Width: | Height: | Size: 326 KiB |
|
After Width: | Height: | Size: 561 KiB |
|
After Width: | Height: | Size: 321 KiB |
|
After Width: | Height: | Size: 291 KiB |
|
After Width: | Height: | Size: 274 KiB |
|
After Width: | Height: | Size: 647 KiB |
|
After Width: | Height: | Size: 85 KiB |
143
learning/k8s-practice/spring-blade/deploy/m-redis.md
Normal 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` | |
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
* 切换到 ***容器信息*** 标签,如下图所示:
|
||||
|
||||
点击左侧的 ***添加工作容器*** 按钮,添加一个工作容器,并填写表单:
|
||||
|
||||
| 字段名称 | 字段值 | 备注 |
|
||||
| --------------------------- | ------------------------------------------------------------ | ---- |
|
||||
| 名称 | `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` | |
|
||||
|
||||

|
||||
|
||||
* 切换到 ***存储挂载*** 标签页,并点击其中的 ***添加存储卷声明模板*** 按钮,如下图所示:
|
||||
|
||||
填写表单:
|
||||
|
||||
| 字段名称 | 字段值 | 备注 |
|
||||
| --------------------- | ------------------ | ------------------------------------------------------------ |
|
||||
| 名称 | `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)
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
* 切换到 ***高级设置*** 标签页,如下图所示:
|
||||
|
||||
并填写表单:
|
||||
|
||||
| 字段名称 | 字段值 | 备注 |
|
||||
| -------------- | --------------------------- | ------------------------------------------------------------ |
|
||||
| 容器组管理策略 | `Parallel` | 不按容器组的序号顺序更新容器组。(此为测试环境,mysql 只部署<br />一个副本,不考虑主从的情况,否则此参数不能选择 `Parallel`) |
|
||||
| 历史版本数量 | `10` | |
|
||||
| 更新策略 | `滚动更新(RollingUpdate)` | |
|
||||
| 分割点 | `0` | 从序号为 `0` 的容器组开始更新 StatefulSet 中的所有容器组 |
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
* 切换到 ***服务/应用路由*** 标签页,如下图所示:
|
||||
|
||||
并填写表单:
|
||||
|
||||
| 字段名称 | 字段值 | 备注 |
|
||||
| -------- | ------------------------------------------ | ------------------------------------------------- |
|
||||
| 服务类型 | `Headless` | 无头 Service,专用于 StatefulSet |
|
||||
| 端口 | `redis`<br />`TCP`<br />`6379`<br />`6379` | 将容器的 `6379` 端口映射到 Service 的 `6379` 端口 |
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
* 点击 ***保存*** 按钮,完成 `redis` StatefulSet 的创建
|
||||
|
||||
|
||||
|
||||
## 验证部署结果
|
||||
|
||||
* 在上面的步骤中,完成 StatefulSet 的保存以后,将会进入该 StatefulSet 的详情页面,如下图所示:
|
||||
* 启动过程中,会看到一个 `FailedSchedule` 事件,是因为 StatefulSet ***存储卷声明模板*** 指定的 ***存储卷声明*** 尚未成功创建和绑定,只要对应的存储类是没有问题的,稍等片刻即可;
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
* 点击上图中的 ***追踪日志*** 按钮,可以看到 redis 的日志信息,如下图所示,日志将提示:
|
||||
|
||||
```
|
||||
Ready to accept connections
|
||||
```
|
||||
|
||||

|
||||
|
||||
* 点击上图中的 ***sh*** 按钮,可以进入 redis 容器的命令行终端界面,如下图所示:
|
||||
执行命令:
|
||||
```sh
|
||||
redis-cli
|
||||
PING
|
||||
```
|
||||

|
||||
|
||||
如果打印出 `PONG`,我们可以认为 Redis 已经部署成功。
|
||||
|
||||
下一步,请 [部署 sentinel](./m-sentinel.html)
|
||||
|
After Width: | Height: | Size: 327 KiB |
|
After Width: | Height: | Size: 418 KiB |
|
After Width: | Height: | Size: 291 KiB |
|
After Width: | Height: | Size: 787 KiB |
|
After Width: | Height: | Size: 317 KiB |
|
After Width: | Height: | Size: 585 KiB |
|
After Width: | Height: | Size: 585 KiB |
139
learning/k8s-practice/spring-blade/deploy/m-saber-db.md
Normal 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` | |
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
* 切换到 ***容器信息*** 标签,如下图所示:
|
||||
|
||||
点击左侧的 ***添加工作容器*** 按钮,添加一个工作容器,并填写表单:
|
||||
|
||||
| 字段名称 | 字段值 | 备注 |
|
||||
| --------------------------- | ------------------------------------------------------------ | --------------------------------------------- |
|
||||
| 名称 | `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> | |
|
||||
|
||||

|
||||
|
||||
* 切换到 ***存储挂载*** 标签页,并点击其中的 ***添加存储卷声明模板*** 按钮,如下图所示:
|
||||
|
||||
填写表单:
|
||||
|
||||
| 字段名称 | 字段值 | 备注 |
|
||||
| --------------------- | ------------------ | ------------------------------------------------------------ |
|
||||
| 名称 | `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)
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
* 切换到 ***高级设置*** 标签页,如下图所示:
|
||||
|
||||
并填写表单:
|
||||
|
||||
| 字段名称 | 字段值 | 备注 |
|
||||
| -------------- | --------------------------- | ------------------------------------------------------------ |
|
||||
| 容器组管理策略 | `Parallel` | 不按容器组的序号顺序更新容器组。(此为测试环境,mysql 只部署<br />一个副本,不考虑主从的情况,否则此参数不能选择 `Parallel`) |
|
||||
| 历史版本数量 | `10` | |
|
||||
| 更新策略 | `滚动更新(RollingUpdate)` | |
|
||||
| 分割点 | `0` | 从序号为 `0` 的容器组开始更新 StatefulSet 中的所有容器组 |
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
* 切换到 ***服务/应用路由*** 标签页,如下图所示:
|
||||
|
||||
并填写表单:
|
||||
|
||||
| 字段名称 | 字段值 | 备注 |
|
||||
| -------- | ------------------------------------------ | ------------------------------------------------- |
|
||||
| 服务类型 | `Headless` | 无头 Service,专用于 StatefulSet |
|
||||
| 端口 | `mysql`<br />`TCP`<br />`3306`<br />`3306` | 将容器的 `3306` 端口映射到 Service 的 `3306` 端口 |
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
* 点击 ***保存*** 按钮,完成 `saber-db` StatefulSet 的创建
|
||||
|
||||
|
||||
|
||||
## 验证部署结果
|
||||
|
||||
* 在上面的步骤中,完成 StatefulSet 的保存以后,将会进入该 StatefulSet 的详情页面,如下图所示:
|
||||
* 启动过程中,会看到一个 `FailedSchedule` 事件,是因为 StatefulSet ***存储卷声明模板*** 指定的 ***存储卷声明*** 尚未成功创建和绑定,只要对应的存储类是没有问题的,稍等片刻即可;
|
||||
* `Unhealthy` 事件,启动过程中尝试校验,但是未能成功,继续等候,待数据库初始化成功以后,***容器启动检查探针*** 和 ***容器就绪检查探针成功*** 就可以执行成功,容器组进入就绪状态,如下图所示:
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
* 点击上图中的 ***sh*** 按钮,可以进入 saber-db 容器的命令行终端界面,如下图所示:
|
||||
执行命令:
|
||||
|
||||
```sh
|
||||
mysql -uroot -proot
|
||||
show databases;
|
||||
use blade;
|
||||
show tables;
|
||||
```
|
||||

|
||||
|
||||
如果能够显示数据库 `blade` 中的表结构,则我们可以认为 `saber-db` 部署成功。
|
||||
|
||||
下一步,请 [部署接口网关](./m-gateway.html)
|
||||
|
After Width: | Height: | Size: 319 KiB |
|
After Width: | Height: | Size: 613 KiB |
|
After Width: | Height: | Size: 1.2 MiB |
|
After Width: | Height: | Size: 554 KiB |
|
After Width: | Height: | Size: 349 KiB |
|
After Width: | Height: | Size: 90 KiB |
|
After Width: | Height: | Size: 231 KiB |
124
learning/k8s-practice/spring-blade/deploy/m-sentinel.md
Normal 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` | |
|
||||
|
||||

|
||||
|
||||
* 切换到 ***容器信息*** 标签,如下图所示:
|
||||
|
||||
点击左侧的 ***添加工作容器*** 按钮,添加一个工作容器,并填写表单:
|
||||
|
||||
| 字段名称 | 字段值 | 备注 |
|
||||
| --------------------------- | ------------------------------------------------------------ | ---- |
|
||||
| 名称 | `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请求路径:`/` | |
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
* 切换到 ***高级设置*** 标签页,如下图所示:
|
||||
|
||||
并填写表单:
|
||||
|
||||
| 字段名称 | 字段值 | 备注 |
|
||||
| -------------- | --------------------------- | ------------------------------------------------------------ |
|
||||
| 容器组管理策略 | `Parallel` | 不按容器组的序号顺序更新容器组。(此为测试环境,mysql 只部署<br />一个副本,不考虑主从的情况,否则此参数不能选择 `Parallel`) |
|
||||
| 历史版本数量 | `10` | |
|
||||
| 更新策略 | `滚动更新(RollingUpdate)` | |
|
||||
| 分割点 | `0` | 从序号为 `0` 的容器组开始更新 StatefulSet 中的所有容器组 |
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
* 切换到 ***服务/应用路由*** 标签页,如下图所示:
|
||||
|
||||
并填写表单:
|
||||
|
||||
| 字段名称 | 字段值 | 备注 |
|
||||
| -------- | ---------------------------------------------------------- | ------------------------------------------------- |
|
||||
| 服务类型 | `NodePort` | NodePort,可将端口映射到任意节点的指定节点端口 |
|
||||
| 端口 | `sentinel`<br />`TCP`<br />`8858`<br />`32100`<br />`8858` | 将容器的 `8858` 端口映射到 Service 的 `8858` 端口 |
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
* 点击 ***保存*** 按钮,完成 `sentinel` StatefulSet 的创建
|
||||
|
||||
|
||||
|
||||
## 验证部署结果
|
||||
|
||||
* 在上面的步骤中,完成 StatefulSet 的保存以后,将会进入该 StatefulSet 的详情页面,如下图所示:
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
* 点击上图中的 ***追踪日志*** 按钮,可以看到 sentinel 的日志信息,如下图所示,日志将提示:
|
||||
|
||||
```
|
||||
Started DashboardApplication in 6.317 seconds (JVM running for 7.225)
|
||||
```
|
||||
|
||||

|
||||
|
||||
* 在浏览器中输入地址 `http://任意节点IP:32100` ,并打开该页面,如下图所示:
|
||||
|
||||
使用默认用户名密码完成登录:
|
||||
|
||||
用户名: `sentinel`
|
||||
|
||||
密码: `sentinel`
|
||||
|
||||

|
||||
|
||||
* 登录成功后,界面显示如下:
|
||||
|
||||

|
||||
|
||||
* 至此,我们可以认为 sentinel 已部署成功。
|
||||
|
||||
下一步,请 [部署 saber-db](./m-saber-db.html)
|
||||
|
After Width: | Height: | Size: 334 KiB |
|
After Width: | Height: | Size: 518 KiB |
|
After Width: | Height: | Size: 651 KiB |
|
After Width: | Height: | Size: 749 KiB |
100
learning/k8s-practice/spring-blade/deploy/m-swagger.md
Normal 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` | |
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
* 切换到 ***容器信息*** 标签,如下图所示:
|
||||
|
||||
点击左侧的 ***添加工作容器*** 按钮,添加一个工作容器,并填写表单:
|
||||
|
||||
| 字段名称 | 字段值 | 备注 |
|
||||
| ----------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||
| 名称 | `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` | |
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
* 点击 ***保存*** 按钮,完成 `swagger` Deployment 的创建
|
||||
|
||||
|
||||
|
||||
## 验证部署结果
|
||||
|
||||
按照下面的步骤,可以验证 `swagger` 是否已经成功启动:
|
||||
|
||||
* 在上面的步骤中,完成 Deployment 的保存以后,将会进入该 Deployment 的详情页面,如下图所示:
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
* 点击上图中的 ***追踪日志*** 按钮,可以看到 swagger 的日志信息,如下图所示,日志将提示:
|
||||
|
||||
```
|
||||
---[BLADE-SWAGGER]---启动完成,当前使用的端口:[80],环境变量:[k8s]---
|
||||
```
|
||||
|
||||

|
||||
|
||||
* 至此,我们可以认为 swagger 已经部署成功。
|
||||
|
||||
下一步,请 [部署所有的微服务](./blade-svc.html)
|
||||
19
learning/k8s-practice/spring-blade/deploy/m.md
Normal 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)
|
||||
|
After Width: | Height: | Size: 194 KiB |
|
After Width: | Height: | Size: 282 KiB |
|
After Width: | Height: | Size: 282 KiB |
|
After Width: | Height: | Size: 528 KiB |
75
learning/k8s-practice/spring-blade/deploy/nacos-config.md
Normal 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 界面,如下图所示:
|
||||
|
||||

|
||||
|
||||
* 点击上图中红色箭头指向的按钮,结果如下图所示:
|
||||
|
||||
填写表单:
|
||||
|
||||
| 字段名 | 字段值 | 备注 |
|
||||
| -------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||
| 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> 中的内容 | 在浏览器打开该链接,并将其内容复制粘贴到 ***配置内容*** 字段 |
|
||||
|
||||

|
||||
|
||||
* 点击 ***发布*** 按钮,并重复上述过程,添加一个新的配置 ***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` 的详情页,如下图所示:
|
||||
|
||||

|
||||
|
||||
* 点击上图中的 ***sh*** 按钮,打开终端界面,如下图所示:
|
||||
|
||||
在终端界面中执行如下命令,可以看到前面步骤中向 nacos 添加的配置信息被存到了 `nacos_test` 数据库中的 `config_info` 表中。
|
||||
|
||||
``` sh
|
||||
mysql
|
||||
use nacos_test;
|
||||
select data_id, group_id, gmt_create from config_info;
|
||||
```
|
||||
|
||||

|
||||
|
||||
* 至此,我们可以认为 nacos 的配置导入成功。
|
||||
|
||||
下一步,请 [部署 redis](./redis.html)
|
||||
|
After Width: | Height: | Size: 275 KiB |
|
After Width: | Height: | Size: 414 KiB |
|
After Width: | Height: | Size: 234 KiB |
|
After Width: | Height: | Size: 553 KiB |
|
After Width: | Height: | Size: 311 KiB |
|
After Width: | Height: | Size: 407 KiB |
|
After Width: | Height: | Size: 416 KiB |
|
After Width: | Height: | Size: 419 KiB |
|
After Width: | Height: | Size: 330 KiB |
|
After Width: | Height: | Size: 346 KiB |
|
After Width: | Height: | Size: 334 KiB |
|
After Width: | Height: | Size: 387 KiB |
|
After Width: | Height: | Size: 691 KiB |
|
After Width: | Height: | Size: 374 KiB |
|
After Width: | Height: | Size: 171 KiB |
|
After Width: | Height: | Size: 194 KiB |
223
learning/k8s-practice/spring-blade/deploy/nacos-install.md
Normal 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` | |
|
||||
|
||||

|
||||
|
||||
* 切换到 ***容器信息*** 标签,如下图所示:
|
||||
|
||||
点击左侧的 ***添加工作容器*** 按钮,添加一个工作容器,并填写表单:
|
||||
|
||||
| 字段名称 | 字段值 | 备注 |
|
||||
| ------------------- | ------------------------------------------------------------ | --------------------------------------------------- |
|
||||
| 名称 | `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` | |
|
||||
|
||||

|
||||
|
||||
点击 ***容器启动检查探针*** 的 ***启用*** 按钮:
|
||||
|
||||
并填写表单:
|
||||
|
||||
| 字段名称 | 字段值 | 备注 |
|
||||
| -------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||
| 探针类型 | `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 将认为该容器启动失败,并强制重启该容器。 |
|
||||
|
||||

|
||||
|
||||
按照同样的方式,启用 ***容器存活检查探针*** ,表单内容如下所示:
|
||||
|
||||
| 字段名称 | 字段值 | 备注 |
|
||||
| ---------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||
| 探针类型探针类型 | `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 认为该容器已经不健康,并强制重启该容器 |
|
||||
|
||||
完成 ***健康检查*** 的设置以后,界面截图如下所示:
|
||||
|
||||

|
||||
|
||||
* 切换到 ***存储挂载*** 标签页,如下图所示:
|
||||

|
||||
点击上图中 ***添加存储卷声明模板*** 按钮,如下图所示:
|
||||
|
||||
填写表单:
|
||||
|
||||
| 字段名称 | 字段值 | 备注 |
|
||||
| --------------------- | ------------------ | ------------------------------------------------------------ |
|
||||
| 名称 | `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)
|
||||
|
||||

|
||||
|
||||
点击上图中 ***添加数据卷*** 按钮,如下图所示:
|
||||
|
||||

|
||||
|
||||
在上图中切换到 ***配置字典*** 标签页,并点击 ***创建*** 按钮,如下图所示:
|
||||
|
||||
填写表单:
|
||||
|
||||
| 字段名称 | 字段值 | 备注 |
|
||||
| -------- | ------------------------------------------------------------ | -------------------------------------------------------- |
|
||||
| 名称 | 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` 的取值 |
|
||||
|
||||

|
||||
|
||||
点击上图中的 ***保存*** 按钮,将完成配置字典 `nacos-config` 的创建,您也可以在菜单 ***名称空间*** -> ***spring-blade*** -> ***配置中心*** -> ***配置字典*** 中管理刚才创建的配置字典。
|
||||
|
||||
完成配置字典 `nacos-config` 的创建后,该对话框将关闭,我们继续完善 StatefulSet 的数据卷配置,如下图所示:
|
||||
|
||||
填写表单:
|
||||
|
||||
| 字段名称 | 字段值 | 备注 |
|
||||
| ----------------------- | -------------------------------------- | ------------------ |
|
||||
| 名称 | `volume-6aidn` | 自动生成的名称即可 |
|
||||
| 数据卷类型 | `配置字典` | |
|
||||
| | | |
|
||||
| 分配模式 | `动态分配` | |
|
||||
| 读写模式 | `可被多节点读写` | |
|
||||
| 总量 | `2Gi` | |
|
||||
| nacos容器中的挂载类型 | `只读` | |
|
||||
| nacos容器中的挂载路径 | `/home/nacos/init.d/custom.properties` | |
|
||||
| nacos容器中的挂载子路径 | `custom.properties` | |
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
* 切换到 ***高级设置*** 标签页,如下图所示
|
||||
|
||||
并填写表单:
|
||||
|
||||
| 字段名称 | 字段值 | 备注 |
|
||||
| -------------- | --------------------------- | ------------------------------------------------------------ |
|
||||
| 容器组管理策略 | `Parallel` | 不按容器组的序号顺序更新容器组。(此为测试环境,mysql 只部署<br />一个副本,不考虑主从的情况,否则此参数不能选择 `Parallel`) |
|
||||
| 历史版本数量 | `10` | |
|
||||
| 更新策略 | `滚动更新(RollingUpdate)` | |
|
||||
| 分割点 | `0` | 从序号为 `0` 的容器组开始更新 StatefulSet 中的所有容器组 |
|
||||
|
||||

|
||||
|
||||
* 切换到 ***服务/应用路由*** 标签页,如下图所示:
|
||||
|
||||
并填写表单:
|
||||
|
||||
| 字段名称 | 字段值 | 备注 |
|
||||
| -------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||
| 服务类型 | `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` | |
|
||||
|
||||

|
||||
|
||||
* 点击 ***保存*** 按钮,依据界面提示完成保存操作
|
||||
|
||||
## 验证部署结果
|
||||
|
||||
* 在上面的步骤中,完成 StatefulSet 的保存以后,将会进入该 StatefulSet 的详情页,如下图所示:
|
||||
* 启动过程中,会看到两个 `FailedSchedule` 事件,是因为 StatefulSet ***存储卷声明模板*** 指定的 ***存储卷声明*** 尚未成功创建和绑定,只要对应的存储类是没有问题的,稍等片刻即可;
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
* 点击上图中,容器端口 `8848` 后面对应的绿色图标,如下图所示:
|
||||
|
||||
修改 ***访问路径*** 字段为 `/nacos`;
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
* 在上图中修改 ***访问路径*** 字段后,点击 ***在浏览器窗口打开*** 按钮,将会打开一个新的窗口,如下图所示:
|
||||
|
||||
填写登录信息:
|
||||
|
||||
用户名:`nacos`
|
||||
|
||||
密码: `nacos`
|
||||
|
||||

|
||||
|
||||
* 在上图中点击 ***提交*** 按钮,完成 nacos 登录,如下图所示:
|
||||
|
||||

|
||||
|
||||
::: 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)
|
||||
|
After Width: | Height: | Size: 130 KiB |
|
After Width: | Height: | Size: 482 KiB |
|
After Width: | Height: | Size: 809 KiB |
|
After Width: | Height: | Size: 449 KiB |
|
After Width: | Height: | Size: 553 KiB |
|
After Width: | Height: | Size: 275 KiB |
|
After Width: | Height: | Size: 365 KiB |
|
After Width: | Height: | Size: 384 KiB |
|
After Width: | Height: | Size: 300 KiB |
|
After Width: | Height: | Size: 647 KiB |
|
After Width: | Height: | Size: 247 KiB |
178
learning/k8s-practice/spring-blade/deploy/nacos-mysql.md
Normal 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` | |
|
||||
|
||||

|
||||
|
||||
* 切换到 ***容器信息*** 标签,如下图所示:
|
||||
|
||||
点击左侧的 ***添加工作容器*** 按钮,添加一个工作容器,并填写表单:
|
||||
|
||||
| 字段名称 | 字段值 | 备注 |
|
||||
| ------------------- | ------------------------------------------------------------ | ---- |
|
||||
| 名称 | `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` | |
|
||||
|
||||

|
||||
|
||||
启用 ***健康检查*** ,如下图所示:
|
||||
|
||||

|
||||
|
||||
点击 ***容器启动检查探针*** 的 ***启用*** 按钮,如下图所示:
|
||||
|
||||
并填写表单:
|
||||
|
||||
| 字段名称 | 字段值 | 备注 |
|
||||
| -------------- | ---------------------------------- | ------------------------------------------------------------ |
|
||||
| 探针类型 | `命令行` | |
|
||||
| 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 />并强制重启该容器。 |
|
||||
|
||||

|
||||
|
||||
按照同样的方式,启用 ***容器存活检查探针*** ,表单内容如下所示:
|
||||
|
||||
| 字段名称 | 字段值 | 备注 |
|
||||
| -------------- | ----------------- | ------------------------------------------------------------ |
|
||||
| 探针类型 | `命令行` | |
|
||||
| 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 认为该容器已经不健康,并强制重启该容器 |
|
||||
|
||||
完成 ***健康检查*** 的设置以后,界面截图如下所示:
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
* 切换到 ***存储挂载*** 标签页,如下图所示:
|
||||

|
||||
点击上图中 ***添加存储卷声明模板*** 按钮,如下图所示:
|
||||
|
||||
填写表单:
|
||||
|
||||
| 字段名称 | 字段值 | 备注 |
|
||||
| ---------------------- | ------------------ | ------------------------------------------------------------ |
|
||||
| 名称 | `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)
|
||||
|
||||

|
||||
|
||||
* 切换到 ***高级设置*** 标签页,如下图所示:
|
||||
|
||||
并填写表单:
|
||||
|
||||
| 字段名称 | 字段值 | 备注 |
|
||||
| -------------- | --------------------------- | ------------------------------------------------------------ |
|
||||
| 容器组管理策略 | `Parallel` | 不按容器组的序号顺序更新容器组。(此为测试环境,mysql 只部署<br />一个副本,不考虑主从的情况,否则此参数不能选择 `Parallel`) |
|
||||
| 历史版本数量 | `10` | |
|
||||
| 更新策略 | `滚动更新(RollingUpdate)` | |
|
||||
| 分割点 | `0` | 从序号为 `0` 的容器组开始更新 StatefulSet 中的所有容器组 |
|
||||
|
||||

|
||||
|
||||
* 切换到 ***服务/应用路由*** 标签页,如下图所示:
|
||||
|
||||
并填写表单:
|
||||
|
||||
| 字段名称 | 字段值 | 备注 |
|
||||
| -------- | ------------------------------------------ | ------------------------------------------------- |
|
||||
| 服务类型 | `Headless` | 无头 Service,专用于 StatefulSet |
|
||||
| 端口 | `mysql`<br />`TCP`<br />`3306`<br />`3306` | 将容器的 `3306` 端口映射到 Service 的 `3306` 端口 |
|
||||
|
||||

|
||||
|
||||
* 点击 ***保存*** 按钮,依据界面提示完成保存操作
|
||||
|
||||
|
||||
|
||||
## 验证部署结果
|
||||
|
||||
* 完成保存后,并等候一定的时间,界面显示如下:
|
||||
|
||||
从界面中我们可以看到多个失败事件:
|
||||
|
||||
* `FailedSchedule`,原因是容器组所需要的存储卷声明尚未成功绑定,待存储类动态提供存储卷之后,容器组就立刻进入 ***已调度*** 的状态;
|
||||
* `Unhealthy`,点击 ***追踪日志*** 的按钮,可以看到,此 mysql 容器在第一次启动时会执行数据初始化的工作,因此启动过程耗时较长,图中显示,整个启动过程中,kubelet 执行了 2 次失败的 `Startup probe failed` ***容器启动检查探针***,只要这个次数在前面定义的 ***容器启动检查探针*** --> ***不健康阈值*** 的范围之内,kubelet 仍将继续等待该容器的启动,否则 kublet 将强制重启该容器。
|
||||
> 在截图中,***容器启动检查探针*** 只失败了两次(实际执行了三次,第三次执行结果为成功,并为生成事件,但是变更了容器的状态),容器就成功启动了;
|
||||
> 在您的安装过程中,依据容器启动的时间长短,***容器启动检查探针*** 失败的次数可能所有不同。
|
||||
|
||||

|
||||
|
||||
* 点击上图中的 ***bash*** 按钮,界面显示如下:
|
||||
|
||||
下图显示的内容为进入 ***bash*** 界面之后执行了如下指令的结果:
|
||||
|
||||
```sh
|
||||
mysql
|
||||
show databases;
|
||||
show tables;
|
||||
```
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
* 至此,我们可以认为 `nacos-mysql` 部署成功。
|
||||
|
||||
下一步,请 [部署 nacos](./nacos-install.html)
|
||||
|
||||
33
learning/k8s-practice/spring-blade/deploy/nacos.md
Normal 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)
|
||||
|
After Width: | Height: | Size: 318 KiB |
|
After Width: | Height: | Size: 598 KiB |
|
After Width: | Height: | Size: 357 KiB |
|
After Width: | Height: | Size: 453 KiB |
|
After Width: | Height: | Size: 603 KiB |