如何在不运行进程的K8S上运行utils POD

珍露卡·斯卡里(Jeanluca Scaleri)

我有这个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?也许execbash有什么建议?

大卫·迷兹

您可以kubectl run一次性使用Pod进行交互式调试。

kubectl run jeanluca-debug \
  --generator=run-pod/v1 \
  --rm -it \
  --image=jeanluca/base

这基本上docker run与具有相同选项命令等效,只是容器名称是必需的位置参数。

该技术对于您描述的各种调试任务很有用。如果您的映像具有诸如redis-climysqlpsql客户端之类的工具诸如host或的DNS查找工具之类dig,等等,那么弄清楚为什么您的组合系统完全损坏是很有用的。图像的默认命令可以是CMD ["/bin/bash"],也可以,但是,如果没有附加输入流,它将立即退出,因此您需要kubectl run像这样运行它,而不是尝试通过Deployment使其保持活动状态。

通常,保持容器或容器运行实际上没有任何意义。当然,有一些技巧可以阻止Docker容器退出,但我建议您避免使用它们。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章