访问Kubernetes

时间:2015-06-07 12:00:58

标签: docker kubernetes

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

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

如果是,我必须在配置文件中放入什么值? 我阅读了共享网络命名空间,但我不知道这究竟意味着什么?

我也找不到任何例子。

2 个答案:

答案 0 :(得分:21)

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

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

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

答案 1 :(得分:0)

吊舱中的容器可以使用localhost:port_no相互交谈。 。如果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();
});