Kubernetes Deployment详解及示例(11)
本文是Kubernetes权威指南系列的一部分,你可以点击Kubernetes权威指南查看所有教程
Kubernetes Deployment介绍
在 Kubernetes 中,Deployment 用于为 Pod 和 ReplicaSet 提供声明性更新。此外,Deployment控制器是复制控制器的更高版本,因为它删除、添加、更新 ReplicaSet 中的 Pod。当我们拥有包含数十个 Pod 的 ReplicaSet 并且需要修改它们时,我们需要它以更快、更动态的方式工作。通过使用 Kubernetes Deployment,如果以正确的方式使用,可以毫不费力地实现这一点。
什么是 Kubernetes Deployment?
- Kubernetes Deployment基于规范的 YAML 文件工作,您在其中描述了所需的状态。然后Deployment控制器将 Pods 或 ReplicaSets 的当前状态更改为所需状态。我们可以定义Deployment来创建新的副本集或删除现有的副本集或许多其他操作。
- 在 Kubernetes 中,Deployment 是部署 Pod 或 RS 的推荐方式。它代表一组配置相同但具有唯一身份的多个 Pod。Deployment运行应用程序的多个副本,还会自动扩展或缩减 Pod 的数量。
- 此外,在进行扩展时,它还可以通过一次限制其在几个 pod 上的操作来确保您的应用程序在某一时刻处于 UP 状态。
- Deployment由Deployment控制器管理,它使用一个 pod 模板,其中提到了 pod 的规范。本规范采用 YAML 格式。在这个 YAML 中,你可以提到 Pod 或 ReplicaSet 应该是什么样子,什么应用程序应该在容器内运行,哪些卷应该安装在容器内等等。
- 当Deployment更改并应用时,将自动创建 Pod。较旧的 Pod 将随着控制器速度被移除。
Kubernetes Deployment是如何工作的?
在开始使用Deployment之前,我们应该了解Kubernetes的工作方式。此外,要使用 Kubernetes Deployment,我们需要有一个 Kubernetes 环境,即使您在进行实验室设置,它也应至少包含以下内容: –
- 带有 Pod 的 Kubernetes 集群或
- Kubectl 命令行
- 如果您的集群中有多个节点,则网络应该可以正常工作。
- Kubernetes 版本应高于 9。
此外,要创建用于Deployment的规范 YAML 文件,它必须事先知道这些字段,并且应该在部署规范 YAML 文件中提及。
- apiVersion:告诉api版本
- kind:这必须是Deployment
- metadata:在此之下,您指定Deployment的详细信息
- name:这指定Deployment的名称。
- Spec:此下的字段指定要匹配的标签和要匹配的副本数
- selector:在此字段下,您在进行任何缩放之前提及要匹配的标签。
- selector.matchLabels:这些是键值对形式的标签。
- replicas:要创建的 pod 数量。
- template: pod 的模板规范,附加到 pod 的标签
- spec:镜像和版本等。
- metadata.labels:键值对中 pod 的标签。
使用上述字段的Deployment规范 YAML 文件的示例如下所示,此Deployment将创建 2 个带有标签 app: nginx 的复制 pod。其中容器镜像为nginx,版本为1.14.2。
当您使用 Kubectl 应用此文件时,如下所示:
kubectl apply –f deploy.yaml
您的部署将创建,命令将为您提供如下输出: –
- 使用如下所示的 Kubectl 删除
kubectl delete deployments redis-deploy-exam
检查当前 pod 的状态。您将看到 Pods 正在终止
kubectl get pod
再次检查,你将找不到任何pod
kubectl get pod
结论
Kubernetes Deployment 是创建复制应用程序的首选方式,它反过来使用 ReplicaSet (RS),然后在其下的 Pod 上工作。有效地使用 Deployment 使您的部署顺利且超级简单。您只需要知道它是如何工作的,并做好充分的准备。回滚Deployment 等功能可以在升级失败和类似情况下为您节省费用。
常见问题FAQ
- 程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
- 请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!