У меня есть требование извлечь журнал приложения, который находится в каталоге / var / etc / logs.Как мне извлечь это из стручков K8?
Пробовал kubectl exec, но не помогло.
Самый простой и простой способ получить журнал приложений из вашего модуля - это использовать kubectl cp
kubectl cp <pod-name>:/var/etc/logs logs
Это позволит скопировать журналы модуля на ваш локальный компьютер.
Однако ..
Это, вероятно, не хорошее долгосрочное решение.Я бы порекомендовал:
kubectl logs
Более подробную информацию можно найти здесь
Помимо опции Fluentd sidecar, описанной в других ответах, вы также можете добавить простую tail -n+1 -f /var/etc/logs sidecar для вывода ваших логов на стандартный вывод:
Fluentd
tail -n+1 -f /var/etc/logs
apiVersion: v1 kind: Pod metadata: name: mypod spec: containers: - name: container image: yourimage volumeMounts: - name: varlog mountPath: /var/log - name: logs image: busybox args: [/bin/sh, -c, 'tail -n+1 -f /var/etc/logs'] volumeMounts: - name: varlog mountPath: /var/log volumes: - name: varlog emptyDir: {}
Вам может понадобиться сборщик журналов, такой как fluentd.
Сам k8s не сохранит журнал для вас.
Если вы используете GKE, может подойти стекдрайвер (слышал, никогда не пробовал)).