지금까지 미루고 미루었던 쿠버네티스 공부를 시작해보고자 한다.
컨테이너 런타임이 동작하는 여러 대의 서버가 모여 쿠버네티스 같은 하나의 논리적 단위를 구성한 것.
클러스터 관리자는 노드라고 하는 각각의 서버를 관리한다.
YAML 파일에 애플리케이션을 기술하고 쿠버네티스 API에 전달하면, 쿠버네티스가 구성을 이해하고 클러스터의 현재 상태와 비교한다. 현재 상태와 차이가 있으면 컨테이너를 추가 또는 제거한다.
컨테이너는 여러 노드에 흩어져 있으며, 쿠버네티스가 관리하는 가상 네트워크로 서로 통신할 수 있다.
클러스터에는 분산 데이터베이스도 들어가 있다.
파드는 한 벌의 애플리케이션으로, 노드에서 실행된다.
파드 안에는 컨테이너가 있다.
쿠버네티스에서 부여한 IP를 가진 가상 환경.
파드를 관리한다.
다른 리소스를 관리하는 쿠버네티스 리소스
시스템의 현재 상태를 감시하다가 바람직한 상태와 차이가 생기면 차이를 바로잡는다.
#클러스터에 있는 모든 파드의 목록을 출력한다.
$kubectl get pods
#deployment 목록 확인
$kubectl get deploy
#컨테이너 하나를 담은 파드를 실행한다.
$kubectl run {이름} --image={도커 이미지}
#deployment를 사용해 이미지를 이용하여 컨테이너 실행
$kubectl create deployment {이름} --image={이미지 이름}
#모든 파드의 이름과 레이블을 확인하는 명령어
$kubectl get pods -o custom-columns=NAME:metadata.name,LABELS:metadata.labels
#파드의 app 레이블 수정
$kubectl label pods -l app={app 값} --overwrite app={바꿀 값}
하지만 deployment는 label이 달라진 파드를 인지하지 못하므로, 파드를 하나 더 생성한다.
label을 다시 원래 값으로 변경하여 deployment의 관리 하에 두도록 할 수 있지만, deployment는 파드의 수가 두 개가 된 것을 깨닫고 하나를 지운다.
#pod 내부와 연결할 대화형 셸 생성
$kubectl exec -it {파드 이름} sh
이 방법은 명령어를 통해 명령하는 방법과 다르게 최종 결과를 알려 주고, 최종 결과를 만드는 방법은 따지지 않는다.
#실행 명령어
$kubectl apply -f pod.yaml
메니페스트 파일이 로컬에 있지 않아도, URL을 통해 배포할 수 있다.