실행 중인 Pod를 디버깅하기 위해 kubectl debug 조사
3375 단어 kubernetesekscontainer
kubernetes 클러스터에서 실행되는 Pod의 디버깅 방법으로서
kubectl exec
방법이 있습니다.그러나 이 명령은 디버깅 대상인Pod의 용기에서 실행되며
kubectl exec
에 용기를 디버깅하는 환경이 없으면 디버깅이 어려워집니다.kubernetes에서 이러한 문제를 피하기 위해 지령
kubectl debug pod
이 하나 있습니다.kubectl exec와의 차이점
우선
kubetl exec
와kubectl debug pod
의 차이점을 간단히 설명하고 싶습니다.kubectl exec의 구조
간단히 말해 Pod 내 컨테이너에서 명령을 실행하는 동작입니다.
컨테이너 내에서 사용할 수 있는 명령만 사용할 수 있습니다.
예를 들어, 이미지에 실행 중인 컨테이너
nginx:latest
가 있는 Pod를 가정합니다.이 용기는nginx와 관련된 명령(예를 들어
nginx -V
을 사용할 수 있지만 ps
등 명령을 설치하지 않으면 사용할 수 없습니다.따라서 디버깅할 때
ps
명령어를 사용해도 볼 수 없다.$ kubectl exec -n test-nginx -it test-nginx-b-78fbdc67f4-74c8v -- ps -aux
OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "ps": executable file not found in $PATH: unknown
command terminated with exit code 126
용기 안에서 사용할 수 있는 명령이라면 확인할 수 있다.$ kubectl exec -n test-nginx -it test-nginx-b-78fbdc67f4-74c8v -- date
Sun Feb 27 17:30:17 UTC 2022
kubectl debug pod의 구조그럼
kubectl exec
무엇을 하려면, 임시로 사용하는 용기, 즉 명령을 추가하는 것이다.우선, 운행 중 컨테이너 하나가 운행하고 있다고 가정한다.
이 컨테이너의 목적은 응용 프로그램을 이동하는 것이기 때문에 응용 프로그램 동작과 무관한 명령이 설치되지 않았습니다.
그래서 사용하고 싶어요
kubectl debug pod
!시 용기 안의 케이스에 들어가서 top
등 top 명령을 설치해야 한다보안상의 관점에서 외부와 통신할 수 없는 Pod가 설정한 메커니즘 등을 고려하면 외부에서 명령을 설치할 수 없을 수도 있다.
이러한 문제를 해결하기 위해
apt
에 효과 용기를 만듭니다.따라서 특정 Pod에 컨테이너가 추가됩니다.
이렇게 하면 다음과 같은 기쁜 점이 있다.
kubectl debug pod 사용 방법
아직 공식적인 기능이 아니기 때문에 실제 클러스터에서 사용할 때는 별도의 조작이 필요하므로 잊지 마세요.
kubernetes의 공식 문서를 인용합니다. 이렇게 사용하십시오.
$ kubectl debug -it ephemeral-demo --image=busybox --target=ephemeral-demo
If you don't see a command prompt, try pressing enter.
/ #
이렇게 하면podkubectl debug pod
에서 가동ephemeral-demo
된 컨테이너를 셸으로 호출할 수 있다.busybox
를 지정하여 효과 컨테이너의 이름을 지정할 수 있습니다.지정
--container [コンテナ名]
을 통해 공유 프로세스 이름 공간의 용기를 지정할 수 있습니다.--target [コンテナ名]
는 전자 오르간 용기를 만들고 조개를 집행하기 때문에 동작의 일부와kubectl debug pod
가 똑같다는 것을 알아차릴 수 있을 것 같다.총결산
알아봤어요
kubectl exec
.이 명령은 실행기 용기라고 불리는 임시 용기를 생성합니다
kubectl debug pod
와 kubectl debug pod
의 차이는 명령을 호출하는 장소가 다르다는 것이다.kubectl exec
모든 Pod의 컨테이너에서 명령↓kubectl exec
역서 디렉터리 용기를 만들고 만든 용기를 사용하여 명령을 실행하도록 설정되었습니다.최근에는 컨테이너 안전 대책으로 셸이 실행되지 못했고, 이와 같은 지금까지의 디버깅이 불가능한 대책도 있다
이런 디버깅 방법을 기억하면 안심하고 대처할 수 있다.
Reference
이 문제에 관하여(실행 중인 Pod를 디버깅하기 위해 kubectl debug 조사), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mend/items/202b931f0319e792437b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)