update federation

pull/429/head
Jimmy Song 2020-12-11 21:15:53 +08:00
parent 3f0b5b549a
commit 7c794471d8
1 changed files with 13 additions and 33 deletions

View File

@ -1,12 +1,6 @@
# 集群联邦
**Deprecated**
>
Federation 的V1版本已经归档不再维护和更新且官方也不再推荐继续使用。故以下内容仅作为历史存档如果需要了解更多的Federation资料请参考[Kubernetes Federation v2](https://github.com/kubernetes-sigs/federation-v2).
-----
Kubernetes v1.9声称单集群最多可支持5000个节点和15万个Pod我相信很少有公司会部署如此庞大的一个单集群总有很多情况下因为各种各样的原因我们可能会部署多个集群但是有时候有想将他们统一起来管理这时候就需要用到集群联邦Federation
Kubernetes 从 1.8 版本起就声称单集群最多可支持 5000 个节点和 15 万个 Pod我相信很少有公司会部署如此庞大的一个单集群总有很多情况下因为各种各样的原因我们可能会部署多个集群但是有时候有想将他们统一起来管理这时候就需要用到集群联邦Federation
## 为什么要使用 federation
@ -20,12 +14,12 @@ Federation 还可以提供一些其它用例:
- 高可用:通过在集群间分布负载并自动配置 DNS 服务和负载均衡federation 最大限度地减少集群故障的影响。
- 避免厂商锁定通过更简单的跨集群应用迁移方式federation 可以防止集群厂商锁定。
Federation 对于单个集群没有用处。基于下面这些原因可能会需要多个集群:
Federation 对于单个集群没有用处。基于下面这些原因可能会需要多个集群:
- 低延迟:通过在多个区域部署集群可以最大限度减少区域近端用户的延迟。
- 故障隔离:拥有多个小集群可能比单个大集群更利于故障隔离(例如:在云服务提供商的不同可用区中的多个集群)。详情请参考 [多集群指南](https://kubernetes.io/docs/concepts/cluster-administration/federation)。
- 可伸缩性:单个集群有可伸缩性限制(对于大多数用户这不是典型场景。更多细节请参考 [Kubernetes 弹性伸缩与性能目标](https://git.k8s.io/community/sig-scalability/goals.md))。
- [混合云](https://kubernetes.io/docs/concepts/cluster-administration/federation/):您可以在不同的云服务提供商或本地数据中心中拥有多个集群。
- 故障隔离:拥有多个小集群可能比单个大集群更利于故障隔离(例如:在云服务提供商的不同可用区中的多个集群)。
- 可伸缩性:单个集群有可伸缩性限制(对于大多数用户这不是典型场景。更多细节请参考 [Kubernetes 弹性伸缩与性能目标](https://github.com/kubernetes/community/blob/master/sig-scalability/goals.md))。
- 混合云:你可以在不同的云服务提供商或本地数据中心中拥有多个集群。
### 警告
@ -37,25 +31,13 @@ Federation 对于单个集群没有用处。基于下面这些原因您可能会
### 混合云能力
Kubernetes 集群 federation 可以包含运行在不同云服务提供商(例如 Google Cloud、AWS及本地例如在 OpenStack 上)的集群。您只需要按需在适合的云服务提供商和/或地点上简单的创建集群,然后向 Federation API Server 注册每个集群的 API endpoint 和凭据即可。
Kubernetes 集群 federation 可以包含运行在不同云服务提供商(例如 Google Cloud、AWS及本地例如在 OpenStack 上)的集群。你只需要按需在适合的云服务提供商和 / 或地点上简单的创建集群,然后向 Federation API Server 注册每个集群的 API endpoint 和凭据即可。
此后,您的 [API 资源](https://kubernetes.io/docs/concepts/cluster-administration/federation/) 就可以跨越不同的集群和云服务提供商。
## 设置 federation
为了能够联合federate多个集群首先需要建立一个 federation 控制平面。请按照 [设置指南](https://kubernetes.io/docs/tutorials/federation/set-up-cluster-federation-kubefed) 设置 federation 控制平面。
## 级联删除
Kubernetes 1.6 版本包括了对联邦资源federated resources级联删除的支持。通过级联删除当您从 federation 控制平面删除一个资源时,会同时删除所有底层集群中对应的资源。
当使用 REST API 时,级联删除没有默认开启。要想在使用 REST API 从 federation 控制平面删除资源时启用级联删除,请设置 `DeleteOptions.orphanDependents=false` 选项。使用 `kubectl delete` 时默认使用级联删除。您可以通过运行 `kubectl delete --cascade=false` 来禁用该功能。
注意Kubernetes 1.5 版本支持的级联删除仅支持部分 federation 资源。
此后,你的 API 资源就可以跨越不同的集群和云服务提供商。
## 单个集群范围
在诸如 Google Compute Engine 或者 Amazon Web Services 等 IaaS 服务提供商中,虚拟机存在于 [区域](https://cloud.google.com/compute/docs/zones) 或 [可用区](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html) 上。我们建议 Kubernetes 集群中的所有虚拟机应该位于相同的可用区,因为:
在诸如 Google Compute Engine 或者 Amazon Web Services 等 IaaS 服务提供商中,虚拟机存在于 [区域Zone](https://cloud.google.com/compute/docs/zones) 或 [可用区Availability Zone](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html) 上。我们建议 Kubernetes 集群中的所有虚拟机应该位于相同的可用区,因为:
- 与拥有单个全局 Kubernetes 集群相比,单点故障更少。
- 与跨可用区集群相比,推测单区域集群的可用性属性更容易。
@ -76,16 +58,14 @@ Kubernetes 1.6 版本包括了对联邦资源federated resources级联删
Kubernetes 集群数量的选择可能是一个相对静态的选择,只是偶尔重新设置。相比之下,依据负载情况和增长,集群的节点数量和 service 的 pod 数量可能会经常变化。
要选择集群的数量,首先要确定使用哪些区域,以便为所有终端用户提供足够低的延迟,以在 Kubernetes 上运行服务(如果您使用内容分发网络Content Distribution NetworkCDN则 CDN 托管内容的时延要求不需要考虑。法律问题也可能影响到这一点。例如,拥有全球客户群的公司可能会决定在美国、欧盟、亚太和南亚地区拥有集群。我们将选择的区域数量称为 `R`
要选择集群的数量,首先要确定使用哪些区域,以便为所有终端用户提供足够低的延迟,以在 Kubernetes 上运行服务,如果你使用内容分发网络Content Distribution NetworkCDN则 CDN 托管内容的时延要求不需要考虑。法律问题也可能影响到这一点。例如,拥有全球客户群的公司可能会决定在美国、欧盟、亚太和南亚地区拥有集群。我们将选择的区域数量称为 `R`
其次,决定在整体仍然可用的前提下,可以同时有多少集群不可用。将不可用集群的数量称为 `U`。如果不能确定,那么 1 是一个不错的选择。
其次,决定在整体仍然可用的前提下,可以同时有多少集群不可用。将不可用集群的数量称为 `U`。如果不能确定,那么 1 是一个不错的选择。
如果在集群故障的情形下允许负载均衡将流量引导到任何区域,则至少需要有比 `R``U + 1` 数量更大的集群。如果不行的话(例如希望在集群发生故障时对所有用户确保低延迟),那么需要有数量为 `R * (U + 1)` 的集群(`R` 个区域,每个中有 `U + 1` 个集群)。无论如何,请尝试将每个集群放在不同的区域中。
如果在集群故障的情形下允许负载均衡将流量引导到任何区域,则至少需要有比 `R``U + 1` 数量更大的集群。如果不行的话(例如希望在集群发生故障时对所有用户确保低延迟),那么需要有数量为 `R * (U + 1)` 的集群(`R` 个区域,每个中有 `U + 1` 个集群)。无论如何,请尝试将每个集群放在不同的区域中。
最后,如果您的任何集群需要比 Kubernetes 集群最大建议节点数更多的节点,那么您可能需要更多的集群。 Kubernetes v1.3 支持最多 1000 个节点的集群。 Kubernetes v1.8 支持最多 5000 个节点的集群。
最后,如果你的任何集群需要比 Kubernetes 集群最大建议节点数更多的节点,那么你可能需要更多的集群。 Kubernetes v1.3 支持最多 1000 个节点的集群。 Kubernetes v1.8 支持最多 5000 个节点的集群。
---
原文地址https://kubernetes.io/docs/concepts/cluster-administration/federation/
译文地址https://k8smeetup.github.io/docs/concepts/cluster-administration/federation/
注意Federation V1 版本已经归档不再维护和更新,且官方也不再推荐继续使用。如果需要了解更多的 Federation 资料,请参考:[Kubernetes Federation v2](https://github.com/kubernetes-sigs/kubefed)。