在kubernetes中的Pod中运行的应用程序的IP地址分配

时间:2018-07-22 17:38:37

标签: kubernetes

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

我有以下问题:

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

1 个答案:

答案 0 :(得分:2)

您需要使用Kubernetes Services公开mongodb。借助服务的帮助,无需应用程序知道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:3306通过POD IP地址进行连接。如果应用程序位于其他名称空间中,则为mysql.namespace_name:3306