Udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의의 22. Pods with YAML 챕터를 공부한 내용으로 강의 내용과 다를 수 있습니다. 정확한 내용은 강의를 들으시는 것을 추천드립니다.
1. YAML 파일로 pod 만들기
이번 강의에서는 YAML 기반으로 작성된 설정 파일을 사용해 pod를 만드는 방법에 대해 알아본다.
Kubernetes는 pod, replicas, 배포, 서비스 등과 같은 객체를 생성하기 위해 yaml 파일을 사용한다.
Kubernetes 설정 파일은 최상위 레벨(루트 레벨)인 하단 4가지가 필수로 포함 되어야 한다.
- ApiVersion
- kind
- metedata
- spec
1-1) apiVersion
ApiVersion은 객체를 생성하는데 사용하는 kubernetes API 버전을 의미한다.
만드려고 하는 객에 따라 올바른 API 버전을 선택해 사용해야한다.
예를 들어, Pod에 대한 작업은 apiVersion을 v1으로 설정해야한다.
1-2) kind
Kind는 만드려하는 객체의 종류를 의미한다.
예를 들어, Pod를 만들 때는 Pod를 적는다.
1-3) metadata
metadata는 name, labels 등과 같은 객체에 대한 데이터이다.
ㄱ. metadata 작성 규칙
metadata 하위 값인 name과 lables는 들여쓰기가 되어있다.
일반적으로 공백 2칸을 주지만 공백 수는 중요하진 않지만 같은 공백 수는 동등한 항목이란 것을 의미한다,
즉, name과 labels 둘은 동등한 항목이기 때문에 동일한 수의 공백을 주어야 한다.
<잘못 된 예시 01>
위와 같이 공백을 다르게 주면, labels를 name의 하위 항목으로 인식하게 된다.
<잘못 된 예시 02>
name과 labels 속성 앞에는 상위 항목인 metadata보다 더 많은 공백이 있어야 한다.
ㄴ. metadata 속성
apiVersion, kind에는 string(문자열) 값이 들어갔지만 metadata에는 dictionary(자료형) 값이 들어간다.
metadata아래에는 name, labels 등 Kubernetes에 미리 지정된 속성들만 추가할 수 있다.
우리 마음대로 metadata아래에 속성들을 추가할 수 없다.
<name>
metadata 아래의 name 항목에는 Pod의 이름을 지정할 string값이 들어간다.
<labels>
labels에는 dictionary값이 들어간다.
labels은나중에 객체를 식별하기 위해 주는 값으로 원하는 임의의 key와 value쌍을 넣을 수 있다.
상위 사진에는 "app: myapp" 값을 추가했다.
예를 들어 어플리케이션에서 실행되는 수백 개의 pod를 모두 배포된 뒤 기능에 따라 그룹화하는 것은 어렵다.
따라서 pod에 '프론트엔드', '백엔드', '데이터베이스' 등 label을 달아 놓으면, 손쉽게 이 label을 보고 파드를 필터링할 수 있다.
1-4) spec
spec은 만들 객체에 따라, 쿠버네티스에 제공할 객체 관련 추가 정보를 작성하는 곳이다.
spec은 dictionary다. spec 아래에 containers라는 속성을 추가한다.
파드는 여러 컨테이너를 가질 수 있기 때문에 containers 속성은 리스트이다.
containers 리스트의 항목은 container들의 리스트로 container의 name(이름)과 image(이미지)에 대해 기입한다.
컨테이너 하나만 필요하면 하나의 containers만 추가해주면 된다.
name 앞에 -가 붙었는데 리스트의 첫번째 아이템이라는 것을 뜻한다.
위 예시에서 container의 name은 'nginx-container'이며, image는 도커 레포지토리에 있는 도커 이미지인 'nginx'이다.
2. pod 생성
Pod 설정 파일이 완성 됐으면 하단 명령어를 통해 pod를 생성한다.
# kubectl create -f pod-definition.yml
하단 명령어를 통해 생성 된 pod를 볼 수 있다.
# kubectl get pods
하단 명령어를 통해 생성 된 pod의 자세한 설명을 볼 수 있다.
# kubectl describe pod myapp-pod
언제 생성됐는지, 어떤 labels, 어떤 도커 컨테이너가 포함 됐는지, pod와 관련된 이벤트에 대해 알 수 있다.
'IT 강의 > 도커 쿠버' 카테고리의 다른 글
[CKA 강의 요약] Practice Test Introduction (0) | 2024.03.26 |
---|---|
[CKA 강의 요약] Demo - Pods with YAML (0) | 2024.03.26 |
[CKA 강의 요약] Pod (0) | 2024.03.25 |
[CKA 강의 요약] Kube Proxy (0) | 2024.03.14 |
[CKA 강의 요약] Kublet (0) | 2024.03.14 |