Deployment 带args的kubernetes部署

Deployment 带args的kubernetes部署,deployment,kubernetes,dockerfile,Deployment,Kubernetes,Dockerfile,我一补充, spec: containers: - args: - /bin/sh - '-c' - touch /tmp/healthy; touch /tmp/liveness env: 对于部署文件,应用程序不会在描述日志中出现任何错误。部署成功,但没有输出。正在容器中创建这两个文件。我可以在kubernetes部署中运行docker build吗 下面是yaml的完整部署 apiVers

我一补充,

spec:
    containers:
      - args:
          - /bin/sh
          - '-c'
          - touch /tmp/healthy; touch /tmp/liveness
        env:
对于部署文件,应用程序不会在描述日志中出现任何错误。部署成功,但没有输出。正在容器中创建这两个文件。我可以在kubernetes部署中运行docker build吗

下面是yaml的完整部署

  apiVersion: apps/v1
  kind: Deployment
  metadata:
    labels:
      app: web
    name: web
    namespace: default
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: web
        version: prod
    template:
      metadata:
        annotations:
          prometheus.io/scrape: 'true'
        labels:
          app: web
          version: prod
      spec:
        containers:
          - args:
              - /bin/sh
              - '-c'
              - >-
                touch /tmp/healthy; touch /tmp/liveness; while true; do echo .;
                sleep 1; done
            env:
              - name: SUCCESS_RATE
                valueFrom:
                  configMapKeyRef:
                    key: SUCCESS_RATE
                    name: web-config-prod
            image: busybox
            livenessProbe:
              exec:
                command:
                  - cat
                  - /tmp/liveness
              initialDelaySeconds: 5
            name: web
            ports:
              - containerPort: 8080
              - containerPort: 8000

在您的案例中,问题是在完成任务后未找到容器。您告诉我要对Conataner执行一个shell脚本。完成后,容器就完成了。这就是为什么您无法查看文件是否已创建。而且它没有放任何日志。因此,您需要在创建文件后保持容器的活动状态。您可以通过放置一个无限while循环来实现这一点。来了:

apiVersion: apps/v1
kind: Deployment
metadata:
name: hello
labels:
    app: hi
spec:
replicas: 1
selector:
    matchLabels:
    app: hi
template:
    metadata:
    labels:
        app: hi
    spec:
    containers:
    - name: hi
        image: busybox
        args:
        - /bin/sh
        - "-c"
        - "touch /tmp/healthy; touch /tmp/liveness; while true; do echo .; sleep 1; done"
        ports:
        - containerPort: 80
将其保存到hello-deployment.yaml并运行

$ kubectl create -f hello-deployment.yaml
$ pod_name=$(kubectl get pods -l app=hi -o jsonpath='{.items[0].metadata.name}')
$ kubectl logs -f $pod_name
$ kubectl exec -it -f $pod_name -- ls /tmp

首先明确你想要什么?我想要一个有效的kubernetes部署示例,带有-args:你的容器映像是什么?如果不看到容器映像,很难知道,但这通常只是启动,触摸两个文件,然后立即退出。我已经提供了答案。检查一下