We couldn't find a match for given <KEYWORD>, please try again.

什么是 Kubernetes 部署?

Kubernetes 部署可告知 Kubernetes 如何创建或修改包含容器化应用的 Pod 实例。部署有助于高效地扩展副本 Pod 的数量,以可控方式部署更新后的代码,或者在必要时回滚到较早的部署版本。Kubernetes 部署是使用 kubectl 完成的,kubectl 是可安装在各种平台(包括 Linux、macOS 和 Windows)上的命令行工具。

Kubernetes 使用现状

启动 Kubernetes 并正常运行

Kubernetes 部署有哪些优势?

Kubernetes 可自动执行在生产环境中部署、扩展和更新应用所涉及的工作和重复性手动功能,从而节省时间并减少错误。由于 Kubernetes 部署控制器会持续监控 Pod 和节点的运行状况,因此它可以实时进行更改(例如,更换发生故障的 Pod 或绕过关闭的节点),以确保关键应用的连续性。

部署可以自动启动 Pod 实例,并确保它们按定义在 Kubernetes 集群中的所有节点上运行。自动化程度越高,部署速度越快,错误越少。

什么是 Kubernetes 部署策略?

Kubernetes 提供了多种部署策略来满足广泛的应用开发和部署需求。一旦您定义了应用的预期状态,部署控制器就会开始工作。它能够以可控的速度进行更改,以优化部署。 

什么是 Kubernetes 重新创建部署?

重新创建策略会终止当前正在运行的 Pod,并使用新版本“重新创建”它们。此方法通常用于用户活动不成问题的开发环境中。

由于重新创建部署会完全刷新 Pod 和应用的状态,因此可能会因关闭旧部署和启动新部署实例而导致停机。

什么是 Kubernetes 滚动更新部署?

滚动更新部署可实现从一个应用版本到较新版本的有序迁移。带有新版本的新 ReplicaSet 会启动,并且,当新版本的副本启动时,会系统地终止旧版本的副本。最终,旧版本中的所有 Pod 都将由新版本替换。 

滚动更新部署很有用,因为利用它可以有条不紊地在各版本之间过渡。但是,这可能需要一些时间才能完成。

什么是 Kubernetes 蓝绿部署?

一旦在生产环境中测试完新版本,蓝绿策略便可以支持从旧版本快速过渡到新版本。在这里,新的“绿色”版本与现有的“蓝色”版本一起部署。一旦确信“绿色”版本可按设计运行,将替换执行负载均衡的 Kubernetes 服务对象的选择器字段中的版本标签。此操作会立即将流量交换到新版本。

Kubernetes 蓝绿部署选项提供了快速部署功能,可避免版本控制问题。但是,此策略会使资源利用率翻倍,因为在转换之前两个版本都在运行。

什么是 Kubernetes 金丝雀部署?

在金丝雀部署中,一小组用户被路由到应用的新版本(在较小的一组 Pod 上运行)。此方法的目的是在生产环境中对功能进行测试。一旦确信测试没有错误,就会纵向扩展新版本的副本,并有序地替换旧版本。

当您想针较小的用户组测试新功能时,金丝雀部署很有用。由于您可以轻松回滚金丝雀部署,因此,此策略有助于衡量新代码对总体系统运维有何影响,且不会带来重大风险。

Kubernetes 部署的应用场景有哪些?

部署是管理和扩展应用在 Kubernetes 集群上的运行方式的最简单方法,Kubernetes 的开放式 API 简化了与 CI/CD 流水线的集成。 

以下是一些常见的部署应用场景:

  • 运行无状态 Web 服务器,如流行的开源 Nginx。部署可以请求实例化固定数量的 Pod 副本,并且 Kubernetes 将在部署期间保持该数量的 Pod。
  • 需要持久性存储的应用(如数据库实例)将使用 StatefulSet 类型的部署并挂载持久性卷,以确保数据的完整性和使用寿命。
  • 随着工作负载的增加,部署可以自动扩展集群中的副本数量。例如,它们可以自动均衡副本之间的传入请求,在需求增加时创建新副本,并在需求减少时终止副本。

如何创建 Kubernetes 部署?

与大多数 Kubernetes 功能一样,在 YAML(或 JSON)文件中提供关于部署的描述,然后使用 kubectl apply 创建这些部署。

例如,具有四个副本的 Nginx 部署(名为“web-deployment”)的 YAML 如下所示:

apiVersion: apps/v1;

kind: Deployment

metadata:

name: web-deployment

spec:

selector:

matchLabels:

app: nginx

replicas: 4

template:

metadata:

labels:

app: nginx

spec:

containers:

- name: nginx

image: nginx:1.17.0

ports:- containerPort: 80


在此示例中,元数据显示,“web-deployment”是使用四个副本 Pod (replicas: 4) 创建的,选择器指定部署如何使用标签 (app: nginx) 找到 Pod。容器 (nginx) 运行版本 1.17.0 的容器映像,并且部署将打开端口 80 以供 Pod 使用。

您还可以使用配置文件中的“env”或“envFrom”字段为容器定义环境变量。定义部署后,将使用以下命令从 YAML 文件中创建它:kubectl apply -f https://[location/web-deployment.yaml]


Kubernetes 中的 JSON 和 YAML 之间有何区别?

YAML(YAML 非标记语言)和 JSON(JavaScript 对象表示法)均可用于定义 Kubernetes 资源。许多用户更喜欢 YAML,因为它的可读性强。但是,由于 YAML 是 JSON 的超集,因此任何有效的 JSON 文件也是有效的 YAML 文件。

如何更新 Kubernetes 部署?

您可以通过更改部署中的 Pod 模板规范来更新 Kubernetes 部署。这将自动部署更新。

更改 Pod 模板将阻止正在运行的 Pod 接受请求,因此,可以缩减它们,直到可以终止所有 Pod。终止所有 Pod 后,将使用更新后的 Pod 模板创建新 Pod。

如何回滚 Kubernetes 部署?

如果部署被视为不稳定或部署中出现错误,您可以使用 kubectl 进行回滚和更新。要回滚到之前的版本,请使用以下命令:

Kubectl rollout undo [deployment_name] 添加 argument–to-revision=will 可回滚到该特定版本的部署

如何扩展 Kubernetes 部署?

当对特定应用的需求增加时,部署可帮助扩展副本数量。使用 kubectl scale 命令可执行此任务。例如,要将部署扩展为最多含 20 个副本,请在命令行中输入以下命令:

Kubectl scale [deployment-name] –replicas 20

关键词:

2-5 倍

  • Kubernetes 部署(已有 11 个)

添加更多:

  • Kubetcl(增加 1-2 个)
  • Kubernetes 集群(增加 1-2 个)
  • 元数据(增加 1-2 个)
  • 选择器(已有 3 个)
  • 命令行(增加 1 个)
  • 容器映像(增加 1 个)
  • 环境变量(增加 1 个)
  • Linux(增加 1 个)

相关解决方案和产品

实验:应用现代化改造

在几周内将您的应用迁移到云中。

Tanzu Kubernetes for Operation

现代多云容器基础架构的基础。

Tanzu Application Platform

在 Kubernetes 中为多云开发人员提供卓越的体验。