2024년 1월 24일
출처: 쿠버네티스 교과서(길벗)
# 컨테이너 하나를 담은 파드를 실행
kubectl run hello-kiamol --image=kiamol/ch02-hello-kiamol
# 파드가 준비상태가 될 때 까지 기다린다
kubectl wait --for==condition=Ready pod hello-kiamol
# 클러스터에 있는 모든 파드의 목록을 출력
kubectl get pods
# 파드의 상세정보를 확인
kubectl describe pod hello-kiamol
# 파드에 대한 기본 정보 확인
kubectl get pod hello-kiamol
# 네트워크 상세 정보중 특정한 항목을 따로 지정해서 출력
kubectl get pod hello-kiamol --output custom-columns=NAME:metadata.name,Node_IP:status.hostIP,POD_IP:status.podIP
# JSONPath로 복잡한 출력을 구성
# 파드의 첫 번쨰 컨테이너의 컨테이너 식별자만 출력
kubectl get pod hello-kiamol -o jsonpath='{.status.containerStatuses[0].containerID}'
# 파드에 대한 기본 정보 확인
kubectl get pod hello-kiamol
출력의 기본 형태는 컨테이너 개수, 파드의 상태, 재시작 횟수, 파드 생성 후 경과 시간으로 구성
# 네트워크 상세 정보중 특정한 항목을 따로 지정해서 출력
kubectl get pod hello-kiamol --output custom-columns=NAME:metadata.name,Node_IP:status.hostIP,POD_IP:status.podIP
이름과 그에 대응하는 데이터의 JSON 표현 형태로 항목을 정의해서 출력 형태를 지정할 수 있다.
# JSONPath로 복잡한 출력을 구성
# 파드의 첫 번쨰 컨테이너의 컨테이너 식별자만 출력
kubectl get pod hello-kiamol -o jsonpath='{.status.containerStatuses[0].containerID}'
JSONPath 질의 형태로 복잡한 출력을 직접 구성할 수 있다.
예제에 나온 질의는 파드에 포함된 첫 번째 컨테이너의 컨테이너 식별자를 출력하라는 의미
현재 파드에 컨테이너는 1개지만 여러 개 있어도 첫 번째만 출력한다.
모든 쿠버네티스 환경은 컨테이너 관리를 위해 동일한 CRI를 사용
그러나 컨테이너 런 타임 중에는 쿠버네티스 외부에서 컨테이너에 접근을 허용하지 않는 것도있다.
쿠버네티스의 파드로 실행된 컨테이너를 컨테이너 런타임이 어떻게 유지하는지 확인해보는데 이 예제 진행은 컨테이너 런타임이 도커여야만한다.
# 파드에 포함된 컨테이너 찾기
docker container ls -q --filter label=io.kubernetes.container.name=hello-kiamol
쿠버네티스는 컨테이너를 만들 때 파드 이름을 컨테이너 레이블에 추가한다. 이 점을 이용하여 도커에서 파드에 포함된 컨테이너를 찾아낼 수 있다.
따라서 이 명령에서 출력된 컨테이너 식별자가 나타난다.
# 해당 컨테이너 삭제하기
docker container rm -f $(docker container ls -q --filter label=io.kubernetes.container.name=hello-kiamol)
앞서 찾은 컨테이너를 삭제.
이 파드는 현재 한 개의 컨테이너가 있어야하지만, 이제는 파드에는 컨테이너가 없다.