繁体   English   中英

kubernetes 服务是如何工作的?

[英]how kubernetes service works?

在 Kubernetes 的所有概念中,我发现服务工作机制是最难理解的

这是我现在的想象:

  • 每个节点中的 kube-proxy 侦听主 API 控制器中的任何新服务/端点
  • 如果有任何新的服务/端点,它会向该节点的 iptables 添加规则
  • 对于 NodePort 服务,外部客户端必须通过节点的 ip 和 NodePort 之一访问新服务。 节点将请求转发到新的服务IP

这是正确的吗? 还有一些我还不清楚的地方:

  • 服务是否位于节点内? 如果是这样,我们可以通过 ssh 进入节点并检查服务是如何工作的吗?
  • 服务 IP 是虚拟 IP 并且只能在节点内访问吗?

我看到的大部分在线绘制服务的图表都是跨越所有节点的,这更让人难以想象

每个节点中的 kube-proxy 侦听主 API 控制器中的任何新服务/端点

Kubernetes 使用 etcd 在所有节点(包括 pod、服务、部署等)之间共享当前的集群配置信息。

如果有任何新的服务/端点,它会向该节点的 iptables 添加规则

kubernetes 内部有一个所谓的端点控制器,负责修改虚拟集群网络的 DNS 配置,使服务端点通过 DNS(和环境变量)可用。

对于 NodePort 服务,外部客户端必须通过节点的 ip 和 NodePort 之一访问新服务。 节点将请求转发到新的服务IP

根据服务类型采取附加操作,例如通过自动创建的用于类型 nodePort 的 clusterIP 服务在节点上提供端口。 或者使用云提供商等创建外部负载均衡器。

服务是否位于节点内? 如果是这样,我们可以通过 ssh 进入节点并检查服务是如何工作的吗?

正如所解释的,服务体现在集群配置、端点控制器以及其他东西中,如 clusterIP 服务、负载均衡器等。我认为不需要通过 ssh 进入节点来检查服务。 通常与集群 api 交互应该足以调查/更新服务配置。

服务 IP 是虚拟 IP 并且只能在节点内访问吗?

服务 IP,如 POD IP,是虚拟的,可从集群网络内访问。 etcd 中有一个全局分配映射,它维护允许分配唯一的新列表的完整列表。 有关网络模型的更多信息,请阅读此博客

有关更多详细信息,请参阅kubernetes 组件服务的文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM