manifest, YAML, pod

CHAN LIM·2022년 8월 30일
0

K8S

목록 보기
3/11

manifest

매니페스트란,
쿠버네티스의 오브젝트를 생성하기 위한 메타 정보를 YAML이나 JSON으로 기술한 파일이다.


YAML

키: 값 형태로 작성하는 파일.

  • EX)
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - name: nginx
    image: nginx:latest

설명

apiVersion: apps/v1	  키가 apiVersion 이고 값이 apps/v1

metadata:			  키가 metadata 이고 값이 name: nginx-deployment
 name: nginx	      값은 또 다른 키와 값이 될  수 있다.

	
spec:			      키가 spec이고 값이 containers:	
 containers:				 - name: nginx
  - name: nginx				  image: nginx:latest
   image: nginx:latest	값은 여러개를 가질 수 있다.


containers:		     -은 키의 값이 배열임을 의미
- dog
- cat			      containers[0] 은 dog containers[1] 은 cat containers[2] 는 rabbit
- rabbit


containers:		      -이 없으면 이전 요소에 포함된다.
- dog
   cat			      containers[0] 은 dog cat containers[1] 은 rabbit
- rabbit
  • YAML 파일의 '-'(데쉬)의 의미
    • nodeName
      • 가장 간단한 형태의 노드 선택 제약 조건이지만, 한계로 인해 일반적으로 사용하지 않음
    • nodeSelector
      • 가장 간단하고 권장되는 노드 선택 제약 조건
    • 따라서, node를 지정할 때는 nodeSelector를 사용하자

Pod API

apiVersion : v1 설정
kind : 오브젝트를 지정
metadata : 오브젝트의 정보를 입력, name은 필수, 
spec : 
	initContainers : 초기화 전용 컨테이너의 명세를 기술
	nodeSelector : Pod가 배포될 노드의 이름을 지정
	volumes : Pod 내 컨테이너 간에 공유할 수 있는 볼륨을 지정
    containers : 컨테이너의 명세를 배열(대쉬'-')로 기술

		  image : 컨테이너 생성시 사용할 이미지
		  name : 컨테이너 이름
		  livenessProbe : 컨테이너 내의 프로그램이 정상적으로 동작 중인지 검사하는 프로브
		  readinessProbe : 컨테이너 내의 프로그램이 사용자의 요청을 받을 준비가 되었는지 검사하는 프로브
	      ports : 외부 요청을 전달하기 위한 포트 목록
		  resources : CPU와 메모리 제한
		  volumeMounts : 파드에 정의한 볼륨을 컨테이너의 마운트할 경로
	      command : 컨테이너 생성 시 마지막에 실행할 명령어
		  args : command의 매개변수
		  env : 환경변수 설정

yaml 예제

  • 파드 동작 확인 명령어 사용을 위한 예제
  • 파드의 스펙은 이름이 chan-pod-test,
    이미지는 강의이미지인 sysnet4admin/chk-hn, 포트는 8080, 노드는 worker1에서 동작하도록 설정한다.

chan-pod-test.yaml

apiVersion: v1
kind: Pod
metadata:
  name: chan
spec:
  containers:
    - name: chan-pod-test
      image: sysnet4admin/chk-hn
      ports:
        - containerPort: 8080
  nodeSelector:
      kubernetes.io/hostname: worker1

파드 생성

kubectl apply -f [yaml 파일 이름]

kubectl apply -f chan-pod-test.yaml

파드 삭제

kubectl delete -f [yaml 파일 이름]

profile
클라우드, 데이터, DevOps 엔지니어 지향 || 글보단 사진 지향

0개의 댓글