Kubernetes 部署 用于告诉 Kubernetes 如何创建或修改包含容器化应用程序的 pod 实例。部署可以扩展副本 pod 的数量,以受控方式推出更新的代码,或者在必要时回滚到早期的部署版本。
使用 Kubernetes 部署有什么好处?
Kubernetes 自动化了生产中部署、扩展和更新应用程序所涉及的工作和重复的手动功能。由于 Kubernetes 部署控制器始终监控 Pod 和节点的健康状况,它可以替换发生故障的 Pod 或绕过节点,替换这些 Pod 以确保关键应用程序的连续性。部署会自动启动 pod 实例,并确保它们按照定义在集群中的所有节点上运行。更多的自动化转化为更快的部署和更少的错误。
什么是 Kubernetes 部署策略?
Kubernetes 提供了多种部署策略来处理广泛的应用程序开发和部署需求。一旦您定义了应用程序的所需状态,部署控制器就会以受控的变化率进行所需的更改。
什么是 Kubernetes 重新创建部署?
重新创建策略会终止当前运行的 pod 实例并使用新版本“重新创建”它们。通常用于用户活动不是问题的开发环境中。
重新创建完全刷新了 pod 和应用程序的状态。因此,存在与旧部署的关闭和新部署实例的启动相关的停机时间。
什么是 Kubernetes 滚动更新部署?
滚动更新策略允许从一个应用程序版本到新版本的有序、渐进式迁移。在此部署中,启动了具有新版本的新 ReplicaSet,并且随着新版本的副本的启动,旧版本的副本被终止。最终,所有旧版本的 Pod 都被终止并被新版本取代。滚动更新可实现版本之间的有序转换,但转换可能需要一些时间。
什么是 Kubernetes 蓝/绿部署?
一旦新版本在生产中进行测试,蓝/绿策略提供了从旧应用程序版本到新应用程序版本的快速过渡。在这里,新的“绿色”版本与现有的“蓝色”版本一起部署。当确信“绿色”版本按设计工作时,版本标签将在执行负载平衡的 Kubernetes 服务对象的选择器字段中替换。这会立即将流量切换到新版本。尽管这提供了避免版本控制问题的快速推出,但此策略需要两倍的资源利用率,因为两个版本都在运行直到切换。
什么是 Kubernetes 金丝雀部署?
在金丝雀部署中,较小的用户组被路由到应用程序的新版本,该应用程序在较小的 pod 子集上运行以测试生产环境中的功能。一旦确信测试没有错误,新版本的副本就会被放大,从而有条不紊地替换旧版本。Canary 部署非常适合在一小部分用户上测试新功能,并且很容易回滚。因此,金丝雀部署可以很好地衡量新代码将如何影响系统的整体运行。
Kubernetes 部署的用例是什么?
部署是管理和扩展应用程序在集群上运行方式的最简单方法,Kubernetes 的开放 API 简化了与 CI/CD 管道的集成。
一些常见的部署用例:
- Kubernetes 的一个流行用例是运行无状态 Web 服务器,例如流行的开源 nginx。部署可以请求实例化固定数量的 pod 副本,Kubernetes 将在部署期间维护该数量的 pod。
- 需要像数据库实例这样的持久存储的应用程序将使用 StatefulSet 类型部署并挂载持久卷以确保数据完整性和寿命。
- 随着工作负载的增加,部署可以自动扩展集群中的副本数量,自动平衡副本之间的传入请求,随着需求的增加创建新的副本,并在需求下降时终止副本。
如何创建 Kubernetes 部署?
与大多数 Kubernetes 功能一样,部署在 YAML(或 JSON)文件中描述,然后使用 kubectl apply 创建。
例如,一个名为“web-deployment”的 nginx 部署的 YAML 具有 4 个副本,如下所示:
api版本:应用程序/v1;
种类:部署
元数据:
名称:网络部署规范:
选择器:
匹配标签:
应用程序:nginx
复制品:4
模板:
元数据:
标签:
应用程序:nginx
规格:
容器:
- 名称:nginx
图片:nginx:1.17.0
端口:- 容器端口:80
一旦定义了部署,它就会从 YAML 文件中创建:kubectl apply -f https://[location/web-deployment.yaml]
Kubernetes 中的 JSON 和 YAML 有什么区别?
YAML(YAML Ain't Markup Language)和 JSON(JavaScript Object Notation)都可以用来定义 Kubernetes 资源。许多用户更喜欢 YAML 的可读性。但是,由于 YAML 是 JSON 的超集,因此任何有效的 JSON 文件也是有效的 YAML 文件。
如何更新 Kubernetes 部署?
可以通过更改部署中的 Pod 模板规范来更新部署,这会自动导致更新推出。更改 Pod 模板将导致正在运行的 pod 停止接受请求,因此可以缩减它们,直到可以终止所有 pod。一旦它们被终止,更新的 pod 模板将用于创建新的 pod。
如何回滚 Kubernetes 部署?
如果部署被认为不稳定或部署中有错误,则使用以下命令回滚到以前的版本:
Kubectl rollout undo [deployment_name]添加参数–to-revision=将回滚到该特定版本的部署
如何扩展 Kubernetes 部署?
随着特定应用程序的需求增加,部署对于扩展副本数量很有用,并且可以通过 kubectl scale 命令完成。例如,要将部署扩展到 20 个副本,可以使用:
Kubectl scale [deployment-name] –replicas 20