访问 Kubernetes 中一个 pod 的其他容器

Access other containers of a pod in Kubernetes

当我在一个 pod/pod 模板中定义多个容器时,例如一个容器 运行 nginx 和另一个 php-fpm,它们如何相互访问?

我是否必须在定义中定义一些链接(我找不到解释 所有 可用配置选项的文档)或者默认情况下它们可以相互连接吗?

如果是,我必须在配置文件中输入什么值? 我阅读了共享网络命名空间一文,但我不知道它的真正含义?

我也找不到任何例子。

一个 pod 中的所有容器都绑定到同一个网络命名空间。

这意味着 (a) 它们都具有相同的 IP 地址,并且 (b) localhost 在所有容器中都是相同的。换句话说,如果您在 pod 的一个容器中有 Apache 运行 而在另一个容器中有 MysQL 运行,您可以从 Apache 访问 MySQL at localhost:3306容器(您可以从 MySQL 容器在 localhost:80 访问 Apache)。

虽然容器共享网络,但它们不共享文件系统。如果你想在容器之间共享文件,你需要使用卷。有一个简单的卷示例 here.

pod 中的容器可以通过 localhost:port_no 相互通信。 .if nodejs 服务器正在访问 mongodb 并且两者都在同一个 pod 中 运行 然后只需在连接字符串中写入 localhost:27017 。 pod

内典型的 nodejs-mongodb 连接示例
 var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/mydb";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  console.log("Database created!");
  db.close();
});