- 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 |
댓글