파드란?
1개 이상의 컨테이너를 포함하고 고, 배포하고 운영되는 단위 그리고 1파드는 1개의 노드(워커노드)에 속한다. 여러 프로세스를 프로세스 별로 컨테이너에 담은다음 그 컨테이너들을 함께 묶을 상위 단위가 필요하여 파드를 만든다.
파드는 동일한 네트워크 네임스페이스에서 실행되어 동이랗ㄴ ip 주소 와 포트 공간을 공유한다.
그리고 될수 있으면 꼭 필요한 애들끼리만 묶어서 한 파드에 넣어야 한다.
프론트엔드는 프론트엔드 파드에 -> 그래야 개별 확장이 가능하다.
파드를 정의할땐 yaml파일로 하는게 편하다.
meatdata, Spec,status이렇게 세가지 파트로 구분된다.
apiVersion : v1 #api버전
kind: Pod #오브젝트 종류가 pod
metatdata:
name: kubia-maual # 파드 이름
spec:
containers:
-image: minmin0902/kubia # 컨테이너를 만드는 컨테이너 이미지
name: kubia
ports:
-containerPort: 8080 #에플리케이션이 수신하는 포트
protocol: TCP
만드는 방법
kubectl create -f kubia-manual.yaml
실행중인 파드의 ㅓㄴ체 정의
kubectl get po kubia-manual -o yaml(or json)
파드목록 확인
kubectl get pods
컨테이너는 런타임 과 관련된 로그를 stream을 파일로 전달
docker logs 컨테이너 id를 통해서 확인
파드로그(컨테이너 로그) 눈
kubectl log 컨테이너 이름
만약 여러 컨테이너를 포함한 파드인경우는
kubectl logs 파드 이름 -c 컨테이너 이름
-> 이는 현존하는 파드 컨테이너 로그만 갖고 ㅇㄹ 수 있다.
여기서 확인하는 방법(파드의 실제동작을 확인하고 싶지만 서비스는 만들지 않고 하는 방법은)은 포트 포워딩
kubectl port-forword 파드 이름 로컬포트 : 파드의 포트(컨테이너 설정한 포트)
kubectl port-forword kubia-manual 8888:8080
이는 curl localhost:8888이렇게 접근이 간으한다.
그리고 파드가 증가하니까 부분 집합이 필요해지는데 이걸 레이블로 구분한다.
규칙으론 app은 파드가 속한 애플리케이션이고
rel: 파드에서 실행중인 애플맄이션이 안정인지 베타 혹은 카나리 릴리즈인ㄷ지 확인한다.
그리고 이는
kind: Pod
metatdata:
name: kubia-maual
labels: # 레이블 2개를 파드에 붙였다
creation_method: manual
env: prod
spec:
containers:
-image: minmin0902/kubia
name: kubia
ports:
-containerPort: 8080
protocol: TCP
그리고 레이블은
kubectl get po --show-labels
이렇게 레이블을 확인 할 수 있다.
kubectl get po -L creation_method, env
각 레이블을 -L 스위치로 지정해서 레이블을 자체열에 표시할 수 있따.
레이블을 추가하는 방법은
kubectl label po 파드 이름 추가할 레이블(ex) (creation_method =manual)
변경한느 방법은
kubectl label po 파드 이름 변경할 레이블 --overwrite
레이블 셀렉터를 통해서 분류를 할 수 있다.