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