【问题标题】:How to access pods without services in Kubernetes如何在 Kubernetes 中访问没有服务的 pod
【发布时间】:2018-11-29 18:43:27
【问题描述】:

我想知道当没有为特定 pod 定义服务时如何访问 pod。如果是通过环境变量,集群如何获取这些?

另外,定义服务时,它存储在主节点的什么位置?

亲切的问候, 查尔斯

【问题讨论】:

    标签: kubernetes


    【解决方案1】:
    • 如果您为应用定义服务,则可以使用该服务在集群外部访问它

    • 服务有多种类型,包括 nodePort ,您可以在其中访问任何集群节点上的该端口,并且无论 Pod 的实际位置如何,您都可以访问该服务

    • 您也可以访问集群内部的端点或实际的 Pod 端口,但不能访问外部

    • 以上都使用kubernetes服务发现

    • 虽然有两种类型的服务发现
    • 内部服务发现
    • 外部服务发现。

    【讨论】:

    • 我认为 Kubernetes DNS 是一个可选功能?您是说如果您从集群外部访问服务,则需要 DNS?
    • DNS 对于强烈推荐的方式是可选的
    • ENV vars vs DNS 讨论是在您的 pod 想要从其他 pod 访问服务的情况下进行的
    • kubernetes服务对象使用标签和iptables规则
    • 我明白了。但是一个 pod 如何知道另一个 pod 的端口和 IP?它是否向 master 请求它想要到达某个 pod,然后谁用正确的 ENV vars 回答调用 pod?
    【解决方案2】:

    如果没有服务,您将无法“访问” Pod 容器端口。服务是定义最终 iptable 规则集所需状态的对象。

    此外,与所有其他对象一样,服务存储在 etcd 中并通过您的主服务器进行维护。

    但是,您可以手动创建一个 iptable 规则,将流量转发到 docker 已公开的本地容器端口。

    希望这会有所帮助!如果您仍有任何问题,请在此处提出。

    【讨论】:

    • 好的,我知道服务是从集群外部访问所必需的,并且存储在主节点的 etcd 中。想象一下,节点 A 上的 pod 1 想要访问节点 B 上的 pod 2 提供的功能。如果没有服务,pod 1 如何知道如何到达 pod 2?
    【解决方案3】:

    仅出于调试目的,您可以将机器中的端口转发到 pod 中的端口:

    kubectl port-forward POD_NAME HOST_PORT:POD_PORT
    

    如果你必须从任何地方访问它,你应该使用服务,但你必须创建一个部署

    创建部署

    kubectl create -f https://raw.githubusercontent.com/kubernetes/website/master/content/en/examples/service/networking/run-my-nginx.yaml
    

    使用 NodePort 服务公开部署

    kubectl expose deployment deployment/my-nginx --type=NodePort --name=nginx-service
    

    然后列出服务并获取服务的端口

    kubectl get services | grep nginx-service
    

    【讨论】:

      【解决方案4】:
      • 所有集群数据都存储在 etcd 中,这是一个分布式键值存储。如果 etcd 出现故障,集群会变得不稳定,并且无法启动新的 pod。

      • Kubernetes 可以访问集群中的任何 pod。服务是访问由选择器绑定的一组 pod 的逻辑方式。无论服务如何,仍然可以访问单个 pod。可以创建更多服务以从集群外部访问 Pod(NodePort 服务)

      【讨论】:

      • 集群是否在某处存储了 etcd 的备份?
      • @CharlesVanDamme 这是一个分布式的 etcd 存储。通常,所有分布式系统都在一个机器集群中存储多个副本
      猜你喜欢
      • 2021-09-17
      • 1970-01-01
      • 2021-03-05
      • 2019-04-23
      • 2019-04-23
      • 1970-01-01
      • 1970-01-01
      • 2019-11-24
      • 2019-06-06
      相关资源
      最近更新 更多