2023. 4. 9. 15:02ㆍKubernetes
yaml 설정 파일로 pod를 생성할 수있다.
쿠버네티스는 yaml 파일을 써서 쿠버네티스 오브젝트를 생성한다.
오브젝트 예시 : pods, replicas, deployments, services
구조는 다 비슷한데, 아래 4가지는 root level 속성들이라 필수값이다.
apiVersion:
kind:
metadata:
spec:
1) api version은 쿠버네티스 API 버전인데,
종류에따라 올바른 api version 을 써야함.
Pod는 apiVersion:v1
Kind | Version |
POD | v1 |
Service | c1 |
ReplicaSet | apps/v1 |
Deployment | apps/v1 |
2) Kind : object 유형이다.
위 표의 kind에 해당하는걸 적으면 됨.
Pod는 kind: pod
3) metadata : obejct의 데이터를 적으면됨.
name,labels 등등
dictionary의 형태이다.
단, 주의할건 자식값들에 인덴테이션이 있는데, 인덴테이션 정도는 상관없지만,
자식들간에 인덴테이션 일관성은 유지돼야한다.
탭은 권장하지 않는다. 항상 스페이스 2번 권장.
# 올바른 예시
metadata:
name: myapp-pod
labels:
app: myapp
# 잘못된 예시
metadata:
name: myapp-pod
labels:
app: myapp
name은 pod 명이다.
labels 도 dictionary 형태인데, key,value로 라벨링을 할수있다.
-> 나중에 pod 를 식별할때 쓸수있음 ,pod가 수백 수천개인데, 그룹화하기 좋다.
4) spec : 오브젝트에따라 추가적으로 제공해야하는 값이 다르기 때문에,
문서보고 올바른 양식을 적는게 중요하다.
spec 도 dicitionay 형태인데, container 하위에 적을 수있다.
컨테이너는 배열이나 리스트다.
컨테이너가 리스트인 형태인 이유는 pod가 여러개 컨테이너를 가질수 있기 때문이다.
아래는 pod 명세 완성본
#pod-definition.yml
apiVersion:v1
kind:Pod #대소문자 구분 중요!
metadata:
name: myapp-pod
labels:
app: myapp
type: front-end
spec:
container:
-name: nginx-container # - 가 들어가는 이유는 list의 첫번째 item이기 때문이다.
image: nginx
#yml 로 pod 생성하는법
kubectl create -f pod-definition.yml
# 존재하는 pod 보는법
kubectl get pods
#pod 상세 명세보는법 (pod의 metadata에 적힌 name 필요)
kubectl describe pod myapp-pod
container 가 여러개일때 yml 예시
#pod.yml
apiVersion:v1
kind:Pod #대소문자 구분 중요!
metadata:
name: nginx
labels:
app: nginx
tier: fronetend
spec:
container:
-name: nginx-container
image: nginx
-name: busybox # 두번째 컨테이너
image: busybox
# 생성하는법은 apply로도 가능 f옵션은 파일명을 쓰겠단 뜻
kubectl apply -f pod.yaml
-> pod/nginx created
'Kubernetes' 카테고리의 다른 글
Test-replicaSet (0) | 2023.04.12 |
---|---|
Recap-ReplicaSets (0) | 2023.04.10 |
Recap -Pods (0) | 2023.04.09 |
Kube-Proxy (0) | 2023.04.08 |
Kubelet (0) | 2023.04.08 |