From b46ef1fc42af0d040f2c95d46f8388b32ef11594 Mon Sep 17 00:00:00 2001 From: lIuDuI <1693291525@qq.com> Date: Mon, 15 Apr 2019 13:28:01 +0800 Subject: [PATCH] ZH-trans: add cluster.md (#13500) * ZH-trans: add cluster.md * Update cluster.md * Update cluster.md * Update cluster.md --- .../tasks/administer-federation/cluster.md | 224 ++++++++++++++++++ 1 file changed, 224 insertions(+) create mode 100644 content/zh/docs/tasks/administer-federation/cluster.md diff --git a/content/zh/docs/tasks/administer-federation/cluster.md b/content/zh/docs/tasks/administer-federation/cluster.md new file mode 100644 index 0000000000..b6d7b30a09 --- /dev/null +++ b/content/zh/docs/tasks/administer-federation/cluster.md @@ -0,0 +1,224 @@ +--- +title: 联邦 Cluster +content_template: templates/task +--- + + + +{{% capture overview %}} + +{{< note >}} +{{< include "federation-current-state.md" >}} +{{< /note >}} + + + +本指南介绍了如何在联邦控制平面中使用集群 API 资源。 + +与 Deployment、Service 和 ConfigMap 等 Kubernetes 资源不同,cluster 只存在于联邦上下文中,即这些请求必须提交给联邦 api-server。 + +{{% /capture %}} + +{{% capture prerequisites %}} + +* {{< include "federated-task-tutorial-prereqs.md" >}} + + + +* 你需要具备基本的 [Kubernetes 工作知识](/docs/setup/pick-right-solution/)。 + +{{% /capture %}} + +{{% capture steps %}} + + + +## 集群列表 + + + +要列出联邦中可用的 cluster,可以使用 [kubectl](/docs/user-guide/kubectl/) +运行: + +```shell +kubectl --context=federation get clusters +``` + + + +`--context=federation` 参数告诉 kubectl 将请求提交给联邦 apiserver, +而不是将其发送给 Kubernetes 集群。如果您将其提交给 k8s 集群,则会收到错误消息 + + +``` +the server doesn't have a resource type "clusters" +``` + + + +如果您传递了正确的联邦上下文,但是收到了一条消息错误 + +``` +No resources found. +``` + + +这表示着没有向联邦添加任何集群。 + + + +## 创建一个联邦集群 + + +在联邦中创建`集群`资源意味着将其加入到联邦中。因此,您可以使用 `kubefed join`。基本上,您需要为新群集指定一个名称, +并说明与承载联邦的集群相对应的上下文的名称。下面的示例命令将集群 `gondor` 添加到运行在主机集群 `rivendell` 上的联邦: + + +```shell +kubefed join gondor --host-cluster-context=rivendell +``` + + +您可以在 [kubefed 指南](/docs/tutorials/federation/set-up-cluster-federation-kubefed/#adding-a-cluster-to-a-federation)的相关章节中找到更多关于如何实现这一点的详细信息。 + + + +## 删除一个联邦集群 + + +与创建集群相反,删除集群意味着从联邦中取消加入这个集群。这可以通过 `kubefed unjoin` 命令完成。要删除 `gondor` 群集,需要执行以下操作: + +```shell +kubefed unjoin gondor --host-cluster-context=rivendell +``` + + +你可以在 [kubefed 指南](/docs/tutorials/federation/set-up-cluster-federation-kubefed/#removing-a-cluster-from-a-federation)中找到更多关于取消加入的详细信息。 + + + +## 标记集群 + + +您可以使用与其他任何 Kubernetes 对象相同的方法标记集群,这有助于对集群进行分组,也可以配合使用 ClusterSelector。 + +``` shell +kubectl --context=rivendell label cluster gondor key1=value1 key2=value2 +``` + + + +## ClusterSelector 注解 + + + +从 Kubernetes 1.7 开始,alpha 支持通过注解 `federation.alpha.kubernetes.io/cluster-selector` 在联邦集群中引导对象。。 +*ClusterSelector* 在概念上类似于 `nodeSelector`,但是它不是针对节点上的标签进行选择,而是针对联邦集群上的标签进行选择。 + +注解值必须是 JSON 格式并且必须可解析为 [ClusterSelector API 类型](/docs/reference/federation/v1beta1/definitions/#_v1beta1_clusterselector)。 +例如:`[{"key": "load", "operator": "Lt", "values": ["10"]}]`,不能正确解析的内容将抛出一个错误,并阻止将对象分发到任何联邦集群。alpha 实现包含 ConfigMap、Secret、Daemonset、Service 和 Ingress 类型的对象。 + +下面是一个 ClusterSelector 注释示例,它只会选择带有标签 `pci=true` 不选择标签为 `environment=test` 的集群: + +```yaml + metadata: + annotations: + federation.alpha.kubernetes.io/cluster-selector: '[{"key": "pci", "operator": + "In", "values": ["true"]}, {"key": "environment", "operator": "NotIn", "values": + ["test"]}]' +``` + + + +*key* 与联邦集群上的标签名称匹配。 + +*values* 与联邦集群上的标签值匹配。 + +可能的*操作符*有:`In`、`NotIn`、`Exists`、`DoesNotExist`、`Gt`、`Lt`。 + +*values* 字段在指定 `Exists` 或 `DoesNotExist` 时为空,在使用 `In` 或 `NotIn` 时可能包含多个字符串。 + +目前,`Gt` 和 `Lt` 操作符只支持整数。 + + + +## 集群 API 参考 + +完整的集群 API 参考目前在 `federation/v1beta1` 中,更多细节可以在[联邦 API 参考页面](/docs/reference/federation/)中找到。 + +{{% /capture %}} + +