【问题标题】:How do pods communicates with the other pod in a cluster created using KubernetesPod 如何与使用 Kubernetes 创建的集群中的其他 Pod 通信
【发布时间】:2018-08-04 03:35:37
【问题描述】:

我在 aws 中使用 kops 创建了 1 个主节点和 1 个工作节点以及 2 个 pod。 在一个 pod 中,我正在运行我的 oracle 数据库,而在另一个 pod 中,我已经部署了我的 java web 应用程序。现在运行 java web 应用程序需要与数据库 pod 对话 为了在集群中的 2 个 pod 之间进行通信,我在我的 java 应用程序中配置了 pod 的 IP 地址。我可以使用云提供商的公共 URL 访问应用程序,在开发环境中一切都很好。但在生产环境的情况下,我无法在我的 java 应用程序 Pod 中继续配置数据库 Pod 的 IP 地址。

人们如何解决这个问题?你们是否使用 Pod 的 IP 地址与 kubernetes 中的其他 pod 进行通信?或者有没有其他方式可以在 pod 之间进行通信?

这是我的 Pod 在云中的样子

   NAME                           READY     STATUS    RESTARTS   AGE       IP            NODE
csapp-8cd5d44556-7725f         1/1       Running   2          1d        100.96.1.54   ip-172-56-35-213.us-west-2.compute.internal
csdb-739d459467-92cmh          1/1       Running   0          1h        100.96.1.57   ip-172-27-86-213.us-west-2.compute.internal

有关此问题的任何帮助或指示都会有所帮助。

【问题讨论】:

    标签: amazon-web-services kubernetes cloud kops


    【解决方案1】:

    要在两个 pod 之间进行通信,您应该使用端口类型为 ClusterPortservice 资源,因为它们在同一个集群中。

    根据kubectl get pods的输出,你有两层:

    • 应用层:csapp-8cd5d44556-7725f

    • 数据层:csdb-739d459467-92cmh

    以下是数据层service资源的示例,以及它在应用层中的使用方式。

    apiVersion: v1
    kind: Service
    metadata:
      name: example-data-tier
    spec:
      selector:
        app: csdb # ⚠️Make sure of this, it should select the POD csdb-...
      ports:
        - name: redis
          protocol: TCP
          port: 6379
          # type (default is ClusterPort which is for internal)
    

    并且在应用层的 POD 中,您应该为环境变量提供来自上述服务的值:

    apiVersion: v1
    kind: Pod
    spec:
      containers:
        - name: xx
          image: "xxx:v1"
          ports:
            - containerPort: 8080
              protocol: TCP
          env:
            - name: "REDIS_URL"
              value: "redis://$(EXAMPLE_DATA_TIER_SERVICE_HOST):$(EXAMPLE_DATA_TIER_SERVICE_PORT_REDIS)"
    

    如果您的数据库不是 Redis,则在应用此解决方案时需要考虑这一点。

    【讨论】:

    • 感谢您的回答。我为 csapp 和 csdb 创建了服务,其类型为:LoadBalancer。但是我没有像你提到的那样设置环境变量。我会试一试的。
    • 当您说端口类型时,您是指具有 ClusterIP、NodePort、LoadBalancer、ExternalName 等值的类型吗?
    • 是的,@babs84。没错!
    猜你喜欢
    • 1970-01-01
    • 2021-12-30
    • 2019-09-25
    • 2019-12-23
    • 2022-06-10
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多