sti*_*ser 6 high-availability kubernetes
我正在学习Kubernetes,目前正在深入研究高可用性,虽然我了解我可以使用本地(或远程)etcd以及一组高度可用的setd建立一个高可用性的控制平面(API服务器,控制器,调度程序)小兵(通过Kubernetes本身),我仍然不确定服务在这个概念中的位置。
如果它们位于控制平面中:好的,我可以将它们设置为高度可用。
如果它们生活在某个节点上:好的,但是如果该节点出现故障或以其他任何方式不可用怎么办?
据我了解,需要一些服务来将我的Pod暴露给互联网以及进行负载平衡。因此,没有HA服务,我冒着我的应用程序无法访问的风险(即使该应用程序对于系统的任何其他方面都具有很高的可用性)。
Kubernetes Service 是 k8s 集群中的另一个 REST 对象。有以下类型是服务。它们中的每一个在集群中都有不同的用途。
服务的基本目的
这些对象存储在 etcd 中,因为它是集群中的唯一真实来源。
Kube-proxy 负责创建这些对象。它使用选择器和标签。
例如,每个 pod 对象都有标签,因此服务对象有选择器来匹配这些标签。此外,每个 Pod 都有端点,所以基本上 kube-proxy 为这些端点 (IP:Port) 分配服务 (IP:Port)。Kube-proxy 使用 IP-Tables 规则来实现这个魔法。
Kube-Proxy 作为 DaemonSet 部署在每个集群节点中,因此它们通过使用 etcd 相互了解。
您可以将服务视为内部(在某些情况下是外部)负载平衡器。该定义存储在Kubernetes API服务器中,但实际上存在的事实意味着如果不执行该定义就没有任何意义。与服务一起使用的最常见组件是kube-proxy,它使用iptables在节点上实现服务(这意味着每个节点都在其本地iptables规则中实现了每个服务),但是也存在ie。使用API中的Service概念来查找端点并将流量定向到它们的Ingress Controller实现,有效地跳过了iptables实现。最后,还有诸如linkerd或istio之类的服务网格解决方案,可以自己利用服务定义。
在大多数实现中,各个Pod之间的服务负载平衡,这意味着只要您有一个支持的Pod处于活动状态(并且具有足够的容量),您的“服务”就会响应(因此您也将获得HA),特别是如果您在其中进行了就绪/活动性调查其他会从服务中删除不健康的豆荚)
Kubernetes 服务文档对此提供了很好的见解
| 归档时间: |
|
| 查看次数: |
566 次 |
| 最近记录: |