我有这个docker映像,其中安装了许多有用的工具。我在docker内部使用它来调试内容,例如测试与其他容器的连接。现在,我想在Kubernetes中使用此图像。但是,由于它不运行进程,因此pod无法启动
Dockerfile:
FROM ubuntu:latest
RUN .... useful tools ...
和kubernetes文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: uitls
spec:
replicas: 1
selector:
matchLabels:
bar: utils-xxl
template:
metadata:
labels:
bar: utils-xxl
spec:
containers:
- name: utils
image: jeanluca/base
当我尝试应用此广告连播时,它最终会处于CrashLoopBackOff
状态。Kubernetes中有没有办法启动这个Pod?也许exec
和bash
?有什么建议?
您可以kubectl run
一次性使用Pod进行交互式调试。
kubectl run jeanluca-debug \
--generator=run-pod/v1 \
--rm -it \
--image=jeanluca/base
这基本上docker run
与具有相同选项的命令等效,只是容器名称是必需的位置参数。
该技术对于您描述的各种调试任务很有用。如果您的映像具有诸如redis-cli
,mysql
或psql
客户端之类的工具,或诸如host
或的DNS查找工具之类dig
,等等,那么弄清楚为什么您的组合系统完全损坏是很有用的。图像的默认命令可以是CMD ["/bin/bash"]
,也可以,但是,如果没有附加输入流,它将立即退出,因此您需要kubectl run
像这样运行它,而不是尝试通过Deployment使其保持活动状态。
通常,保持容器或容器运行实际上没有任何意义。当然,有一些技巧可以阻止Docker容器退出,但我建议您避免使用它们。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句