在Kubernetes中访问Pod的其他容器

14

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

我必须在定义中定义一些链接吗(我找不到解释所有可用配置选项的文档),还是它们可以默认地相互访问?

如果是的话,我需要在配置文件中放置什么值? 我阅读了共享网络命名空间的内容,但不知道它真正意味着什么?

我也找不到任何示例。

2个回答

35

Pod中的所有容器都绑定到相同的网络命名空间。

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

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


1

Pod内的容器可以通过localhost:port_no相互通信。 如果nodejs服务器正在访问mongodb,并且两者都在同一个pod中运行,则只需在连接字符串中写入localhost:27017。典型的nodejs-mongodb连接示例在pod内。

 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();
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接