我正在尝试在Kubernetes中运行一个交互式Pod(容器),它不会创建作业或部署,并在完成后自行删除。
容器的目的是为我们的开发人员提供一种访问我们数据库的简便方法,该数据库没有公共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 :(得分:4)
将“--rm”标志添加到原始命令会导致在交互式会话完成时删除作业(和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
答案 1 :(得分:2)
没有一个简短的kubectl
命令可以完全按照您的意愿执行。相反,您可以使用pod描述创建yaml / json文件并运行kubectl create -f pod.yaml
。您的pod可以设置为永不重启,因此一旦退出就会终止。