Service kubernetes服务是如何工作的?

Service kubernetes服务是如何工作的?,service,kubernetes,Service,Kubernetes,在Kubernetes的所有概念中,我发现服务工作机制是最难理解的 以下是我现在的想象: 每个节点中的kube代理侦听主API控制器中的任何新服务/端点 如果存在任何新的服务/端点,它将向该节点的iptable添加一条规则 对于NodePort服务,外部客户端必须通过节点的ip和NodePort之一访问新服务。节点将请求转发到新的服务IP 对吗?还有一些事情我还不清楚: 服务是否位于节点内?如果是这样的话,我们可以使用ssh连接到节点并检查服务的工作方式吗 服务IP是否为虚拟IP,并且只能

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

以下是我现在的想象:

  • 每个节点中的kube代理侦听主API控制器中的任何新服务/端点
  • 如果存在任何新的服务/端点,它将向该节点的iptable添加一条规则
  • 对于NodePort服务,外部客户端必须通过节点的ip和NodePort之一访问新服务。节点将请求转发到新的服务IP
对吗?还有一些事情我还不清楚:

  • 服务是否位于节点内?如果是这样的话,我们可以使用ssh连接到节点并检查服务的工作方式吗
  • 服务IP是否为虚拟IP,并且只能在节点内访问
我在网上看到的大多数图表都将服务绘制为跨越所有节点,这让人更难以想象

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

Kubernetes使用etcd跨所有节点(包括POD、服务、部署等)共享当前集群配置信息

如果存在任何新的服务/端点,它将向该节点的iptable添加一条规则

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

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

根据服务类型,会采取其他措施,例如,通过自动创建的nodePort类型clusterIP服务,使节点上的端口可用。或者使用云提供商创建外部负载平衡器,等等

服务是否位于节点内?如果是这样的话,我们可以使用ssh连接到节点并检查服务的工作方式吗

如前所述,服务体现在集群配置、端点控制器以及其他东西中,如clusterIP服务、负载平衡器等。我看不出有必要通过ssh连接到节点来检查服务。通常,与集群api的交互应足以调查/更新服务配置

服务IP是否为虚拟IP,并且只能在节点内访问

服务IP(如POD IP)是虚拟的,可以从集群网络中访问。etcd中有一个全局分配图,用于维护允许分配唯一新列表的完整列表。有关网络模型的更多信息,请阅读


有关更多详细信息,请参阅和的文档。

是的,您或多或少都做对了,另请参阅谢谢@MichaelHausenblas。正是我要找的。我试着做一些类似的事情来看看它是如何工作的,但没能像在那封邮件中那样解释它。谢谢。我需要一些东西来消化你的回复和链接中的信息,但它们都很有用