#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 задокументирован здесь