【发布时间】:2022-01-21 01:16:16
【问题描述】:
在以下 pod yaml 中,我无法让 source 命令工作。最初我在echo starting and echo done之间插入args下的命令,现在我尝试{.lifecycle.postStart}无济于事。
apiVersion: v1
kind: Pod
metadata:
name: mubu62
labels:
app: mubu62
spec:
containers:
- name: mubu621
image: dockreg:5000/mubu6:v6
imagePullPolicy: Always
ports:
- containerPort: 5021
command: ["/bin/sh","-c"]
args:
- echo starting;
echo CONT1=\"mubu621\" >> /etc/environment;
touch /mubu621;
sed -i 's/#Port 22/Port 5021/g' /etc/ssh/sshd_config;
sleep 3650d;
echo done;
lifecycle:
postStart:
exec:
command: ["/bin/bash","-c","source /etc/environment"]
- name: mubu622
image: dockreg:5000/mubu6:v6
imagePullPolicy: Always
ports:
- containerPort: 5022
imagePullSecrets:
- name: regcred
nodeName: spring
restartPolicy: Always
Kubectl apply 不会引发错误,但 echo $CONT1 返回 nada! mubu6 是 ubuntu 修改后的镜像。
我这样做的原因是,当我在这个 pod (mubu621) 的另一个 pod 中 ssh 时,通过 env 设置的 Kubernetes 环境变量在 ssh 会话中看不到。
任何帮助将不胜感激!
【问题讨论】:
-
"/bin/bash","-c","source /etc/environment"启动会话,源 /etc/environment,然后立即消失。这就是为什么您无法访问来源变量的原因。 -
那之后我还应该添加
sleep命令吗?在args下,我最后确实有一个sleep命令,它也不起作用。 -
我现在使用
["/bin/bash","-c","source /etc/environment","sleep 3650d"],但我仍然不能echo $CONT1。
标签: bash kubernetes yaml command kubernetes-pod