diff --git a/content/zh/docs/tasks/federation/administer-federation/deployment.md b/content/zh/docs/tasks/federation/administer-federation/deployment.md new file mode 100644 index 0000000000..3af526f5b3 --- /dev/null +++ b/content/zh/docs/tasks/federation/administer-federation/deployment.md @@ -0,0 +1,176 @@ +--- +title: 联邦 Deployment +content_template: templates/task +--- + + +{{% capture overview %}} + +{{< deprecationfilewarning >}} +{{< include "federation-deprecation-warning-note.md" >}} +{{< /deprecationfilewarning >}} + + +本指南说明了如何在联邦控制平面中使用 Deployment。 + +联邦控制平面中的 Deployment(在本指南中称为 “联邦 Deployment”)与传统的 [Kubernetes +Deployment](/docs/concepts/workloads/controllers/deployment/) 非常类似,并提供相同的功能。在联邦控制平面中创建联邦 Deployment 确保所需的副本数存在于注册的群集中。 + +{{< feature-state for_k8s_version="1.5" state="alpha" >}} + + +一些特性(例如完整的 rollout 兼容性)仍在开发中。 +{{% /capture %}} + +{{% capture prerequisites %}} + +* {{< include "federated-task-tutorial-prereqs.md" >}} + +* 您还应当拥有基本的 [Kubernetes 应用知识](/docs/tutorials/kubernetes-basics/),特别是在 [Deployments](/docs/concepts/workloads/controllers/deployment/) 方面。 + +{{% /capture %}} + +{{% capture steps %}} + +## 创建联邦 Deployment + +联邦 Deployment 的 API 和传统的 Kubernetes Deployment API 是兼容的。 您可以通过向联邦 apiserver 发送请求来创建一个 Deployment。 + +您可以通过使用 [kubectl](/docs/user-guide/kubectl/) 运行下面的指令: + +``` shell +kubectl --context=federation-cluster create -f mydeployment.yaml +``` + +`--context=federation-cluster` 参数告诉 kubectl 发送请求到联邦 apiserver 而不是某个 Kubernetes 集群。 + +一旦联邦 Deployment 被创建,联邦控制平面会在所有底层 Kubernetes 集群中创建一个 Deployment。 您可以通过检查底层每个集群来对其进行验证,例如: + +``` shell +kubectl --context=gce-asia-east1a get deployment mydep +``` + +上面的命令假定您在客户端中配置了一个叫做 ‘gce-asia-east1a’ 的上下文, + +底层集群中的这些 Deployment 会匹配联邦 Deployment 中副本数和修订版本相关注解_之外_的信息。 联邦控制平面确保所有集群中的副本总数与联邦 Deployment 中请求的副本数量匹配。 + + +### 在底层集群中分布副本 + +默认情况下,副本会被平均分布到所有的底层集群中。例如:如果您有 3 个注册的集群并且创建了一个副本数为 9(`spec.replicas = 9`) 的联邦 Deployment,那么这 3 个集群中的每个 Deployment 都将有 3 个副本 (`spec.replicas=3`)。 +为修改每个集群中的副本数,您可以在联邦 Deployment 中以注解的形式指定 [FederatedReplicaSetPreference](https://github.com/kubernetes/federation/blob/{{< param "githubbranch" >}}/apis/federation/types.go),其中注解的键为 `federation.kubernetes.io/deployment-preferences`。 + + + +## 更新联邦 Deployment + +您可以像更新 Kubernetes Deployment 一样更新联邦 Deployment。但是,对于联邦 Deployment,您必须发送请求到联邦 apiserver 而不是某个特定的 Kubernetes 集群。联邦控制平面会确保每当联邦 Deployment 更新时,它会更新所有底层集群中相应的 Deployment 来和更新后的内容保持一致。 所以如果(在联邦 Deployment 中)选择了滚动更新,那么底层集群会独立地进行滚动更新,并且联邦 Deployment 中的 `maxSurge` 和 `maxUnavailable` 只会应用于独立的集群中。将来这种行为可能会改变。 + +如果您的更新包括副本数量的变化,联邦控制平面会改变底层集群中的副本数量,以确保它们的总数等于联邦 Deployment 中请求的数量。 + + +## 删除联邦 Deployment + +您可以像删除 Kubernetes Deployment 一样删除联邦 Deployment。但是,对于联邦 Deployment,您必须发送请求到联邦 apiserver 而不是某个特定的 Kubernetes 集群。 + +例如,您可以使用 kubectl 运行下面的命令来删除联邦 Deployment: + +```shell +kubectl --context=federation-cluster delete deployment mydep +``` + +{{% /capture %}} + +