Deployment 新界面

This commit is contained in:
huanqing.shao
2020-03-15 17:00:02 +08:00
parent d28b10bf97
commit 3c03c18cfd
35 changed files with 242 additions and 32 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

View File

@ -19,18 +19,10 @@ meta:
如果该字段被设为 0Kubernetes 将清理掉该 Deployment 的所有历史版本revision因此您将无法对该 Deployment 执行回滚操作 `kubectl rollout undo`
:::
<!-- <el-tabs type="border-card">
Kuboard 中,可以通过如下界面调整 `.spec.revisionHistoryLimit` 字段,如下所示:
<el-tab-pane label="使用 kubectl 指定 revisionHistroyLimit">
正在撰写中
![Kubernetes Deployment revisionHistoryLimit](./cleanup.assets/image-20200315164731927.png)
</el-tab-pane>
<el-tab-pane label="使用 Kuboard 指定 revisionHistroyLimit">
正在撰写中
</el-tab-pane>
</el-tabs> -->
[返回 Deployment](./#deployment-概述)

Binary file not shown.

After

Width:  |  Height:  |  Size: 341 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

View File

@ -15,9 +15,13 @@ meta:
本文描述了如何创建一个 Deployment如何理解 Deployment 各个字段,以及如何查看 Deployment 的创建结果。
> 本文同时讲述了两种创建 Deployment 的方式:
> * 使用 kubectl 创建 Deployment
> * 使用 Kuboard 创建 Deployment
<b-card>
<b-tabs content-class="mt-3">
<b-tab title="使用 kubectl 创建 Deployment" active>
<b-tab title="使用 kubectl 创建 Deployment">
下面的 yaml 文件定义了一个 Deployment该 Deployment 将创建一个有 3 个 nginx Pod 副本的 ReplicaSet副本集
@ -130,11 +134,54 @@ spec:
pod-template-hash 标签是 Deployment 创建 ReplicaSet 时添加到 ReplicaSet 上的ReplicaSet 进而将此标签添加到 Pod 上。这个标签用于区分 Deployment 中哪个 ReplicaSet 创建了哪些 Pod。该标签的值是 `.spec.template` 的 hash 值。
</b-tab>
<b-tab title="使用 Kuboard 创建 Deployment">
<b-tab title="使用 Kuboard 创建 Deployment" active>
正在撰写
1. 进入 Kuboard 名称空间页面,并点击页头上的 ***创建工作负载*** 按钮;
截图如下所示:
![Kubernetes-教程](./create.assets/image-20200315103827631.png)
2. 在工作负载创建页面填写表单如下:
| 区域 | 字段名称 | 填写内容 | 字段说明 |
| ----------------- | -------- | ------------ | ------------------------------------------------------------ |
| 基本信息 | 服务类型 | Deployment | |
| | 服务分层 | 展现层 | Kuboard 特性的字段,用于表示该工作复杂显示在名称空间的哪一个分层 |
| | 服务名称 | web-nginx | |
| | 副本数量 | 3 | |
| 容器组-->工作容器 | 容器名称 | nginx | |
| | 镜像 | nginx:1.7.9 | |
| | Ports | TCP : 80 | 容器组暴露的端口 |
截图如下图所示:
![Kubernetes-教程](./create.assets/image-20200315103300026.png)
3. 点击保存后,可以看到 Deployment 的更新界面,如下图所示:
Kuboard 在界面中显示了 ReplicaSets、Pods 的动态变化过程。
> 显示 ReplicaSets 的特性要求 Kuboard 版本不低于 v1.0.8
![Kubernetes-教程](./create.assets/image-20200315105410219.png)
![Kubernetes-教程](./create.assets/image-20200315110103544.png)
4. 对于每一个 PodKuboard 提供了如下几个功能可以便捷的与容器内应用进行交互:
代理:替代 kubectl proxy 功能,可以直接访问容器内应用,参考 [KuboardProxy](/guide/proxy)
日志:替代 kubectl logs 功能,可以直接追踪容器内应用的日志输出;
bash/sh替代 kubectl exec 功能,可以直接进入容器内应用的终端;
</b-tab>
</b-tabs>

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

View File

@ -17,9 +17,13 @@ meta:
以我们在 [创建Deployment](./create.html) 中创建的 Deployment 为例。
> 本文提供了两种途径对 Deployment 执行暂停和继续操作:
> * 使用 kubectl 暂停和继续 Deployment
> * 使用 Kuboard 暂停和继续 Deployment
<b-card>
<b-tabs content-class="mt-3">
<b-tab title="使用 kubectl 暂停 Deployment" active>
<b-tab title="使用 kubectl 暂停 Deployment">
* 执行命令 `kubectl get deployment`,查看 Deployment 信息,输出结果如下所示:
@ -103,10 +107,25 @@ meta:
:::
</b-tab>
<b-tab title="使用 Kuboard 暂停 Deployment">
<b-tab title="使用 Kuboard 暂停 Deployment" active>
* 在 Deployment 详情页中点击 ***处理状态*** 的开关,可以暂停 Deployment 处理,修改后如下图所示:
![Kubernetes-教程-暂停Deployment](./pause.assets/image-20200315161430483.png)
* 点击 ***调整镜像标签*** 按钮,设置新版本为 `1.15.8`,如下图所示:
保存后,可以看到 Deployment 中已经将容器镜像版本修改为 `nginx:1.15.8`然而Deployment 控制器此时并未执行滚动更新的过程,因为 Deployment 的处理已经被暂停。
![Kubernetes-教程-暂停Deployment](./pause.assets/image-20200315161646155.png)
* 点击 ***处理状态*** 的开关,将其设定为 `已继续`Deployment 将立刻开始执行滚动更新,最终结果如下图所示:
![Kubernetes-教程-暂停Deployment](./pause.assets/image-20200315162152085.png)
正在撰写中
</b-tab>
</b-tabs>

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

View File

@ -19,10 +19,13 @@ meta:
当且仅当 Deployment 的 `.spec.template` 字段被修改时例如您修改了容器的镜像kubernetes 将为其创建一个 Deployment revision版本。Deployment 的其他更新(例如:修改 `.spec.replicas` 字段)将不会创建新的 Deployment reviesion版本
:::
> 本文提供了两种途径对 Deployment 执行回滚操作:
> * 使用 kubectl 回滚 Deployment
> * 使用 Kuboard 回滚 Deployment
<b-card>
<b-tabs content-class="mt-3">
<b-tab title="使用 kubectl 回滚 Deployment" active>
<b-tab title="使用 kubectl 回滚 Deployment">
<h2>模拟更新错误</h2>
@ -111,7 +114,7 @@ meta:
<h2>检查 Deployment 的更新历史</h2>
1. 执行命令 `kubectl rollout history deployment.v1.apps/nginx-deployment` 检查 Deployment 的历史版本,输出结果如下所示:
```
deployments "nginx-deployment"
REVISION CHANGE-CAUSE
@ -149,7 +152,7 @@ meta:
下面的步骤可将 Deployment 从当前版本回滚到前一个版本version 2
1. 执行命令 `kubectl rollout undo deployment.v1.apps/nginx-deployment` 将当前版本回滚到前一个版本,输出结果如下所示:
```
deployment.apps/nginx-deployment
```
@ -219,9 +222,31 @@ meta:
```
</b-tab>
<b-tab title="使用 Kuboard 回滚 Deployment">
<b-tab title="使用 Kuboard 回滚 Deployment" active>
## 模拟更新错误
* 假设您更新 Deployment 的时候,犯了一个拼写错误,将 `1.9.1` 写成了 `1.91`,如下图所示:
![Kubernetes-教程](./rollback.assets/image-20200315114441313.png)
* 该更新将卡住,新的副本集中的 Pod 将因为抓取不到镜像而不能启动,并陷入不断抓取镜像的死循环当中,如下图所示:
![Kubernetes-教程](./rollback.assets/image-20200315114807304.png)
## 检查 Deployment 的更新历史,并回滚
* 上图中,显示了该 Deployment 有三个副本集,分别对应 Deployment 的版本 `1`、`2`、`3`。点击某一个副本集上的 ***回滚*** 按钮Kuboard 将为您对比两个版本之间的差异,如下图所示:
![Kubernetes-教程](./rollback.assets/image-20200315115224518.png)
* 点击 **确认回滚** 按钮,将回滚到选定的版本
正在撰写中
</b-tab>
</b-tabs>

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

View File

@ -15,9 +15,13 @@ meta:
伸缩Scaling Deployment是指改变 Deployment 中 Pod 的副本数量,以应对实际业务流量的变化。
> 本文提供了两种途径对 Deployment 执行伸缩操作:
> * 使用 kubectl 伸缩 Deployment
> * 使用 Kuboard 伸缩 Deployment
<b-card>
<b-tabs content-class="mt-3">
<b-tab title="使用 kubectl 伸缩 Deployment" active>
<b-tab title="使用 kubectl 伸缩 Deployment">
<h2>执行伸缩</h2>
@ -83,10 +87,63 @@ meta:
```
</b-tab>
<b-tab title="使用 Kuboard 伸缩 Deployment">
<b-tab title="使用 Kuboard 伸缩 Deployment" active>
## 执行伸缩
* 在 Deployment 详情页面,点击 ***伸缩*** 按钮,调整副本数并保存,如下图所示:
即可完成对 Deployment 的伸缩操作;
![Kubernetes-教程-伸缩](./scale.assets/image-20200315133044513.png)
* `kubectl autoscale` 指令可以执行对 Deployment 的自动伸缩,目前 Kuboard 界面还不支持此操作。
请参考 [horizontal Pod autoscaling](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/)
## 按比例伸缩
滚动更新RollingUpdate Deployment 过程中同一时间点运行应用程序的多个版本。如果一个 Deployment 正在执行滚动更新RollingUpdate的过程中也可能暂停了滚动更新您或者自动伸缩器autoscaler对该 Deployment 执行伸缩操作此时Deployment Controller 会按比例将新建的 Pod 分配到当前活动的 ReplicaSet有 Pod 的 ReplicaSet以避免可能的风险。这种情况叫做按比例伸缩Proportional Scaling
例如,假设您已经运行了一个 10 副本数的 Deployment其 maxSurge=3, maxUnavailable=2。
* 点击 Deployment 详情页面中的 ***部署策略*** 下的 ***编辑部署策略*** 按钮,如下图所示:
将 *最大超出副本数* 修改为 `3`
将 *最大不可用副本数* 修改为 `2`
修改后保存。
![Kubernetes-教程](./scale.assets/image-20200315135123901.png)
* 确认当前 10 个副本正在运行,如下图所示:
![Kubernetes-教程-按比例伸缩](./scale.assets/image-20200315135701001.png)
* 点击 ***调整镜像标签*** 按钮,将容器镜像更新到一个不存在的标签,例如 `sometag`,如下图所示:
![Kubernetes-教程-按比例伸缩](./scale.assets/image-20200315135949626.png)
* 此时Deployment 将新建一个副本集,并且其期望的副本数为 `5`,原来的副本集的期望副本数被调整为 `8`,如下图所示:
由于新副本集中的 Pod 不能获取到镜像,因此滚动更新将卡在这个位置。
![Kubernetes-教程-按比例伸缩](./scale.assets/image-20200315140245614.png)
* 点击 ***伸缩*** 按钮,将期望副本数调整为 `15`,如下图所示:
![Kubernetes-教程-按比例伸缩](./scale.assets/image-20200315140447782.png)
* 此时,由于比原来期望的副本数增加了 5新增副本数将按比例增加到新、旧两个副本集最终结果如下图所示
![Kubernetes-教程-按比例伸缩](./scale.assets/image-20200315140740451.png)
正在撰写中
</b-tab>
</b-tabs>

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

View File

@ -164,8 +164,13 @@ $ echo $?
</b-tab>
<b-tab title="使用 Kuboard 查看 Deployment 状态">
在前面的处理中,您已经熟悉了 Kuboard 界面中如何管理 Deployment 的滚动更新过程。此外,还有少许 Deployment 的状态信息显示在运行时信息这个区块,如下图所示:
> 您也可以直接查看 Deployment 的 YAML 内容。
![Kubernetes-教程-查看Deployment状态](./status.assets/image-20200315163007630.png)
正在撰写中
</b-tab>
</b-tabs>

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

View File

@ -0,0 +1,32 @@
---
vssueId: 40
layout: LearningLayout
description: 本文描述了 Kubernetes Deployment 滚动更新过程中的可配置参数。
meta:
- name: keywords
content: Kubernetes教程,K8S教程,ReplicaSet
---
# 部署策略
<AdSenseTitle/>
[返回 Deployment](./#deployment-概述)
通过 Deployment 中 `.spec.strategy` 字段,可以指定使用 `滚动更新 RollingUpdate` 的部署策略还是使用 `重新创建 Recreate` 的部署策略
Kuboard 中,可以通过如下界面编辑部署策略。
![Kubernetes-Deployment Strategy部署策略](./strategy.assets/image-20200315163608635.png)
其中字段的含义如下:
| 字段名称 | 可选值 | 字段描述 |
| ---------------- | ---------------------- | ------------------------------------------------------------ |
| 类型 | 滚动更新<br />重新创建 | 如果选择重新创建Deployment将先删除原有副本集中的所有 Pod然后再创建新的副本集和新的 Pod。如此更新过程中将出现一段应用程序不可用的情况 |
| 最大超出副本数 | 数字或百分比 | 滚动更新过程中,可以超出期望副本数的最大值。<br/> 该取值可以是一个绝对值例如5也可以是一个相对于期望副本数的百分比例如10%<br/> 如果填写百分比,则以期望副本数乘以该百分比后向上取整的方式计算对应的绝对值;<br/> 当最大超出副本数 maxUnavailable 为 0 时,此数值不能为 0默认值为 25%。<br/> 例如:假设此值被设定为 30%当滚动更新开始时新的副本集ReplicaSet可以立刻扩容<br/> 但是旧 Pod 和新 Pod 的总数不超过 Deployment 期待副本数spec.repilcas的 130%。<br/> 一旦旧 Pod 被终止后,新的副本集可以进一步扩容,但是整个滚动更新过程中,新旧 Pod 的总<br/> 数不超过 Deployment 期待副本数spec.repilcas的 130%。 |
| 最大不可用副本数 | 数字或百分比 | 滚动更新过程中,不可用副本数的最大值。<br/> 该取值可以是一个绝对值例如5也可以是一个相对于期望副本数的百分比例如10%<br/> 如果填写百分比,则以期望副本数乘以该百分比后向下取整的方式计算对应的绝对值;<br/> 当最大超出副本数 maxSurge 为 0 时,此数值不能为 0默认值为 25%<br/> 例如:假设此值被设定为 30%当滚动更新开始时旧的副本集ReplicaSet可以缩容到期望<br/> 副本数的 70%;在新副本集扩容的过程中,一旦新的 Pod 已就绪,旧的副本集可以进一步缩容,<br/> 整个滚动更新过程中,确保新旧就绪副本数之和不低于期望副本数的 70%。 |
[返回 Deployment](./#deployment-概述)

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

View File

@ -19,13 +19,13 @@ meta:
当且仅当 Deployment 的 Pod template`.spec.template`字段中的内容发生变更时例如标签、容器的镜像被改变Deployment 的发布更新rollout将被触发。Deployment 中其他字段的变化(例如修改 .spec.replicas 字段)将不会触发 Deployment 的发布更新rollout
:::
本文提供了两种途径对 Deployment 执行发布更新rollout
* 使用 kubectl 更新 Deployment
* 使用 Kuboard 更新 Deployment
> 本文提供了两种途径对 Deployment 执行发布更新rollout
> * 使用 kubectl 更新 Deployment
> * 使用 Kuboard 更新 Deployment
<b-card>
<b-tabs content-class="mt-3">
<b-tab title="使用 kubectl 更新 Deployment" active>
<b-tab title="使用 kubectl 更新 Deployment">
**使用下述步骤更新您的 Deployment**
@ -145,9 +145,33 @@ meta:
* Deployment Controller 继续 scale up 新的 ReplicaSet 并 scale down 旧的 ReplicaSet直到最后新旧两个 ReplicaSet一个副本数为 3另一个副本数为 0。
</b-tab>
<b-tab title="使用 Kuboard 更新 Deployment">
<b-tab title="使用 Kuboard 更新 Deployment" active>
1. 进入 Deployment 查看界面,如下图所示:
![Kubernetes-教程](./update.assets/image-20200315111231323.png)
2. 点击上图中的 ***调整镜像标签*** 按钮
将新版本字段修改为 `1.9.1`,并点击 ***确定*** 按钮,如下图所示:
![Kubernetes-教程](./update.assets/image-20200315111509644.png)
3. 等待 Kubernetes 完成应用的滚动更新:
更新过程中,截图如下:
![Kubernetes-教程](./update.assets/image-20200315111838761.png)
完成更新后,截图如下:
![Kubernetes-教程](./update.assets/image-20200315113204869.png)
正在撰写中
</b-tab>
</b-tabs>