Развертывание Кубернетес с аргументами - PullRequest
0 голосов
/ 25 ноября 2018

Как только я добавляю

spec:
    containers:
      - args:
          - /bin/sh
          - '-c'
          - touch /tmp/healthy; touch /tmp/liveness
        env:

в файл развертывания, приложение не появляется без каких-либо ошибок в журналах описания.Развертывание выполнено успешно, но нет вывода.Оба файла создаются в контейнере.Могу ли я запустить сборку Docker в развертывании kubernetes?

Ниже приведен полный справочник по развертыванию.

  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

1 Ответ

0 голосов
/ 25 ноября 2018

Проблема была в вашем случае container is not found после завершения задачи.Вы сказали выполнить скрипт оболочки для вашего conatainer.И после этого контейнер закончен.Вот почему вы не можете видеть, были ли созданы файлы или нет.Также он не ставил никаких журналов.Таким образом, вы должны сохранить контейнер после создания файлов.Вы можете сделать это, поместив бесконечный цикл 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-deploy.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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...