在单个K8s pod中部署容器网络

时间:2016-12-27 21:49:02

标签: docker kubernetes

我在EC2实例中运行了一个应用。它在网络上启动多个容器:

docker run --name purple \
    --net=treeOfPlums \
    --net-alias=purple \
    -d treeofplums/purple

docker run --name shiny \
    --net=treeOfPlums \
    --net-alias=shiny \
    -d treeofplums/shiny

在这种情况下,容器purpleshiny可以进行通信,因为它们分别位于treeOfPlums上,别名为purpleshiny

我想在K8上部署此应用。我正在使用minikube进行开发。我不想在这里使用docker-in-docker,我的主应用程序是一个容器,它会使其余部分旋转。相反,我想让他们成为所有兄弟姐妹。

我的问题是,如何在K8s广告连播中指定该网络上的网络名称和容器别名?

在部署yaml中使用关键字networknetwork-alias将无效。据我所知,无论如何,单个pod中的容器都在一个网络上,因此设置别名也足够了。我想的是:

    spec:
      containers:
        - name: purple
          image: purple
          network: treeOfPlums 
          net-alias: purple
    ...

1 个答案:

答案 0 :(得分:3)

pod的要点是容器可以像在localhost上那样说话。您不需要在容器中的容器之间进行任何其他网络调整。

来自文档:

  

pod中的应用程序都使用相同的网络命名空间(相同的IP)   和端口空间),因此可以“找到”彼此并使用   本地主机。因此,pod中的应用程序必须协调   他们使用的端口。每个pod都有一个共享的IP地址   与其他物理层充分沟通的网络空间   网络上的计算机和pod。

     

主机名设置为应用程序容器的pod名称   在pod内。

     

除了定义应用程序容器之外   在pod中运行,pod指定一组共享存储卷。   卷使数据能够在容器重启和分享后继续存在   在pod中的应用程序之中。

http://kubernetes.io/docs/user-guide/pods/#motivation-for-pods