如何在Kubernetes中运行一个容器而不创建Deployment或Job?

5
我将为您翻译关于IT技术的内容。以下是需要翻译的文本:

我正在尝试在Kubernetes中运行一个交互式Pod(容器),它不会创建Job或Deployment,并在完成后删除自身。

该容器的目的是为我们的开发人员提供一种轻松的方式来访问我们的数据库,因为该数据库没有公共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

在运行命令并重新连接之前,必须启动一个交互式容器(Pod)。

是否有一种方法在Kubernetes中启动交互式容器(Pod),而无需创建Job或Deployment对象,并在关闭交互式会话时删除该容器?


我已经看到这个问题了:https://github.com/kubernetes/kubernetes/issues/24533 - srkiNZ84
2个回答

6
将“--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

没有一个简短的kubectl命令可以完全满足您的需求。相反,您可以创建一个包含Pod描述的yaml/json文件,然后运行kubectl create -f pod.yaml。您的Pod可以设置为永不重启,因此一旦退出就会终止。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接