※주의
이 글은 제가 혼자 공부하면서 여기저기 찾아보고 정리하는 곳이라서
글의 퀄리티나 내용상 맞지 않는 부분들이 있습니다.
공식문서가 더욱 더 큰 도움이 될 수 있습니다!
궁금점
kubectl get all 명령어를 입력했을 때 나오는 목록들의 의미를 알고싶었습니다.
행동
Pod
NAME
이 부분은 kubectl get pods / kubectl get pod 로도 얻을 수 있는 부분입니다.
둘의 차이점은 kubectl get all 명령어는 오브젝트를 구분해주기 위해 앞에 오브젝트의 이름이 붙고 그 다음에 name이 붙습니다.
kubectl get all = pod / pod의 name
kubectl get pod = pod의 name
READY
READY 필드는 파드(pod)에 몇 개의 컨테이너가 준비되어 있는지 보여주는 필드입니다.
만약 하나의 파드에 여러 개의 컨테이너가 있다면 (ex 3개 )
파드를 실행했을 때 파드에 있는 컨테이너들이 전부 준비상태가 되었는지 아닌지를 확인할 수 있습니다.
만약 3개중에 2개만 준비가 되었다면 2/3 으로 표기가 됩니다.
STATUS
STATUS 필드는 Pod들의 상태를 표기해주는 필드입니다.
Pending | 파드가 쿠버네티스 시스템에 의해서 승인되었지만, 파드를 위한 하나 또는 하나 이상의 컨테이너 이미지 생성이 아직 완료되지 않았다. 여기에는 스케줄되기 이전까지의 시간 뿐만 아니라 오래 걸릴 수 있는 네트워크를 통한 이미지 다운로드 시간도 포함된다. |
Running | 파드가 한 노드에 결합되었고, 모든 컨테이너들의 생성이 완료되었다. 적어도 하나의 컨테이너가 동작 중이거나, 시작 또는 재시작 중에 있다. |
Succeeded | 파드에 있는 모든 컨테이너들이 성공으로 종료되었고, 재시작되지 않을 것이다. |
Failed | 파드에 있는 모든 컨테이너들이 종료되었고, 적어도 하나 이상의 컨테이너가 실패로 종료되었다. 즉, 해당 컨테이너는 non-zero 상태로 빠져나왔거나(exited) 시스템에 의해서 종료(terminated)되었다. |
Unknown | 어떤 이유에 의해서 파드의 상태를 얻을 수 없다. 일반적으로 파드 호스트와의 통신 오류에 의해서 발생한다. |
STATUS 필드에 속할 수 있는 값들은 5가지입니다.
RESTARTS
RESTARTS 필드는 파드안의 컨테이너가 몇 번 재실행 되었는지 count수를 나타내는 필드입니다.
AGE
Pod의 실행중인 시간을 나타냅니다.
Service
NAME
Service 또한 pod와 마찬가지로 오브젝트 타입 / 오브젝트 명순으로 표기가 됩니다.
kubectl get service로 했을 때와 NAME이 차이가 있습니다.
TYPE
Service의 type의 이름을 보여주는 필드입니다. 총 4개의 필드값이 있습니다.
Type 값과 그 동작은 다음과 같다.
ClusterIP: 서비스를 클러스터-내부 IP에 노출시킨다. 이 값을 선택하면 클러스터 내에서만 서비스에 도달할 수 있다. 이것은 ServiceTypes의 기본 값이다.
NodePort: 고정 포트 (NodePort)로 각 노드의 IP에 서비스를 노출시킨다. NodePort 서비스가 라우팅되는 ClusterIP 서비스가 자동으로 생성된다. <NodeIP>:<NodePort>를 요청하여, 클러스터 외부에서 NodePort 서비스에 접속할 수 있다.
LoadBalancer: 클라우드 공급자의 로드 밸런서를 사용하여 서비스를 외부에 노출시킨다. 외부 로드 밸런서가 라우팅되는 NodePort와 ClusterIP 서비스가 자동으로 생성된다.
ExternalName: 값과 함께 CNAME 레코드를 리턴하여, 서비스를 externalName 필드의 콘텐츠 (예:foo.bar.example.com)에 매핑한다. 어떤 종류의 프록시도 설정되어 있지 않다.
CLUSTER-IP
서비스가 생성이 되면 쿠버네티스 마스터는 가상 IP 주소를 할당합니다.
Proxy가 새로운 서비스를 발견하면 새로운 임의의 포트를 열고, 가상 IP 주소에서 이 새로운 포트로 iptables 리다이렉션을
설정한 후, 연결을 수락하기 시작하는데 그 때의 가상 IP주소를 의미하는 필드입니다.
EXTERNAL-IP
Service의 type이 LoadBalancer일 때 서비스를 외부에 노출시키는데
그 때 서비스에 의해 노출된 외부 IP 주소 ( LoadBalancer Ingress ) 를 나타내는 필드입니다.
PORT(S)
Port필드는 말그대로 포트를 나타내는 필드입니다.
Jenkins는 클러스터IP의 8080번 포트로도 접근이 가능하지만, 모든 노드의 30001번 포트로도 서비스를 접근할 수 있다는 얘기이다.
Nexus는 클러스터IP의 8081번 포트로도 접근이 가능하지만, 모든 노드의 30002번 포트로도 서비스를 접근할 수 있다는 얘기이다.
Tomcat은 클러스터IP의 8082번 포트로도 접근이 가능하지만, 모든 노드의 30003번 포트로도 서비스를 접근할 수 있다는 얘기이다.
Mariadb는 클러스터IP의 3306번 포트도 접근이 가능하지만, 모든 노드의 30004번 포트로도 서비스를 접근할 수 있다는 얘기이다.
Deployment
NAME
Deployment 역시 앞에 이름이 차이가 납니다.
deployment.apps 라는 것은 deployment의 apiVersion을 나타낸 것인데요
apiVersion에 대해서 알고싶으시다면 참고해주세요!
READY
사용자가 사용할 수 있는 애플리케이션의 레플리카의 수를 표시합니다. ready/desired 패턴을 따릅니다.
만약 replica가 2이고, 두 개의 복제된 파드중 하나만 준비가 됐다면 1/2 로 표시가 될 것입니다.
UP-TO-DATE
의도한 상태를 얻기 위해 업데이트된 레플리카의 수를 표시합니다.
우리가 의도한 레플리카는 jenkins / mariadb / nexus / tomcat 각각 5,3,3,3개 이므로 위와 같이 표기됩니다.
AVAILABLE
사용자가 사용할 수 있는 애플리케이션 레플리카의 수를 표시합니다.
AGE
ReplicaSet
Name
역시 앞에 오브젝트명이 더 붙는 것을 알 수 있습니다.
apiVersion에 대해서 알고싶으시다면 참고해주세요!
DESIRED
디플로이먼트의 생성 시 정의된 의도한 애플리케이션 레플리카 의 수를 표시합니다. 이것이 의도한 상태입니다.
CURRENT
현재 실행 중인 레플리카의 수를 표시합니다.
READY
사용자가 사용할 수 있는 애플리케이션의 레플리카의 수를 표시합니다.
AGE
애플리케이션의 실행된 시간을 표시합니다.
참고
https://kubernetes.io/ko/docs/concepts/workloads/pods/pod-lifecycle/
'Kubernetes & Docker > 궁금한 것' 카테고리의 다른 글
쿠버네티스 레플리카셋(replicaset)의 실패 복구(failover)와 proxy에 대해서 (0) | 2020.07.17 |
---|---|
쿠버네티스 스케줄러 : 노드(node)에 파드(pod)의 배치 방법 (2) | 2020.07.17 |
쿠버네티스 YAML 파일 작성 시 실행 순서에 대해서 (0) | 2020.07.17 |
쿠버네티스 apiVersion에 대해서 (0) | 2020.07.17 |
쿠버네티스 볼륨(volume)에 대해서 (0) | 2020.07.17 |