kubernetes - 在 Kubernetes 的 pod 内运行的应用程序的 IP 地址分配
问题描述
我在一个 pod 中运行我的应用程序,在另一个 pod 中运行 Mongo 数据库。为了让我的应用程序成功启动,它需要知道运行 Mongo 的 IP 地址。
我有以下问题:
- 我如何知道 Mongo pod IP 地址,以便我可以在我的应用程序中配置它。
- 我的应用程序将在某些 IP 和端口上运行,这是作为某些配置文件的一部分提供的。但是由于这些是容器化的,并且 Kubernetes 分配了 Pod IP 地址,我的应用程序如何选择这个 IP 地址作为它自己的 IP?
解决方案
您需要使用 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:3306
POD IP地址连接。如果mysql.namespace_name:3306
应用程序位于不同的命名空间中。
推荐阅读
- java - 如何手动排序 Swagger UI 上显示的端点?
- javascript - 如何使用 JavaScript 和 jQuery 动态添加文本?
- node.js - 我放入哈巴狗模板的 json 数据将 '<' 放在字符串的开头,将 '>' 放在结尾。为什么?我该如何摆脱它?
- python - 在不重新索引或丢失索引的情况下在列上连接不同形状的数据框
- laravel - 更新和销毁方法在 laravel eloquent 模型中不起作用?
- react-native - React Native - 用滚动动画底部标签栏
- java - Android Webview EvaluateJavascript 有时不返回响应
- google-apps-script - 除非已安装的触发器已经存在,否则如何创建“创建触发器”附加菜单选项?
- excel-2016 - 在 Excel 工作表中查找单词列表
- python - 为什么我不能应用 .remove() 方法在 python 中列出?