【发布时间】:2023-04-04 15:29:01
【问题描述】:
我需要让我的 Linux 容器运行(其中没有任何应用程序或服务),以便在我真正手动从容器外壳(这纯粹是为了一些调试目的,所以我不希望对我的图像本身进行任何修改,请不要建议作为选项)
我已经定义了我的 Kubernetes YAML 文件,希望我能够执行简单的 command: ["/bin/bash"] 但这不起作用,因为它将执行命令并退出容器。那么我怎样才能让它不退出所以我可以exec容器呢?
apiVersion: apps/v1
kind: Deployment
metadata:
name: frontarena-ads-deployment2
labels:
app: frontarena-ads-deployment2
spec:
replicas: 1
template:
metadata:
name: frontarena-ads-aks-test2
labels:
app: frontarena-ads-aks-test2
spec:
nodeSelector:
"beta.kubernetes.io/os": linux
restartPolicy: Always
containers:
- name: frontarena-ads-aks-test2
image: test.dev/ads:test2
imagePullPolicy: Always
env:
- name: DB_TYPE
value: "odbc"
- name: LANG
value: "en_US.utf8"
command: ["/bin/bash"]
imagePullSecrets:
- name: fa-repo-secret
selector:
matchLabels:
app: frontarena-ads-aks-test2
当我想查看部署后发生的情况时,我会注意到:
NAME READY STATUS RESTARTS AGE
frontarena-ads-deployment2-546fc4b75-zmmrs 0/1 CrashLoopBackOff 19 77m
kubectl logs $POD 不返回任何内容
kubectl describe pod $POD 的输出是:
Command:
/bin/bash
State: Waiting
Reason: CrashLoopBackOff
Last State: Terminated
Reason: Completed
Exit Code: 0
Started: Wed, 07 Apr 2021 11:40:31 +0000
Finished: Wed, 07 Apr 2021 11:40:31 +0000
【问题讨论】:
-
您是否看过
Init-containers的概念,这些概念对于在启动主容器之前进行设置这些任务很有用? -
我会在本地系统上尝试
docker run --rm -it test.dev/ads:test2 bash,而不是尝试在远程环境中调试映像构建。 -
@DavidMaze 感谢大卫,但由于安全性原因,本地系统没有配置到数据库的所有网络连接,因为它在 Azure 中,所以你提到的这种特殊情况不适用,但无论如何谢谢跨度>
标签: docker kubernetes docker-compose dockerfile containers