• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    미해결

디플로이먼트에서의 metadata와 spec

22.03.30 10:46 작성 조회수 161

0

안녕하세요! 디플로이먼트에서 metadata와 spec의 차이에 대해 궁금한 점이 있어 질문 드립니다.

파드에서 metadata와 spec은 각각 파드에 대한 정보, 컨테이너에 대한 정보로 이해를 하였는데요.

디플로이먼트에서 metadata와 spec은 비슷하지만 다른 정보를 가지고 있는 것 같습니다.

여기서 metadata는 디플로이먼트에 대한 정보를 의미하는 거 같은데,

spec은 파드를 복제할 때 필요한 정보를 가지고 있는 것이라고 이해해도 될까요?

강사님 말씀을 듣고 공식문서를 찾아보니 쿠버네티스 시스템은 그 디플로이먼트 spec을 읽어 spec에 일치되도록 상태를 업데이트하여 3개의 의도한 애플리케이션 인스턴스를 구동시킨다라고 되어있는데 제가 이해한 부분이 맞는지 질문드립니다!

항상 좋은 강의 감사합니다!

답변 1

답변을 작성해보세요.

4

supportkim님의 프로필

supportkim

2022.03.31

안녕하세요, 김건우님.

튜터 supportkim입니다.

 

이미 공식문서를 확인해주셔서 아시는 내용이겠지만, 해당 문서에서 metadata와 spec에 대해 아래와 같이 안내하고 있습니다.

 

- 쿠버네티스 오브젝트 이해하기

https://kubernetes.io/ko/docs/concepts/overview/working-with-objects/kubernetes-objects/

-----

metadata - 이름 문자열, UID, 그리고 선택적인 네임스페이스를 포함하여 오브젝트를 유일하게 구분지어 줄 데이터

spec - 오브젝트에 대해 어떤 상태를 의도하는지

 

예를 들어, 쿠버네티스 디플로이먼트는 클러스터에서 동작하는 애플리케이션을 표현해줄 수 있는 오브젝트이다. 

디플로이먼트를 생성할 때, 디플로이먼트 spec에 3개의 애플리케이션 레플리카가 동작되도록 설정할 수 있다. 

쿠버네티스 시스템은 그 디플로이먼트 spec을 읽어 spec에 일치되도록 상태를 업데이트하여 3개의 의도한 애플리케이션 인스턴스를 구동시킨다. 

-----

쿠버네티스에서 오브젝트를 생성할 때, 오브젝트를 구분하기 위한 정보인 metadata와 더불어 의도한 상태를 기술한 오브젝트 spec을 가지고 있으며

컨트롤러는 이 spec을 읽고 의도한 상태에 가깝게 만드는 역할을 합니다.

 

문의주신 파드와 디플로이먼트 모두 spec과 metadata의 의미 자체가 다르진 않지만, 

워크로드 리소스(Deployment, StatefulSet, DaemonSet 등)의 경우 파드 템플릿(template)을 통해

배포할 대상 파드에 대한 명세를 작성하고 selector , replicas 등 spec에 요구되는 내용이 다르다 정도로 이해하시면 될 것 같습니다.

 

혹시 추가로 궁금하신 점이 있으면 남겨주세요

 

감사합니다 :)

 

제 답변이 많이 부족하여 이해에 도움이 되실만한 문서를 전달드리오니 참조 부탁 드립니다.

 

- 쿠버네티스 오브젝트 이해하기

https://kubernetes.io/ko/docs/concepts/overview/working-with-objects/kubernetes-objects/

 

- 쿠버네티스 문서 - 개념

https://kubernetes.io/ko/docs/concepts/_print/#pg-a2dc0393e0c4079e1c504b6429844e86

 

- 컨트롤러

https://kubernetes.io/ko/docs/concepts/architecture/controller/

 

- 디플로이먼트 사양 작성

https://kubernetes.io/ko/docs/concepts/_print/#%EB%94%94%ED%94%8C%EB%A1%9C%EC%9D%B4%EB%A8%BC%ED%8A%B8-%EC%82%AC%EC%96%91-%EC%9E%91%EC%84%B1