2016-12-27 23 views
0

我有一個應用程序在EC2實例中運行。它從多個容器在網絡上:在單個K8s容器中部署容器網絡

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

我想部署在K8S這個程序。我正在使用minikube進行開發。我不想在這裏使用docker-in-docker,在那裏我的主應用程序是一個容器,它讓剩下的東西旋轉起來。相反,我想讓他們成爲所有的兄弟姐妹。

我的問題是,我該如何指定網絡名稱和容器別名,在K8S莢網絡上?

在部署yaml中使用關鍵字networknetwork-alias將不起作用。據我瞭解,無論如何,單個容器中的容器都在一個網絡上,因此設置別名也是足夠的。我正在考慮類似於:

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

回答

2

pod的要點是,容器可以像在本地主機上一樣說話。您不需要在容器中的容器之間進行任何額外的網絡調整。

從文檔:

在吊艙中的應用都使用相同的網絡名稱空間(相同的IP 和端口的空間),並且因此可以「查找」彼此和使用本地主機 通信。因此,一個pod中的應用程序必須協調其端口的使用 。每個吊艙都有一個IP地址,位於平面共享網絡空間 中,與整個網絡中的其他物理電腦和吊艙完全通信。

的主機名設置爲吊艙的名稱吊艙內的應用程序容器 。

除了限定在​​ 吊艙運行該應用程序的容器中,容器指定一組共享存儲卷。 卷允許數據在容器重新啓動後存活,並在該容器內的應用程序中共享 。

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