如何在Kubernetes中运行容器而不创建部署或作业?
我试图在Kubernetes中运行一个交互式Pod(容器),它不创建作业或部署,并在完成后删除自身 该容器的目的是为我们的开发人员提供一种访问数据库的简单方法,该数据库没有公共IP地址 目前,我们正在使用以下命令:如何在Kubernetes中运行容器而不创建部署或作业?,kubernetes,Kubernetes,我试图在Kubernetes中运行一个交互式Pod(容器),它不创建作业或部署,并在完成后删除自身 该容器的目的是为我们的开发人员提供一种访问数据库的简单方法,该数据库没有公共IP地址 目前,我们正在使用以下命令: kubectl run -i --tty proxy-pgclient --image=private-registry.com/pgclient --restart=Never --env="PGPASSWORD=foobar" -- psql -h dbhost.local -p
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),而不创建作业或部署对象,并在交互式会话关闭时删除该容器?没有一个简短的
kubectl
命令可以完全满足您的要求。相反,您可以使用pod描述创建一个yaml/json文件,并运行kubectl create-f pod.yaml
。您的pod可以设置为永不重新启动,因此它将在退出后终止 将“-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
仅供参考,我也看到了这个问题: