我尝试使用命令创建PODkubectl run --generator=run-pod/v1 mypod--image=myimage:1 -it bash
,并且在成功创建pod之后,它在侧容器中提示bash命令。
使用YML文件是否可以实现上述命令?我在YML下面尝试过,但在成功创建POD后,它并没有直接进入bash。我不得不手动编写命令kubectl exec -it POD_NAME bash
。但要避免使用exec命令来抨击我的容器。我希望我的YML在创建POD后将我带到我的容器。有什么办法可以做到这一点吗?
apiVersion: v1
kind: Pod
metadata:
name: mypod
namespace: mynamespcae
labels:
app: mypod
spec:
containers:
- args:
- bash
name: mypod
image: myimage:1
stdin: true
stdinOnce: true
tty: true
这是一个社区wiki答案。请随意扩展。
正如David已经提到的,在只使用YAML语法创建Pod之后,不可能直接进入bash。您必须使用适当的kubectl
命令(如kubectl exec
(才能将Shell获取到正在运行的容器。
您想要拥有不会退出pod的键。这是一个给你的例子。
apiVersion: v1
kind: Pod
metadata:
name: mypod
namespace: mynamespcae
labels:
app: mypod
spec:
containers:
- command:
- bash
- -c
- yes > /dev/null
name: mypod
image: myimage:1
命令yes
将继续输出字符串yes
,直到它被终止。> /dev/null
部分将确保您不会有大量的垃圾日志。然后你可以用这些命令访问你的吊舱。
kubectl apply -f my-pod.yaml
kubectl exec -it mypod bash
记得在完成所有操作后取下吊舱。