kubernetes服务如何运作?

时间:2018-02-20 04:47:44

标签: service kubernetes

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

这就是我现在的想法:

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

这是对的吗?还有一些我还不清楚的事情:

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

我在网上看到的大多数图表都将服务划分为跨越所有节点,这使得它更难以想象

1 个答案:

答案 0 :(得分:1)

  

每个节点中的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中有一个全局分配映射,它维护完整的列表,允许分配唯一的新列表。有关网络模型的更多信息,请阅读this blog

有关详细信息,请参阅kubernetes componentsservices的文档。