반응형
실행 중인 kubernetes 포드의 로그를 표시하는 단일 명령
특정 포드에서 로그 스트리밍을 계속하려면 단일 명령을 사용해야 합니다. 현재 나는 해야 한다
- (실행 중인 모든 포드를 나열합니다.)
- 목록에서 실행 중인 포드를 확인하고 포드 이름을 복사합니다
- (팟에서 로그를 동시에 스트리밍)
보너스 포인트: 다음과 같은 특정 단어로 시작하는 포드를 나열합니다. 자산으로 시작하는 이름의 포드를 표시합니다
당신은 모든 결과를 얻을 수 있고 나머지 일을 할 수 있다.
[root@k8s-m1 ~]# kubectl get pods | grep httpd*-app
httpd-app-66cb7d499b-4nfl4 1/1 Running 0 6m39s
httpd-app-66cb7d499b-c2blq 1/1 Running 0 6m39s
httpd-app-66cb7d499b-dt4tr 1/1 Running 0 6m39s
당신은 그것을 얻기 위해 몇 가지 bash 트릭을 사용할 수 있다:
예:
kube-system 네임스페이스에서 이름 패턴으로 시작하는 포드의 로그를 가져옵니다.
kubectl logs --namespace=kube-system $(kubectl get pods --namespace=kube-system -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}' | grep core)
또는 단순:
kubectl logs --namespace=kube-system $(kubectl get pods -o=name --all-namespaces | grep core)
그러나 프로덕션에서는 fluentbit를 사용하여 로그를 ELK로 스트리밍한 다음 키바나 UI의 필터를 사용하여 각 포드/배포/이름 공간 등에 대한 로그를 가져와야 합니다.
https://github.com/fluent/fluent-bit-kubernetes-logging
마침내 해결책을 알아낼 수 있었다. 이것은 다소 까다로울 것이지만, 나는 기본적으로 깃발이 있는 이름을 사용하고 얻을 것이다. 나의 마지막 명령은 다음과 같다
kubectl logs -f $(kubectl get pods --field-selector=status.phase=Running -o=name | awk '/asset/ {print $1;exit}')
링크:
를 사용하여 이 작업을 수행할 수 있습니다. 다음을 사용할 수 있습니다:
kubectl logs -n <namespace> $(kubectl get pod -n <namespace> | awk '/<pattern>/{print $1}') -f
여기서 필드에 regex를 지정할 수 있습니다. 는 일치하는 개체의 첫 번째 열만 인쇄합니다. 우리의 경우, 그것은 포드 이름이다.
예:
kubectl logs -n kube-system $(kubectl get pod -n kube-system | awk '/kube-proxy*/{print $1}') -f
"실행 중인 쿠버네티스 포드의 로그를 표시하는 단일 명령"을 위해 한 라이너 아래로 실행하면 됩니다
kubectl get pods -n default|grep Running|awk '{print $1}'|while read pods;do echo "Pod name is $pods" ;kubectl logs $pods;echo;done
반응형
'개발하자' 카테고리의 다른 글
| 쿠버네티스 배포에서 동적/가변 이미지 태그를 사용하는 방법? (0) | 2023.08.11 |
|---|---|
| Terraform - 하나를 제외한 모든 리소스 (0) | 2023.08.11 |
| 민큐브를 사용할 때 쿠버네티스 API에 액세스하는 방법은 무엇인가요? (0) | 2023.08.10 |
| Fastapi의 요금 제한 (0) | 2023.08.09 |
| 플러터 생성 명령이 실패했습니다. 오류가 발생했습니다 (1) | 2023.08.09 |