首页 > 解决方案 > 在 Kubernetes 的 pod 内运行的应用程序的 IP 地址分配

问题描述

我在一个 pod 中运行我的应用程序,在另一个 pod 中运行 Mongo 数据库。为了让我的应用程序成功启动,它需要知道运行 Mongo 的 IP 地址。

我有以下问题:

  1. 我如何知道 Mongo pod IP 地址,以便我可以在我的应用程序中配置它。
  2. 我的应用程序将在某些 IP 和端口上运行,这是作为某些配置文件的一部分提供的。但是由于这些是容器化的,并且 Kubernetes 分配了 Pod IP 地址,我的应用程序如何选择这个 IP 地址作为它自己的 IP?

标签: kubernetes

解决方案


您需要使用 Kubernetes 服务公开 mongodb。在 Services 的帮助下,应用程序不需要知道 Pod 的实际 IP 地址,您可以使用服务名称来解析 mongodb。

参考:https ://kubernetes.io/docs/concepts/services-networking/service/

一个使用 mysql 的例子:

apiVersion: v1
kind: Service
metadata:
  labels:
    name: mysql
  name: mysql
spec:
  ports:
    - port: 3306
  selector:
    name: mysql
---
apiVersion: v1
kind: Pod
metadata:
  name: mysql
  labels:
    name: mysql
spec:
  containers:
      image: mysql
      name: mysql
      env:
        - name: MYSQL_ROOT_PASSWORD
          value: wppassword
      ports:
        - containerPort: 3306
          name: mysql

如果有应用程序容器,在同一个命名空间,尝试使用mysql容器,可以直接使用mysql:3306POD IP地址连接。如果mysql.namespace_name:3306应用程序位于不同的命名空间中。


推荐阅读