• [Kubernetes Foundation] Object Management
    아키텍처 공부/Cloud 2022. 9. 29. 23:08
    반응형

    쿠버네티스 오브젝트

     모든 쿠버네티스 오브젝트(Object)는 고유한 이름과 고유한 식별자로 식별된다. 쿠버네티스 오브젝트를 만들 때 문자열로 이름을 지정한다. 특정 종류의 오브젝트 하나만 쿠버네티스 네임스페이스에서 동시에 특정 이름을 가질 수 있다. 그리고 오브젝트가 삭제된 경우 해당 이름을 다시 사용할 수 있다. 이름에는 영숫자, 하이픈, 마침표를 사용할 수 있으며 최대 문자 길이는 253자 이다. 클러스터 수명 동안 생성된 각 오브젝트에는 쿠버네티스에서 생성된 고유 ID가 있다. 즉, 클러스터 수명 동안 두 개체가 동일한 UID를 갖지는 않는다.

     쿠버네티스에서는 매니페스트 파일을 사용하여 만들고 유지 관리할 오브젝트를 정의한다. 이 매니페스트는 일반 텍스트 파일이다. YAML 또는 JSON 형식으로 작성할 수 있다. 

     

    네임스페이스

     쿠버네티스를 사용하면 단일 물리적 클러스터를 '네임스페이스'를 네임스페스라고 하는 여러 추상 클러스터로 나눌 수 있다.

     

    매니페스트 파일의 필드

    매니페스트 파일에는 필수 필드가 있다. 

    'apiVersion'은 객체를 생성하는 데 사용되는 Kubernetes API 버전을 설명한다. 

    kind’는 원하는 개체(이 경우 Pod)를 정의한다.

    metadata’는 이름, 고유 ID, 선택적 네임스페이스를 사용하여 개체를 식별하는 데 도움이 된다. 

    label’은 생성 중 또는 생성 후에 객체에 태그를 지정하는 키-값 쌍이다. 레이블(label)은 오브젝트와 오브젝트의 하위 집합을 식별하고 구성하는 데 도움이 된다.

     

     동일한 YAML 파일에서 여러 관련 오브젝트를 정의할 수 있으며 그렇게 하는 것이 가장 좋다. YAML 파일을 버전 컨트롤 저장소(github 등)에 저장해야 한다. 이렇게 하면 변경사항을 더 쉽게 추적 및 관리하고 필요할 때 변경사항을 취소할 수 있다. 많은 GCP 고객이 이 용도로 Cloud Source Repositories를 사용한다. 

     

    컨트롤러 오브젝트

     200개의 Nginx 웹 서버를 구축하는 방법은 각각의 매니페스트 파일로 파드를 만드는 것이다. 하지만 유지보수 하기 매우 힘들고, 파드는 스스로 치유되거나 수리되지 않으며 영원히 실행되지 않는다.  대신 파드의 상태를 관리하는 역할을 하는 컨트롤러 오브젝트를 선언할 수 있다. 이러한 개체의 몇 가지 예는 Deployments, StatefulSets, DaemonSets, Jobs이다.

     

    디플로이먼트 컨트롤러(Deployment controller)는 파드를 모니터링하고 유지 관리한다. 관리되는 파드 중 하나가 실패하면 디플로이먼트 컨트롤러가 현재 상태와 원하는 상태의 차이를 인식하고 새 파드를 실행하여 문제를 해결하려고 시도한다. 각 파드에 여러 YAML 매니페스트 또는 파일을 사용하는 대신 단일 디플로이먼트 YAML을 사용하여 동일한 컨테이너의 복제본을 실행한다. 

     

    • 컨트롤러 오브젝트의 종류
      • Deployments
      • ReplicaSets
      • ReplicationControllers
      • StatefulSets
      • DaemonSets
      • Jobs
      • CronJob
    반응형

    댓글

Designed by Tistory.