본문 바로가기
Containers/Kubernetes

Pod

by shinebee* 2020. 7. 23.

  • pod는 kubernetes의 기본 구성 요소이다.
  • kubernetes cluster 내에서 애플리케이션을 배포하며 동작하는 프로세스이다.
  • kubernetes의 object 모델 중에서 만들고 배포할 수 있는 가장 작은 단위이다.
  • 하나 이상의 컨테이너가 들어갈 수 있다.  ->  각각 다른 기능으로 동작해야한다.
  • pod의 컨테이너는 같은 노드에서만 동작한다.
  • 하나의 pod에 하나의 container가 생성되는게 일반적.
  • IP는 pod에만 할당된다.
  • 컨테이너들은 volume을 공유할 수 있다.
  • 같은 pod의 컨테이너는 네트워크를 공유하고 볼륨도 공유할 수 있다.

 

 

1. pod 정의

  • pod를 생성할 수 있는 YAML 파일을 작성해보자
# myapp-pod.yml
apiVersion: v1
kind: Pod
metadata:
  name: mynapp-pod
spec:
  containers:
  - image: httpd
    name: mynapp
    ports:
    - containerPort: 80
      protocol: TCP
  • pod 리소스의 주요 필드
    • .spec.containers : 컨테이너 정의
    • .spec.containers.image : 컨테이너에 사용할 이미지
    • .spec.containers.name : 컨테이너 이름
    • .spec.containers.ports : 노출할 포트 정의
    • .spec.containers.ports.containerPort : 노출할 컨테이너 포트번호
    • .spec.containers.ports.protocol : 노출할 컨테이너 포트의 프로토콜 ( 기본 : TCP )

 

  • API 버전은 v1이고, 생성할 object 종류는 pod이다.
  • pod object의 이름은 mynapp-pod이고, 하나의 컨테이너를 가지고 있다.
  • 컨테이너 이름은 mynapp
  • 사용할 이미지는 httpd이다.
  • Node.js 애플리케이션의 응답 대기 포트는 TCP 80이다.

 

※ 참고.

API 리소스의 지원되는 필드의 목록은 kubectl explain 명령으로 확인한다.

kubectl explain pod 
kubectl explain pod.metadata
kubectl explain pod.spec
	containers	<[]Object> -required-
	     List of containers....
// required -> 필수!
// List of 어쩌구... containers안의 내용은 list로 작성되어야 한다.
kubectl explain pod.spec.containers //이름, 이미지, 포트

 

 

2. pod 생성

  • kubectl create 명령을 사용하여 YAML 파일이나 JSON 파일을 지정한다.
kubectl create -f mynapp-pod.yml

 

 

3. pod 목록 확인

 

  • READY  ->  pod 한개 중에 한개가 실행 중
  • RESTARTS  ->  재시도 한 횟수.

 

 

4. 실행 중인 pod 정의 확인

  • - o yaml 명령을 이용하여 pod의 정보를 자세히 확인할 수 있다.
kubectl get pods mynapp-pod -o yaml

 

  • IP : 내부 IP 이기 때문에 접근할 수 없다.
  • 통신이 되는지 확인하기 위해 같은 대역의 테스트용 pod를 만들어 접근해본다.
kubectl run -it os --rm --image=centos  //rm 옵션이 들어가면 나감과 동시에 삭제된다.
curl 10.233.90.4:8080

 

 

5. pod의 자세한 정보 확인

kubectl describe pods mynapp-pod

 

 

6. pod의 로그 확인

kubectl logs mynapp-pod
  • 컨테이너에 동작하는 애플리케이션의 표준 출력 및 표준 오류를 확인할 수 있다.
  • 다중 컨테이너를 가지고 있는 pod의 경우 -c 옵션을 사용하여 컨테이너를 지정해 특정 컨테이너의 로그를 확인할 수 있다.

 

 

7. pod 포트 포워딩

kubectl port-forward mynapp-pod 80:80
  • pod의 애플리케이션이 제대로 동작하는지 확인하기 위해서는 앞서 살펴보았듯이 서비스를 생성해야 하지만, 서비스를 생성하지않고 간단하게 디버깅 목적으로 포트 포워딩을 구성하여 테스트 할 수 있다.
  • port-forward : 포그라운드 상태에서 동작하기 때문에, 확인 시 별도의 터미널에서 확인을 하고, 더이상 필요하지 않은 경우 ctrl+c로 중지한다.

 

  • curl 명령어로 포워딩된 포트를 이용해 웹 애플리케이션 확인
curl http://localhost:80

'Containers > Kubernetes' 카테고리의 다른 글

3.4. namespace  (0) 2020.07.24
3.2. Label 및 Selector  (0) 2020.07.23
명령형 명령어  (0) 2020.07.23
Object 관리  (0) 2020.07.22
YAML  (0) 2020.07.22

댓글