журналы kubectl модулей, если он содержит 2 контейнера

#kubernetes #kubectl #kubernetes-pod

#kubernetes #kubectl #kubernetes-pod

Вопрос:

У меня есть модуль, и в нем есть 2 контейнера. если я даю команду « kubectl logs pod_name «, в ней не отображаются журналы, мне нужно указать имя контейнера вместе с этой командой.

Есть ли способ отобразить оба журнала контейнера, когда мы даем команду « kubectl logs pod_name «?

Комментарии:

1. Попробуйте это kubectl logs nginx --all-containers=true

2. kubernetes.io/docs/reference/generated/kubectl/…

3. Спасибо, какой API kubernetes Rest мне нужно использовать для этого

4. kubernetes.io/docs/reference …………..или kubernetes.io/docs/reference/generated/kubernetes-api/v1.19

Ответ №1:

Для отображения журналов определенного контейнера

 kubectl logs <pod-name> -c <container_name>
  

Для отображения журналов всех контейнеров используйте приведенную ниже команду

 kubectl logs <pod-name> --all-containers=true
  

Комментарии:

1. Спасибо, какой API kubernetes Rest мне нужно использовать для этого

2. Используйте самый высокий уровень отладки -v9 , возможно, вы получите подробную информацию об API, например kubectl logs -f <pod-name> -v9

Ответ №2:

Rest API для получения журналов модуля является

 GET /api/v1/namespaces/{namespace}/pods/{name}/log
  

Вы можете передать контейнер в качестве параметра запроса в вышеуказанный API, чтобы получить журналы определенного контейнера

 GET /api/v1/namespaces/{namespace}/pods/{name}/log?container=containername
  

Когда вы нажимаете вышеуказанные API-интерфейсы из кода, используя учетную запись службы или пользователя, вам необходимо иметь ниже RBAC Role и RoleBinding

 apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: default
  name: pod-logs-reader
rules:
- apiGroups: [""]
  resources: ["pods/log"]
  verbs: ["get", "list"]
  

API задокументирован здесь