2016-05-23 19 views
3

我試圖在Kubernetes中運行一個交互式Pod(容器),它不會創建Job或Deployment並在完成後刪除自己。如何在不創建部署或作業的情況下在Kubernetes中運行容器?

容器的目的是爲我們的開發人員提供一種簡單的方法來訪問我們的數據庫,該數據庫沒有公共IP地址。

目前,我們正在使用這個命令:

kubectl run -i --tty proxy-pgclient --image=private-registry.com/pgclient --restart=Never --env="PGPASSWORD=foobar" -- psql -h dbhost.local -p 5432 -U pg_admin -W postgres 

如果您嘗試再次運行上面再次連接到數據庫,但是運作的,你運行它的第一次,退出會議結束後,我們得到:

Error from server: jobs.extensions "proxy-pgclient" already exists 

強迫開發者刪除與作業:

kubectl delete job proxy-pgclient 

是因此他們可以運行命令並再次連接。

是否有任何方法在Kubernetes中啓動交互式容器(Pod)而無需創建Job或Deployment對象,並在交互式會話關閉時刪除該容器?

+0

僅供參考,我已經看到了這個問題,以及:https://github.com/kubernetes/kubernetes/issues/24533 – srkiNZ84

回答

2

沒有一個簡短的kubectl命令可以完成你想要的任務。相反,您可以使用您的容器說明創建一個yaml/json文件並運行kubectl create -f pod.yaml。您的pod可以設置爲永不重新啓動,因此它會在退出後終止。

4

將「--rm」標誌添加到原始命令導致Job(和Pod)在交互式會話完成時被刪除,這正是我之前的操作。然後,命令變爲:

kubectl run -i --tty --rm proxy-pgclient --image=private-registry.com/pgclient --restart=Never --env="PGPASSWORD=foobar" -- psql -h dbhost.local -p 5432 -U pg_admin -W postgres 
相關問題