kubernetes pod 在安装之前使用 configmap
kubernets pod using configmap before it's mounted
我的代码连同所有日志都在下面。简而言之,我的 init pod 似乎在将其安装到 init pod 之前尝试 运行 我的 setup.sh 文件,该文件位于 configmap 中。有没有人对可能出现的问题有任何指导?
部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: two-containers
labels:
app: stockai
spec:
selector:
matchLabels:
app: stockai
template:
metadata:
labels:
app: stockai
spec:
volumes:
- name: shared-data
emptyDir: {}
initContainers:
- name: init-myservice
image: alpine
command:
- "sh -c 'sleep 60; /app/setup.sh'"
volumeMounts:
- name: shared-data
mountPath: /pod-data
配置图
apiVersion: v1
kind: ConfigMap
metadata:
annotations:
name: stock-ai-init-config
name: stock-ai-init-config
namespace: trading
data:
setup.sh: |
apk update
apk upgrade
apk add git
git clone git@github.com:****/****/****
广告连播预设
apiVersion: settings.k8s.io/v1alpha1
kind: PodPreset
metadata:
name: stock-ai-init
spec:
selector:
matchLabels:
app: stockai
volumeMounts:
- name: setup
mountPath: "/app/setup.sh"
subPath: "setup.sh"
volumes:
- name: setup
configMap:
name: stock-ai-init-config
defaultMode: 0777
kubctl 日志
$ kubectl describe po two-containers-6d5f4b4d85-blxqj
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 5m22s default-scheduler Successfully assigned trading/two-containers-6d5f4b4d85-blxqj to minikube
Normal Created 4m32s (x4 over 5m19s) kubelet, minikube Created container init-myservice
Warning Failed 4m32s (x4 over 5m19s) kubelet, minikube Error: failed to start container "init-myservice": Error response from daemon: OCI runtime create failed: container_linux.go:344: starting container process caused "exec: \"sh -c 'sleep 60; /app/setup.sh'\": stat sh -c 'sleep 60; /app/setup.sh': no such file or directory": unknown
Normal Pulling 3m41s (x5 over 5m21s) kubelet, minikube Pulling image "alpine"
Normal Pulled 3m40s (x5 over 5m19s) kubelet, minikube Successfully pulled image "alpine"
Warning BackOff 10s (x23 over 5m1s) kubelet, minikube Back-off restarting failed container
command:
不像 docker run
那样工作,它是 Dockerfile 中 CMD ["", ""]
的 kubernetes 等价物,并被提供给 exec , 而不是 sh;因此你想要的是:
command:
- sh
- -c
- 'sleep 60; /app/setup.sh'
我的代码连同所有日志都在下面。简而言之,我的 init pod 似乎在将其安装到 init pod 之前尝试 运行 我的 setup.sh 文件,该文件位于 configmap 中。有没有人对可能出现的问题有任何指导?
部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: two-containers
labels:
app: stockai
spec:
selector:
matchLabels:
app: stockai
template:
metadata:
labels:
app: stockai
spec:
volumes:
- name: shared-data
emptyDir: {}
initContainers:
- name: init-myservice
image: alpine
command:
- "sh -c 'sleep 60; /app/setup.sh'"
volumeMounts:
- name: shared-data
mountPath: /pod-data
配置图
apiVersion: v1
kind: ConfigMap
metadata:
annotations:
name: stock-ai-init-config
name: stock-ai-init-config
namespace: trading
data:
setup.sh: |
apk update
apk upgrade
apk add git
git clone git@github.com:****/****/****
广告连播预设
apiVersion: settings.k8s.io/v1alpha1
kind: PodPreset
metadata:
name: stock-ai-init
spec:
selector:
matchLabels:
app: stockai
volumeMounts:
- name: setup
mountPath: "/app/setup.sh"
subPath: "setup.sh"
volumes:
- name: setup
configMap:
name: stock-ai-init-config
defaultMode: 0777
kubctl 日志
$ kubectl describe po two-containers-6d5f4b4d85-blxqj
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 5m22s default-scheduler Successfully assigned trading/two-containers-6d5f4b4d85-blxqj to minikube
Normal Created 4m32s (x4 over 5m19s) kubelet, minikube Created container init-myservice
Warning Failed 4m32s (x4 over 5m19s) kubelet, minikube Error: failed to start container "init-myservice": Error response from daemon: OCI runtime create failed: container_linux.go:344: starting container process caused "exec: \"sh -c 'sleep 60; /app/setup.sh'\": stat sh -c 'sleep 60; /app/setup.sh': no such file or directory": unknown
Normal Pulling 3m41s (x5 over 5m21s) kubelet, minikube Pulling image "alpine"
Normal Pulled 3m40s (x5 over 5m19s) kubelet, minikube Successfully pulled image "alpine"
Warning BackOff 10s (x23 over 5m1s) kubelet, minikube Back-off restarting failed container
command:
不像 docker run
那样工作,它是 Dockerfile 中 CMD ["", ""]
的 kubernetes 等价物,并被提供给 exec , 而不是 sh;因此你想要的是:
command:
- sh
- -c
- 'sleep 60; /app/setup.sh'