当我在一个 pod/pod 模板中定义多个容器,比如一个运行 nginx 另一个运行 php-fpm 时,它们如何相互访问?
我必须在定义中定义一些链接吗(我找不到解释所有可用配置选项的文档),还是它们可以默认地相互访问?
如果是的话,我需要在配置文件中放置什么值? 我阅读了共享网络命名空间的内容,但不知道它真正意味着什么?
我也找不到任何示例。
当我在一个 pod/pod 模板中定义多个容器,比如一个运行 nginx 另一个运行 php-fpm 时,它们如何相互访问?
我必须在定义中定义一些链接吗(我找不到解释所有可用配置选项的文档),还是它们可以默认地相互访问?
如果是的话,我需要在配置文件中放置什么值? 我阅读了共享网络命名空间的内容,但不知道它真正意味着什么?
我也找不到任何示例。
Pod中的所有容器都绑定到相同的网络命名空间。
这意味着(a)它们都有相同的IP地址,(b)在所有容器中,localhost
是相同的。换句话说,如果您在Pod中的一个容器中运行Apache,而在另一个容器中运行MySQL,则可以从Apache容器访问localhost:3306
的MySQL(并且可以从MySQL容器访问localhost:80
的Apache)。
虽然容器共享网络,但它们不共享文件系统。如果要在容器之间共享文件,则需要使用卷。这里有一个简单的卷示例这里。
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();
});