Volume
과 IP 주소
를 공유한다.)쿠버네티스 클러스터
안에 노드
가 있고, 노드
안에 Pod
이 있다.Pod 생성은 명령형 커맨드
또는 선언형 오브젝트 구성
으로 생성하는 방법이 존재한다.
kubectl run [pod 이름] --image [이미지 이름]
kubectl create
kubectl expose
운영환경에서는 복잡하고 다양한 설정이 필요하기 때문에, 원하는 리소스를 YAML 파일로 작성하고 변경 내용 버전을 관리하는 것이 적합하다고 한다.
version
, kind
, metadata
, spec
는 리소스를 정의할 때 반드시 필요한 요소다.
apiVersion: v1
kind: Pod
metadata:
name: [pod 이름]
labels:
app: [라벨 이름]
spec:
containers:
- name: [컨테이너 이름]
image: [이미지 이름]
kubectl apply -f [YAML 파일]
kubectl create -f [YAML 파일
kubectl get pod
: pod 조회
kubectl logs [pod 이름]
: pod 로그 확인
kubectl exec -it [pod 이름] -- sh
: pod 컨테이너 접속
kubectl delete -f [YAML 파일]
: pod 제거
kubectl edit pod [pod 이름]
: pod YAML 수정 ex) 이미지 변경
스케줄러
는 API서버
를 감시하면서 할당되지 않은 pod
이 있는지 체크스케줄러
는 할당되지 않은 pod
을 감지하고 적절한 노드
에 할당노드
에 설치된 kubelet
은 자신의 노드에 할당된 pod
이 있는지 체크kubelet
은 스케줄러
에 의해 자신에게 할당된 pod
의 정보를 확인하고 컨테이너 생성kubelet
은 자신에게 할당된 pod
의 상태를 API서버
에 전달sudo vi mongodb-pod.yml
apiVersion: v1
kind: Pod
metadata:
name: mongodb
labels:
app: mongo
spec:
containers:
- name: mongodb
image: mongo:4
kubectl apply -f mongodb-pod.yml
sudo vi mariadb-pod.yml
apiVersion: v1
kind: Pod
metadata:
name: mariadb
labels:
app: mariadb
spec:
containers:
- name: mariadb
image: mariadb:10.7
env:
- name: MYSQL_ROOT_PASSWORD
value: "1234"
kubectl apply -f mariadb-pod.yml