* ZH-trans: add cluster.md * Update cluster.md * Update cluster.md * Update cluster.md
8.0 KiB
title, content_template
| title | content_template |
|---|---|
| 联邦 Cluster | 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 工作知识。
{{% /capture %}}
{{% capture steps %}}
集群列表
要列出联邦中可用的 cluster,可以使用 kubectl 运行:
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 上的联邦:
kubefed join gondor --host-cluster-context=rivendell
您可以在 kubefed 指南的相关章节中找到更多关于如何实现这一点的详细信息。
删除一个联邦集群
与创建集群相反,删除集群意味着从联邦中取消加入这个集群。这可以通过 kubefed unjoin 命令完成。要删除 gondor 群集,需要执行以下操作:
kubefed unjoin gondor --host-cluster-context=rivendell
你可以在 kubefed 指南中找到更多关于取消加入的详细信息。
标记集群
您可以使用与其他任何 Kubernetes 对象相同的方法标记集群,这有助于对集群进行分组,也可以配合使用 ClusterSelector。
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 类型。
例如:[{"key": "load", "operator": "Lt", "values": ["10"]}],不能正确解析的内容将抛出一个错误,并阻止将对象分发到任何联邦集群。alpha 实现包含 ConfigMap、Secret、Daemonset、Service 和 Ingress 类型的对象。
下面是一个 ClusterSelector 注释示例,它只会选择带有标签 pci=true 不选择标签为 environment=test 的集群:
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 参考页面中找到。
{{% /capture %}}