쿠버네티스 오브젝트
구버네티스 오브젝트는 구버네티스 시스템에서 영속성을 가지는 오브젝트이다
쿠버네티스는 클러스터의 상태를 나타내기 위해 이 오브젝트를 이용한다.
- 어떤 컨테이너화돤 애플리케이션이 동작 중인지
- 어느 노드에서 동작 중인지
- 동작중인 응용프로그램이 이용할 수 있는 리소스
- 동작하는 응요프로그램이 어떻게 재구동 되는지 정책, 내고장성과 같은 동작의 정책
쿠버네티스 오브젝트는 하나의 의도를 담은 레코드이다. 오브젝트를 생성하게 되면 쿠베네티스 시스템은 그 오브젝트 생성을 보장하기 위해 지속적으로 동작할 것이다. 오브젝트를 생성함으로써 클러스터의 워크로드를 어떤 형태로 보이고자 하는지에 대해 효과적으로 구버네티 시스템에 전한다.
생성이든 수정이든 또는 삭제든 쿠버네티스 오브젝트를 동작시키려면 쿠버네티스 API를 이용해야 한다 kubectl 커맨드 라인 인터페이스를 이용할 때 CLI는 필요한 쿠버네티스 API를 호출해 준다
사용자는 클라이언트 라이브러리 중 하나를 이용하여 사용자의 프로그램에서 쿠버네티스 API를 직접호출 할 수도 있다
오브젝트 명세(spec)와 상태(status)
쿠버네티스 오브젝트는 오브젝트의 구성을 결정해주는 두 개의 중첩된 오브젝트 필드를 포함하는데 오브젝트 spec 과 오브젝트 status 이다
spec 을 가진 오브젝트는 오브젝트를 생성할 때 리소스에 원하는 특징(의도한 상태)에 대한 설명을 제공해서 설정
status는 쿠버네티스 시스템과 컴포넌트에 의해 제공되고 업테이트된 오브젝트의 현재 상태를 설명한다. 쿠버네티스 컨트롤 플레인은 모든 오브젝트이 실제 상태를 사용자가 의도한 상태와 일치시키기 위해 끊임없이 그리고 능동적으로 관리한다.
- 크버네티스 디플로이먼트는 클러스터에서 동작하는 애플리케이션을 표현해줄 수 있는 오브젝트이다
- 디플로이먼트를 생성할 때 디프로이먼트 spec에 3개의 애플리케이션 레플리카가 동작되도록 설정할 수 있다
- 커버네티스 시스템은 그 디플로이먼트 spec을 읽어 spec에 일치되도록 상태를 업데이트하여 3개의 의도한 응용프로그램 인스턴스를 구동시킨다.
- 구동중인 인스턴스들 중 어느하나가 어떤 문제로 인해 멈춘다면(상태변화 발생) 쿠버네티스시스템은 보정(이런 경우 대체 인스턴스를 시작)을 통해 spec 과 status간의 차이에 대응
구버네티스 오브젝트 기술
쿠버네티스에서 오브젝트를 생성할 때,(이름과 같은)오브젝트에 대한 기본적인 정보와 더불어, 의도한 상태를 기술한 오브젝트 spec를 제시해 줘야 한다
오브젝트를 생성하기위해 (직접생성 또는 kubectl 을 이용하던) 쿠버네티스 API를 이용할 때 API 요청은 요청 내용안에 JSON 형식으로 정보를 포함시켜줘야만 한다
대부분의 경우 정보를 .yaml 파일로 kubectl에 제공한다
kubectl은 API 요청이 이루어질 때 JSON 형식으로 정보를 변환시켜 준다.
디플로이먼트를 위한 필수 필드와 오브젝트 spect을 보여주는 yaml
파일명 : deployment.yaml
apiVersiom : apps/v1
kind:Deployment
metadata:
name:nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2 #tells deployment to run 2 pods matching the remplate
template:
metadate:
labels:
app: nginx
spec:
containers:
- name : nginx
image : nginx:1.14.2
ports:
- containerPort : 80
위의 예시의 .yaml파일을 이용하여 디플로이먼트를 생성하기 위햔 하나의 방식으로는 kubectl 커맨드-라인 인터페이스에 인자값으로 .yaml 파일 명을 입력한다
kubectl apply -f https://www.url.co.kr/deployment.yaml
필드 설명
apiVersion : object를 생성하기 위해 사용되고 있는 쿠버네티스 API 버전
kind : 생성 하고자 하는 Object 의 종류
metadata : 이름,문자열,UID, 그리고 선택적인 네임스페이스 를 포하하여 오브젝트를 유일하게 구분 지어 주는 데이터
spec : 오브젝트에 대해 어떤 상태를 의미하는 것인지
파드 API레퍼런스를 보려면 spec 필드를 참조한다. 각 파드에 대해 spec 필드는 파드 및 파드의 원하는 상태(desired state)를 기술한다
- 파드의 각 컨터이네에 대한 컨터이너 이미지
오브젝트 상세에 대한 또 다른 예시는 스테이트 풀셋 API의 spec 필드이다.
- 스테이트 풀셋 및 스테이트 풀셋의 원하는 상태(desired state)를 기술 한다.
- 스테이트 풀셋의 spec에는 파드 오브젝트에 대한 템플릿이 존재
- 템플릿에는 스테이트 풀셋 명세를 만족시키기 위해 스테이트 풀셋 컨트롤러가 생성할 파드에 대한 상세 사항을 설명
- 서로 다른 종류의 오브젝트는 서로 다른 status를 가질 수 있다.
쿠베네티스[6] 오브젝트 이름과 ID 20220904 (0) | 2022.09.04 |
---|---|
쿠베네티스[5] 오브젝트 관리 20220903 (0) | 2022.09.03 |
쿠버네티스[3] API (0) | 2022.08.30 |
쿠버네티스[2] 쿠베네티스 컴포넌트 20220829 (0) | 2022.08.29 |
쿠버네티스 [1] 컨테이너 까지의 정리 20220828 (1) | 2022.08.28 |
댓글 영역