在Kubernetes的所有概念中,我发现服务工作机制是最难理解的
这就是我现在的想法:
这是对的吗?还有一些我还不清楚的事情:
我在网上看到的大多数图表都将服务划分为跨越所有节点,这使得它更难以想象
答案 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 components和services的文档。