✔️ Workload Resource(Controller) 워크로드 리소스는 컨트롤러라고도 불린다. 파드는 컨테이너의 집합이며 컨트롤러는 파드의 집합이다. 컨테이너 ⊂ 파드 ⊂ 컨트롤러 관계를 가진다. 워크로드는 쿠버네티스에서 구동되는 애플리케이션이다. 워크로드가 단일 컴포넌트이거나 함께 작동하는 여러 컴포넌트이든 관계없이, 쿠버네티스에서는 워크로드를 일련의 파드 집합 내에서 실행한다. 컨트롤러라는 것은 파드의 집합이다. 컨트롤러는 하나 이상의 파드로 구성되어 있다. 파드에는 여러개의 컨테이너가 있을 수 있다. 싱글톤 파드를 만드는 경우는 거의 없으며 컨트롤러를 만들고 컨트롤러가 파드를 만들고 파드가 컨테이너를 만드는 형태로 사용한다. 컨트롤러를 파드를 3개를 복제해서 만들어라 라고 선언하면 컨트롤러는 ..
✔️ Pod의 LifeCycle 파드 라이프사이클 이 페이지에서는 파드의 라이프사이클을 설명한다. 파드는 정의된 라이프사이클을 따른다. Pending 단계에서 시작해서, 기본 컨테이너 중 적어도 하나 이상이 OK로 시작하면 Running 단계를 통과하 kubernetes.io ✔️ Pod의 Phase (파드의 단계) ✔ Pending - 파드가 쿠버네티스 클러스터에서 승인되었지만, 하나 이상의 컨테이너가 설정되지 않았고 실행할 준비가 되지 않았다. 여기에는 파드가 스케줄되기 이전까지의 시간 뿐만 아니라 네트워크를 통한 컨테이너 이미지 다운로드 시간도 포함된다. 이미지의 크기가 크면 pending 시간이 오래걸린다. 그러나 이미지를 다 받았음에도 불구하고 여전히 pending 상태라면 문제 확인이 필요하다..
✔️ Annotation (어노테이션) 어노테이션 | Kubernetes label과 거의 흡사하나 비식별 메타데이터이다. 식별하는 용도로 사용하는 것이 아니기 때문에 레이블 셀렉터의 기능을 가지지 않고 단순히 정보를 설정한다. "metadata": { "annotations": { "key1" : "value1", "key2" : "value2" } } 다음은 어노테이션에 기록할 수 있는 정보의 예제이다. 필드는 선언적 구성 계층에 의해 관리된다. 이러한 필드를 어노테이션으로 첨부하는 것은 클라이언트 또는 서버가 설정한 기본 값, 자동 생성된 필드, 그리고 오토사이징 또는 오토스케일링 시스템에 의해 설정된 필드와 구분된다. 빌드, 릴리스, 또는 타임 스탬프, 릴리스 ID, git 브랜치, PR 번호, ..
✔️ Label & LabelSelector ✔️ Label 레이블과 셀렉터 | Kubernetes Label은 AWS의 태그와 유사한 개념이다. 리소스의 이름은 Namespace에서 유일해야 했다. 반면 Label은 리소스에 1개 이상 설정할 수 있다. 여러개의 리소스에 동일한 Label을 중복해서 붙일 수 있다. Label을 붙여서 오브젝트의 특성을 식별하는 데 사용한다. "metadata": { "labels": { "key1" : "value1", "key2" : "value2" } } 해당 형식은 JSON 형식을 따른 것이다. metadata: name: label-demo labels: key: value key: value key: value YAML 형식을 사용할 수 있으며 같은 key :..
✔️ 오브젝트 이름과 ID 오브젝트 이름과 ID | Kubernetes 클러스터의 각 오브젝트는 해당 유형의 리소스에 대하여 고유한 이름을 가지고 있다. 또한, 모든 쿠버네티스 오브젝트는 전체 클러스터에 걸쳐 고유한 UID를 가지고 있다. vagrant@k8s-node1:~/pod$ kubectl get pods -o yaml uid: daecb2af-ef5c-4531-8855-f6706346c6cd 오브젝트를 리소스를 만들때 k8s의 controll manager는 해당되는 리소스에 id를 붙인다. 해당 id는 k8s 클러스터 전체에 걸쳐서 유일하다. 해당 오브젝트를 완전하게 구분할 수 있는 이름이다. 이름은 Namespace 내에서 하나만 존재할 수 있다. 다른말로 Namespace가 다르면 같은 이..
✔️ Pod Design 단일 컨테이너 : 일반적인 형태 멀티 컨테이너 : 메인 어플리케이션이 존재하며 메인 어플리케이션 기능을 확장하기 위한 컨테이너를 배치 위의 그림은 파드에 컨테이너가 2개 있는 멀티 컨테이너 배치를 갖는다. 보조 기능을 하는 File Puller가 Git이나 S3에서 웹 컨텐츠를 가져와 볼륨(ex. var/www/html)에 저장한다. 메인 어플리케이션인 Web Server는 볼륨의 컨텐츠를 클라이언트에게 제공하는 역할을 한다. 하나의 파드에서는 네트워크와 볼륨을 공유한다. 파드에게 제공하는 볼륨이 있으면 같은 파드 내의 컨테이너는 해당되는 볼륨에 접근할 수 있다. kubectl describe를 통해 보면 컨테이너의 개수와 상관없이 파드에는 하나의 ip만 부여된다. 즉, 하나의 ..