This commit is contained in:
huanqing.shao
2019-10-12 20:01:03 +08:00
parent a38c2a6712
commit b4a2a48480
170 changed files with 471 additions and 34 deletions

View File

@ -9,6 +9,8 @@ meta:
# 将容器组调度到指定的节点
<AdSenseTitle/>
参考文档: Kubernetes 官网 [Assigning Pods to Nodes](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/)
## 概述

View File

@ -9,6 +9,8 @@ meta:
# 管理容器的计算资源
<AdSenseTitle/>
参考文档: Kubernetes 官网 [Managing Compute Resources for Containers](https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/)
## 概述

View File

@ -9,6 +9,8 @@ meta:
# 使用ConfigMap配置您的应用程序
<AdSenseTitle/>
本文参考了 Kubernetes 官网 [Configure a Pod to Use a ConfigMap](https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap),并有所改写
Kubernetes ConfigMap 可以将配置信息和容器镜像解耦,以使得容器化的应用程序可移植。本文提供了一系列的实例,解释如何通过 Kuboard 创建 ConfigMap 以及如何使用 ConfigMap 中的数据配置 Pod容器组

View File

@ -9,6 +9,8 @@ meta:
# 为容器设置Linux Capabilities
<AdSenseTitle/>
使用 [Linux Capabilities](http://man7.org/linux/man-pages/man7/capabilities.7.html) 可以为容器内的进程授予某些特定的权限(而不是 root 用户的所有权限)。在容器定义的 `securityContext` 中添加 `capabilities` 字段,可以向容器添加或删除 Linux Capability。
本文后续章节中,先运行一个不包含 `capabilities` 字段的容器,观察容器内进程的 linux capabilities 位图的情况;然后在运行一个包含 `capabilities` 字段的容器,比较其 linux capabilities 位图与前者的不同。

View File

@ -9,6 +9,8 @@ meta:
# Kuboard中容器的Security Context
<AdSenseTitle/>
通过 Kuboard可以直接设定 Deployment、StatefulSet、DaemonSet 等中容器的 securityContext 的内容。在 Kuboard 工作负载编辑器界面中点击 **容器组的更多设定** 按钮,可查看到容器的 Security Context 设置界面,如下图所示:
![Kubernetes教程_Kuboard中设置容器的SecurityContext](./con-kuboard.assets/image-20191005230605496.png)
@ -28,4 +30,3 @@ meta:
| procMount | string | procMount 代表了容器的 proc mount 的类型。默认值是 `DefaultProcMount`(使用容器引擎的默认值)。该字段需要激活 Kubernetes 的ProcMountType 特性 |
| capabilities | <div style="width: 80px;">add: array<br />drop: array</div> | 为容器进程 add/drop Linux capabilities。默认使用容器引擎的设定。更多内容请参考 [为容器设置Linux Capabilities](./con-cap.html) |
| seLinuxOptions | | 此字段设定的 SELinux 上下文将被应用到 Pod 中所有容器。如果不指定,容器引擎将为每个容器分配一个随机的 SELinux 上下文。<font color="grey">也可以在Pod的SecurityContext中设定如果 Pod 和容器的 securityContext 中都设定了这个字段,则对该容器来说以容器中的设置为准。</font> |

View File

@ -9,6 +9,8 @@ meta:
# 为容器设置SELinux标签
<AdSenseTitle/>
Pod 或容器定义的 `securityContext``seLinuxOptions` 字段是一个 [SELinuxOptions](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.16/#selinuxoptions-v1-core) 对象,该字段可用于为容器指定 SELinux 标签。如下所示:
``` yaml

View File

@ -9,6 +9,8 @@ meta:
# 为容器设置Security Context
<AdSenseTitle/>
容器的定义中包含 `securityContext` 字段,该字段接受 [SecurityContext](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.16/#securitycontext-v1-core) 对象。通过指定该字段,可以为容器设定安全相关的配置,当该字段的配置与 Pod 级别的 `securityContext` 配置相冲突时,容器级别的配置将覆盖 Pod 级别的配置。容器级别的 `securityContext` 不影响 Pod 中的数据卷。
下面的示例中的 Pod 包含一个 Container且 Pod 和 Container 都有定义 `securityContext` 字段:

View File

@ -10,6 +10,8 @@ meta:
# 概述
<AdSenseTitle/>
> 参考文档Kubernetes 官网文档 [Configure a Security Context for a Pod or Container](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#assign-selinux-labels-to-a-container)
Security Context安全上下文用来限制容器对宿主节点的可访问范围以避免容器非法操作宿主节点的系统级别的内容使得节点的系统或者节点上其他容器组受到影响。

View File

@ -9,6 +9,8 @@ meta:
# Kuboard中Pod的Security Context
<AdSenseTitle/>
通过 Kuboard可以直接设定 Deployment、StatefulSet、DaemonSet 等中 Pod 模板的 securityContext 的内容。在 Kuboard 工作负载编辑器界面中点击 **容器组的更多设定** 按钮,可查看到 Pod 的 Security Context 设置界面,如下图所示:
![Kubernetes教程_Kuboard中Pod的SecurityContext](./pod-kuboard.assets/image-20191004221427371.png)

View File

@ -9,6 +9,8 @@ meta:
# 为Pod设置Security Context
<AdSenseTitle/>
在 Pod 的定义中增加 `securityContext` 字段,即可为 Pod 指定 Security 相关的设定。 `securityContext` 字段是一个 [PodSecurityContext](./pod-kuboard.html) 对象。通过该字段指定的内容将对该 Pod 中所有的容器生效。
## Pod示例

View File

@ -9,6 +9,8 @@ meta:
# 关于数据卷
<AdSenseTitle/>
Pod 的 securityContext 作用于 Pod 中所有的容器,同时对 Pod 的数据卷也同样生效。具体来说,`fsGroup``seLinuxOptions` 将被按照如下方式应用到 Pod 中的数据卷:
* `fsGroup`:对于支持 ownership 管理的数据卷,通过 `fsGroup` 指定的 GID 将被设置为该数据卷的 owner并且可被 `fsGroup` 写入。更多细节请参考 [Ownership Management design document](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/storage/volume-ownership-management.md)
* `seLinuxOptions`:对于支持 SELinux 标签的数据卷,将按照 `seLinuxOptions` 的设定重新打标签,以使 Pod 可以访问数据卷内容。通常您只需要设置 `seLinuxOptions``level` 这一部分内容。该设定为 Pod 中所有容器及数据卷设置 [Multi-Category Security (MCS)](https://selinuxproject.org/page/NB_MLS) 标签。

View File

@ -9,6 +9,8 @@ meta:
# 创建Secret使用Generator
<AdSenseTitle/>
从 kubernetes v1.14 开始kubectl 集成了 [Kustomize](https://kustomize.io/)。通过 Kustomize您可以使用 generatorKustomize 的概念)创建 Secret并保存到 API Server。Generator 必须在 `kustomization.yaml` 文件中指定。
::: tip

View File

@ -9,6 +9,8 @@ meta:
# 创建Secret使用kubectl
<AdSenseTitle/>
假设某个 Pod 需要访问数据库。在您执行 kubectl 命令所在机器的当前目录,创建文件 `./username.txt` 文件和 `./password.txt` 暂存数据库的用户名和密码,后续我们根据这两个文件配置 kubernetes secrets。
```sh

View File

@ -9,6 +9,8 @@ meta:
# 创建Secret使用Kuboard
<AdSenseTitle/>
本文简要描述如何在 Kuboard 中创建 Kubernetes Secret。
Kubernetes Secret 必须从属于某一个名称空间,进入 Kuboard 名称空间界面Secret 列表在名称空间的左上角。如下图所示:

View File

@ -9,6 +9,8 @@ meta:
# 创建Secret手动
<AdSenseTitle/>
和创建其他类型的 API 对象Pod、Deployment、StatefulSet、ConfigMap 等)一样,您也可以先在 yaml 文件中定义好 Secret然后通过 `kubectl apply -f` 命令创建。此时,您可以通过如下两种方式在 yaml 文件中定义 Secret
* **data**:使用 data 字段时,取值的内容必须是 base64 编码的
* **stringData**:使用 stringData 时,更为方便,您可以直接将取值以明文的方式写在 yaml 文件中

View File

@ -9,6 +9,8 @@ meta:
# 解码和编辑Secret
<AdSenseTitle/>
## 解码Secret
Secret 中的信息可以通过 `kubectl get secret` 命令获取。例如,执行命令 `kubectl get secret mysecret -o yaml

View File

@ -9,6 +9,8 @@ meta:
# Secret概述
<AdSenseTitle/>
参考文档: Kubernetes 官网文档 [Secrets](https://kubernetes.io/docs/concepts/configuration/secret/)
## 概述

View File

@ -9,7 +9,7 @@ meta:
# 使用Secret存储Ingress TLS证书
<AdSenseTitle/>
可以直接在 Ingress 中配置 HTTPS 证书,使得你的网站支持 HTTPS 协议。

View File

@ -10,6 +10,8 @@ meta:
# 概述
<AdSenseTitle/>
> 参考文档: Kubernetes 官网文档 [Taints and Tolerations](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/)
Pod 中存在属性 [Node selector / Node affinity](/learning/k8s-intermediate/config/assign-pod-node.html),用于将 Pod 指定到合适的节点。

View File

@ -10,6 +10,8 @@ meta:
# 基于污点的驱逐TaintBasedEviction
<AdSenseTitle/>
在前面的章节中,我们描述了 [NoExecute](/learning/k8s-intermediate/config/taints-toleration/#污点与容忍的匹配) 的污点效果,该效果将对已经运行在节点上的 Pod 施加如下影响:
* 不容忍该污点的 Pod 将立刻被驱逐
* 容忍该污点的 Pod 在未指定 `tolerationSeconds` 的情况下,将继续在该节点上运行

View File

@ -10,6 +10,8 @@ meta:
# 条件化的污点TaintNodesByCondition
<AdSenseTitle/>
自 Kubernetes 1.12 开始,`TaintNodesByCondition` 这个特性进入 beta 阶段,此时节点控制器自动根据 Node Condition 为节点创建对应的污点。调度器则不去检查 Node conditions而是检查节点的污点因此 Node Condition 不再直接影响到调度程序。用户通过为 Pod 添加容忍,可以选择性地忽略节点的某些问题(以 Node Condition 呈现的问题)。
`TaintNodesByCondition` 这个特性只会为节点添加 `NoSchedule` 效果的污点。`TaintBasedEviction` Kubernetes 1.13 开始默认生效)则为节点添加 `NoExecute` 效果的污点,参考 [TaintBasedEviction](./taint-based-evictions.html)。

View File

@ -10,6 +10,8 @@ meta:
# 使用案例
<AdSenseTitle/>
污点和容忍使用起来非常灵活,可以用于:
* 避免 Pod 被调度到某些特定的节点
* 从节点上驱逐本不应该在该节点运行的 Pod

View File

@ -9,6 +9,8 @@ meta:
# 容器的环境变量
<AdSenseTitle/>
> 参考文档: [Container Environment Variables](https://kubernetes.io/docs/concepts/containers/container-environment-variables/)
Kubernetes为容器提供了一系列重要的资源

View File

@ -9,6 +9,8 @@ meta:
# 容器镜像
<AdSenseTitle/>
在 Kubernetes 的 Pod 中使用容器镜像之前,您必须将其推送到一个镜像仓库(或者使用仓库中已经有的容器镜像)。在 Kubernetes 的 Pod 定义中定义容器时,必须指定容器所使用的镜像,容器中的 `image` 字段支持与 `docker` 命令一样的语法,包括私有镜像仓库和标签。
例如:`my-registry.example.com:5000/example/web-example:v1.0.1` 由如下几个部分组成:

View File

@ -9,6 +9,8 @@ meta:
# 容器生命周期事件处理
<AdSenseTitle/>
> 参考文档: [Attach Handlers to Container Lifecycle Events](https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/)
Kubernetes 中支持容器的 postStart 和 preStop 事件本文阐述了如何向容器添加生命周期事件处理程序handler

View File

@ -9,6 +9,8 @@ meta:
# 容器生命周期
<AdSenseTitle/>
> 参考文档: [Container Lifecycle Hooks](https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/)
本文描述了 kubelet 管理的容器如何使用容器生命周期钩子执行指定的代码。

View File

@ -9,6 +9,8 @@ meta:
# Runtime Class
<AdSenseTitle/>
> 参考文档: [Runtime Class](https://kubernetes.io/docs/concepts/containers/runtime-class/)
特性状态Kubernetes v1.14 <Badge type="warning">beta</Badge>

View File

@ -9,6 +9,8 @@ meta:
# 搭建NFS Server
<AdSenseTitle/>
## 背景
Kubernetes 对 Pod 进行调度时,以当时集群中各节点的可用资源作为主要依据,自动选择某一个可用的节点,并将 Pod 分配到该节点上。在这种情况下Pod 中容器数据的持久化如果存储在所在节点的磁盘上,就会产生不可预知的问题,例如,当 Pod 出现故障Kubernetes 重新调度之后Pod 所在的新节点上,并不存在上一次 Pod 运行时所在节点上的数据。

View File

@ -9,6 +9,8 @@ meta:
# 存储卷PersistentVolume
<AdSenseTitle/>
参考文档: Kubernetes 官方文档 [Persistent Volumes](https://kubernetes.io/docs/concepts/storage/persistent-volumes/)
## 概述

View File

@ -8,6 +8,7 @@ meta:
# 数据卷类型如何选择
<AdSenseTitle/>
# 存储卷类型如何选择

View File

@ -9,6 +9,8 @@ meta:
# 存储类StorageClass
<AdSenseTitle/>
参考文档: Kubernetes 官网 [Storage Classes](https://kubernetes.io/docs/concepts/storage/storage-classes/)
## 存储类概述

View File

@ -8,6 +8,8 @@ meta:
# 数据卷-挂载
<AdSenseTitle/>
参考文档: Kubernetes 官网文档 [Volumes](https://kubernetes.io/docs/concepts/storage/volumes/)
## 容器内路径

View File

@ -9,6 +9,8 @@ meta:
# 数据卷Volume
<AdSenseTitle/>
参考文档: Kubernetes 官网文档 [Volumes](https://kubernetes.io/docs/concepts/storage/volumes/)
## 数据卷概述

View File

@ -9,6 +9,8 @@ meta:
# 使用私有仓库中的docker镜像
<AdSenseTitle/>
企业通常会因为如下几个原因,需要搭建自己的私有 docker registry
* 限制 docker 镜像的分发范围,例如:只允许在内网分发,或者只允许被授权的用户获取 docker 镜像
* 提高推送 docker 镜像以及抓取 docker 镜像时的网络传输速度

View File

@ -9,6 +9,8 @@ meta:
# 如何选择网络插件
<AdSenseTitle/>
本文转载自: [kubernetes网络插件对比分析flannel、calico、weave](https://www.toutiao.com/a6708893686517727748/)
原文作者:残花花败柳柳

View File

@ -9,6 +9,8 @@ meta:
# Service连接应用程序
<AdSenseTitle/>
参考文档: Kubernetes 官网文档 [Connecting Applications with Services](https://kubernetes.io/docs/concepts/services-networking/connect-applications-service/)
## Kubernetes 的网络模型

View File

@ -9,6 +9,8 @@ meta:
# Service/Pod的DNS
<AdSenseTitle/>
参考文档: Kubernetes 官网文档 [DNS for Services and Pods](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/)
本文介绍了 Kubernetes 中的 DNS 分配方式

View File

@ -9,6 +9,8 @@ meta:
# Ingress通过互联网访问您的应用
<AdSenseTitle/>
参考文档:
* Kubernetes 官网 [Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/)
* Kubernetes 官网 [Ingress Controllers](https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/)

View File

@ -9,6 +9,8 @@ meta:
# Service详细描述
<AdSenseTitle/>
参考文档Kubernetes 官网文档:[Service](https://kubernetes.io/docs/concepts/services-networking/service/)
## 创建 Service

View File

@ -9,6 +9,8 @@ meta:
# 发布Service
<AdSenseTitle/>
Kubernetes Service 支持的不同访问方式。
## Service 类型

View File

@ -9,6 +9,8 @@ meta:
# Service概述
<AdSenseTitle/>
参考文档Kubernetes 官网文档:[Service](https://kubernetes.io/docs/concepts/services-networking/service/)
## 为何需要 Service

View File

@ -11,6 +11,8 @@ meta:
参考文档: Kubernetes 官网 [Init Containers](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/)
<AdSenseTitle/>
## 初始化容器介绍
Pod 可以包含多个工作容器,也可以包含一个或多个初始化容器,初始化容器在工作容器启动之前执行。

View File

@ -7,6 +7,8 @@ meta:
# 容器组_Kuboard
<AdSenseTitle/>
## 通过 Kuboard 创建容器组
由于在 Kubernetes 中任何时候都是不推荐用户直接创建容器组而是应该通过控制器创建容器组Kuboard 管理工具并不提供直接创建容器组的界面,而是通过 **工作负载编辑器** 创建 Deployment、StatefulSet、DaemonSet 等方式来创建容器组。

View File

@ -11,6 +11,8 @@ meta:
参考文档: Kubernetes 官网文档 [Pod Lifecycle](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/)
<AdSenseTitle/>
[[TOC]]
## Pod phase

View File

@ -7,6 +7,7 @@ meta:
# 容器组_Privileged 模式
<AdSenseTitle/>
## Privilged 模式运行容器

View File

@ -11,6 +11,8 @@ meta:
参考文档Kubernetes 官方文档 [Pod Overview](https://kubernetes.io/docs/concepts/workloads/pods/pod-overview/) [Pods](https://kubernetes.io/docs/concepts/workloads/pods/pod/)
<AdSenseTitle/>
术语中英文对照:
| 英文全称 | 英文缩写 | 中文翻译 |

View File

@ -11,6 +11,8 @@ meta:
> 参考文档: Kubernetes 官网文档 [Alternatives to DaemonSet](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/#alternatives-to-daemonset)
<AdSenseTitle/>
DaemonSet 有如下替代选项可以选择
## Init Scripts

View File

@ -11,6 +11,8 @@ meta:
> 参考文档 Kubernetes 官网文档 [Communicating with Daemon Pods](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/#communicating-with-daemon-pods)
<AdSenseTitle/>
与 DaemonSet 容器组通信的模式有:
* **Push** DaemonSet 容器组用来向另一个服务推送信息,例如数据库的统计信息。这种情况下 DaemonSet 容器组没有客户端

View File

@ -9,6 +9,8 @@ meta:
# 创建 DaemonSet
<AdSenseTitle/>
## YAML 示例
下面是 DaemonSet 的 YAML 文件示例 daemonset.yaml。该例子中的 DaemonSet 运行了一个 fluentd-elasticsearch 的 docker 镜像:

View File

@ -11,6 +11,7 @@ meta:
> 参考文档: Kubernetes 官网文档 [DaemonSet](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/)
<AdSenseTitle/>
DaemonSet 控制器确保所有(或一部分)的节点都运行了一个指定的 Pod 副本。
* 每当向集群中添加一个节点时,指定的 Pod 副本也将添加到该节点上

View File

@ -11,6 +11,8 @@ meta:
> 参考文档 Kubernetes 官网文档 [How Daemon Pods are Scheduled](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/#how-daemon-pods-are-scheduled)
<AdSenseTitle/>
## 由 DaemonSet 控制器调度
**v1.12以后默认禁用**

View File

@ -11,6 +11,8 @@ meta:
> 参考文档 Kubernetes 官网文档 [Updating a DaemonSet](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/#updating-a-daemonset)
<AdSenseTitle/>
## 更新信息
* 在改变节点的标签时:

View File

@ -9,6 +9,8 @@ meta:
# 金丝雀发布
<AdSenseTitle/>
[返回 Deployment](./#deployment-概述)
<el-tabs type="border-card">

View File

@ -9,6 +9,8 @@ meta:
# 清理策略
<AdSenseTitle/>
[返回 Deployment](./#deployment-概述)
通过 Deployment 中 `.spec.revisionHistoryLimit` 字段,可指定为该 Deployment 保留多少个旧的 ReplicaSet。超出该数字的将被在后台进行垃圾回收。该字段的默认值是 10。

View File

@ -9,6 +9,8 @@ meta:
# 创建 Deployment
<AdSenseTitle/>
[返回 Deployment](./#deployment-概述)
本文描述了如何创建一个 Deployment如何理解 Deployment 各个字段,以及如何查看 Deployment 的创建结果。

View File

@ -11,6 +11,8 @@ meta:
参考文档: Kubernetes 官网 [Deployments](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/)、 [ReplicaSet](https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/)
<AdSenseTitle/>
术语表
| 英文 | 英文简称 | 中文 |

View File

@ -9,6 +9,8 @@ meta:
# 暂停和继续 Deployment
<AdSenseTitle/>
[返回 Deployment](./#deployment-概述)
您可以先暂停 Deployment然后再触发一个或多个更新最后再继续resume该 Deployment。这种做法使得您可以在暂停和继续中间对 Deployment 做多次更新,而无需触发不必要的滚动更新。

View File

@ -9,6 +9,8 @@ meta:
# 回滚 Deployment
<AdSenseTitle/>
[返回 Deployment](./#deployment-概述)
某些情况下您可能想要回滚rollbackDeployment例如Deployment 不稳定可能是不断地崩溃。默认情况下kubernetes 将保存 Deployment 的所有更新rollout历史。您可以设定 revision history limit 来确定保存的历史版本数量。

View File

@ -9,6 +9,8 @@ meta:
# 伸缩 Deployment
<AdSenseTitle/>
[返回 Deployment](./#deployment-概述)
伸缩Scaling Deployment是指改变 Deployment 中 Pod 的副本数量,以应对实际业务流量的变化。

View File

@ -9,6 +9,8 @@ meta:
# 查看 Deployment 的状态
<AdSenseTitle/>
[返回 Deployment](./#deployment-概述)
Deployment 的生命周期中,将会进入不同的状态,这些状态可能是:

View File

@ -9,6 +9,8 @@ meta:
# 更新 Deployment
<AdSenseTitle/>
[返回 Deployment](./#deployment-概述)
## 执行更新

View File

@ -9,6 +9,8 @@ meta:
# StatefulSet 的基本信息
<AdSenseTitle/>
[返回 StatefulSet](./)
## 创建 StatefulSet

View File

@ -11,6 +11,8 @@ meta:
> 参考文档: Kubernetes 官网文档 [StatefulSets](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/)
<AdSenseTitle/>
## StatefulSet 概述
StatefulSet 顾名思义,用于管理 Stateful有状态的应用程序。

View File

@ -9,6 +9,8 @@ meta:
# StatefulSet 的部署和伸缩
<AdSenseTitle/>
[返回 StatefulSet](./)
## 部署和伸缩 StatefulSet 时的执行顺序

View File

@ -9,6 +9,8 @@ meta:
# StatefulSet 的更新策略
<AdSenseTitle/>
[返回 StatefulSet](./)
## StatefulSet 的更新策略 <Badge text="Kuboard 暂不支持" type="warn"/>

View File

@ -9,6 +9,8 @@ meta:
# 控制器_概述
<AdSenseTitle/>
## 概述
Pod容器组是 Kubernetes 中最小的调度单元,您可以通过 kubectl 直接创建一个 Pod。Pod 本身并不能自愈self-healing。如果一个 Pod 所在的 Node 节点出现故障或者调度程序自身出现故障Pod 将被删除;同理,当因为节点资源不够或节点维护而驱逐 Pod 时Pod 也将被删除。