Kubernetes - смонтировать контейнер stdout логи stderr - PullRequest
0 голосов
/ 28 февраля 2019

Я использую изображение chentex / random-logger , которое записывает stdout / stderr в контейнер.Я хочу сделать развертывание yaml, которое запускает образ chentex, и помещает его логи в файл внутри общего тома.Могу ли я сделать это без изменения образа?

Это простое развертывание образа:

apiVersion: v1
kind: Deployment
metadata:
  name: random-logger
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: random-logger
    spec:
      containers:
      - name: random-logger
        image: chentex/random-logger:latest

1 Ответ

0 голосов
/ 28 февраля 2019

Рекомендуется отправить сообщение журнала на stdout для приложений, работающих в контейнере.chentex/random-logger просто следует этому подходу без какой-либо опции, чтобы сконфигурировать это, но мы можем вызвать хак, как это:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: random-logger
spec:
  selector:
    matchLabels:
      app: random-logger
  template:
    metadata:
      labels:
        app: random-logger
    spec:
      containers:
      - name: random-logger
        image: chentex/random-logger:latest
        command: ["sh", "-c",  "./entrypoint.sh &> /logfile"]

При запросе журналов из запущенного podничего не видно:

$ kubectl logs random-logger-76c6fd98d5-8d5fm

Журналы приложения записываются в logfile внутри контейнера:

$ kubectl exec random-logger-76c6fd98d5-8d5fm cat /logfile
2019-02-28T00:23:23+0000 DEBUG first loop completed.
2019-02-28T00:23:25+0000 ERROR something happened in this execution.
2019-02-28T00:23:29+0000 INFO takes the value and converts it to string.
2019-02-28T00:23:31+0000 WARN variable not in use.
2019-02-28T00:23:37+0000 INFO takes the value and converts it to string.

Хотя это возможно, в общем случае это не рекомендуется.Дополнительную информацию смотрите в документации Kubernetes о Архитектура ведения журнала .

...