공인 IP는 한정적이다. 그렇기에 하나의 공인 IP안에 사설 IP를 여러개 둔다.
사설 IP 여러개 -> 공인 IP 1개에 연결하고, 실제로는 공인 IP끼리만 통신하는 것으로 보이는 거다.
사설 IP 여러개 -> 공인 IP 1개에 연결하려면? NAT 기술, 포트포워딩이 필요하다
쿠버네티스 모든 리소스(node, pod)들은 yaml파일로 생성가능하다. 한번 만들어보자.
apiVersion: v1
kind: Pod #리소스 타입
metadata:
labels:
run: mynginx # label 정보, 뒤에 나옴
name: mynginx
spec:
containers: # 컨테이너 정의. 여기선 niginx 1개만
- image: nginx
name: mynginx
restartPolicy: Never
kubectl apply -f mynginx.yaml
: yaml파일로 pod생성
특정 리소스에 명령을 전달하거나, 정보를 확인하고 싶을 때, 라벨링 시스템 이용.
yaml파일에 labels에 저장되어있으며, 명령어로 따로 추가 가능
kubectl label pod <NAME> <KEY>=<VALUE>
kubectl label pod mynginx hello=world
: label 따로 추가하기 위한 명령어
kubectl get pod mynginx -o yaml
: 특정 pod yaml파일 조회 명령어 (label에 hello 라벨이 추가된 것을 확인)
kubectl run <NAME> --image <IMAGE>
으로 실행할때, 이때run=<NAME>
이란 label이 자동으로 추가됨
kubectl get pod mynginx -L run
: 키 run에 대한 값 표시
NAME READY STATUS RESTARTS AGE LABELS
mynginx 1/1 Running 0 22m mynginx
kubectl get pod mynginx --show-labels
: 모든 라벨 정보 표시
NAME READY STATUS RESTARTS AGE LABELS
mynginx 1/1 Running 0 23m hello=world,run=mynginx
kubectl get pod -l run
: key가 run인 Pod들 출력
kubectl get pod -l run=mynginx
: key가 run이고 value가 mynginx인 Pod 출력
실습하면서 Pod를 생성할 때, 왜 어떤 Node에 Pod를 배치할 건지 명시적으로 안알려주지? 궁금했었다.
쿠버네티스는 어떤 노드 위에서 실행할지 판단하여 스케줄링한다. 자기 알아서 하는거다!
그러나, 명시적으로 노드를 선택할 수도 있다. if) a 노드 -> ssd, b 노드 -> hdd, 특정 pod는 hdd를 쓸것이다!
kubectl get node --show-labels
: node들의 label 확인, 현재는 마스터, 워커 2개만 존재# NAME STATUS ROLES AGE VERSION LABELS # master Ready master 14d v1.18.6+k3s1 beta.kubernetes.io/... # worker Ready <none> 14d v1.18.6+k3s1 beta.kubernetes.io/...
- 특정 worker node에 pod를 위치시키고 싶다. 조건은 type이 hdd인 worker node이다.
kubectl label pod worker type=hdd
: worker에 label type=hdd를 추가한다.- pod의 yaml을 수정한다. - nodeSelector 부분 추가.
apiVersion: v1 kind: Pod metadata: name: node-selector spec: containers: - name: nginx image: nginx nodeSelector: disktype: ssd
kubectl apply -f mypod.yaml
: pod를 생성하자. 원하는 worker노드에 배정될 것이다.kubectl get pod mypod -o wide
: pod(컨테이너) 상세 조회 -> worker 노드에 배정된 걸 확인하자
if ) 같은 라벨이 2개 이상 -> 노드 상태(리소스 사용량)을 확인해, 최적으로 쿠버네티스가 선택
이외에도 훨씬 다양한 pod관련 속성이 있다. 너무 많아서 2편으로 이어서 하겠다.