Cloud Engineering

컨테이너 프로브 실제 서비스를 운영하게 되면 쿠버네티스의 컨테이너를 배포해서 운영하게 될 것이다. 그런데 컨테이너가 정상적으로 동작하지 않으면 서비스에 장애가 발생할 것이므로, 컨테이너의 상태를 확인해야 할 것이다. 컨테이너 프로브는 컨테이너가 제대로 실행되고 있는지 진단한다. 컨테이너 프로브에는 세가지 종류가 있으며, 이를 Manifest File 작성 시에 설정해 줄 수 있다. 프로브는 컨테이너의 상태에 따라 startupProbe, readinessProbe, livenessProbe 순서로 동작한다. 프로브는 설정하지 않을 수도 있으며, 원하는 프로브들을 여러개 설정할 수 있다. 1. startupProbe 컨테이너 내의 어플리케이션이 시작되었는지 확인한다. 프로브들 중에서 가장 먼저 실행되는 프..
Pod의 생명주기 Pod는 kubelet에 의해 생성되며, 영구적인 엔티티가 아니라 일시적인 엔티티이다. Pod이 생성되면 UID를 할당받고, node에 스케줄링 되어서 할당된 node 내에서 종료될때까지 남아있는다. Pod은 한번 스케줄링 되어 node에 할당되면 그걸로 끝이라서 일시적이라고 할 수 있는 것이다. 즉, 같은 Pod이 rescheduling 되는 일은 없다. 또한 Pod은 생성되어서 종료될때까지 생명주기를 가진다 Pending Pod이 kube scheduler에 의해서 스케줄링 되기 이전 상태이다. Registry 에서 Image를 pull해오면서 준비하는 상태. 즉, Pod이 만들어지는 단계이다. Running Pod이 만들어져서 Node에 할당이 된 상태이다. Pod 내부서는 하나 ..
Kubernetes Namespace란 쿠버네티스 클러스터를 논리적으로 분할하는 파티션이다. 즉, 클러스터 내에서 오브젝트를 논리적으로 파티셔닝해서 사용할 수 있다. 주의 ) 도커컨테이너의 리눅스 네임스페이스와는 관련이 없다. 쿠버네티스의 네임스페이스 개념은 따로 이해해야 한다. 클러스터의 Namespace 정보 확인하기 $ kubectl get namespace vagrant@kube-control1:~/work/mj$ kubectl get namespace NAME STATUS AGE default Active 24h kube-node-lease Active 24h kube-public Active 24h kube-system Active 24h default : 별도로 네임스페이스를 지정하지 않으면..
Annotation이란 Object에 부가적으로 붙여주고 싶은 정보를 Annotation이라고 한다. Label과 같이 Key: Value 값으로 저장되지만, Label처럼 검색이 되지 않는다. Annotation을 추가하는 방법 1. object에 직접 Annotation을 커맨드로 추가 $ kubectl annotate pods PODNAME ANNOTATION_KEY=VALUE [예시] $ kubectl annotate pods myapp-pod devops-team/developer=Minjee kubectl describe pods 명령어를 통해 다음과 같이 Annotation 필드의 마지막 줄에 내용이 추가 된 것을 확인할 수 있다. 2. Manifest File 생성시에 Annotation ..
Pod 쿠버네티스의 워크로드 리소스 중에서 가장 작은 기본 구성 단위이다. 쿠버네티스에서는 컨테이너 단위로 다루는 도커와 달리 개별 pod 단위로 다룬다. 하나이상의 컨테이너를 포함하는 쿠버네티스의 기본 실행 단위이다. pod가 포함하는 컨테이너는 1개일 수도, 여러개일 수도 있다. pod가 실행하는 컨테이너가 1개이면 pod와 컨테이너를 비슷하게 생각할 수 있다. 그러나 컨테이너가 여러개 실행될 수도 있으므로 구분해야 한다. 네트워크나 Storage에 연결할 때 컨테이너가 아니라, pod 단위와 연결한다. 즉, pod와 연결된 volume storage가 있는 경우 pod 내부의 컨테이너들은 이 공간을 공유해서 사용한다. 네트워크도 동일하게 공유해서 사용한다. pod라는 단위는 하나의 노드에서 실행된다..
Label이란 레이블은 부가적인 정보를 컨테이너에 붙이는 것이며, 레이블을 통해서 오브젝트를 검색/식별할 수 있다. 레이블을 추가한다고 해서 쿠버네티스 클러스터에 직접적으로 영향을 주는 것은 아니지만, 사용자가 쉽게 식별할 수 있다. 컨테이너의 역할에 대해 설명을 레이블로 저장해 놓을 수 있다. 레이블은 key: value 쌍으로 되어 있다. 레이블 형태는 접두어/이름 형식으로 사용가능하다. 단, kubernetes.io/ 와 k8s.io 접두어는 쿠버네티스 환경에서 이미 예약되었으므로 사용할 수 없다. Label은 manifest file 작성시에 metadata 하위에 작성할 수 있다. pod들의 Label을 확인하는 명령어 $ kubectl get pods --show-labels [예시] vagr..
YAML 데이터를 표현하기 위한 언어 흔히 서버에서 데이터를 보낼때 사용하는 JSON 처럼 데이터를 표현하는데 사용된다. 쿠버네티스에서는 YAML 과 JSON 둘 다 사용할 수 있는데, 보통 object를 정의하기 위한 Manifestfile을 작성할 때는 YAML로 작성한다. YAML 자료형 문법 1. 스칼라 / 스트링 : 문자열 데이터를 하나로 묶어서 사용할 수 있다. ‘’ , "" 와 같이 따옴표로 묶지 않아도 YAML에서는 문자열로 사용할 수 있다. kubernetes 'kubernetes' hello kubernetes 2. 리스트 / 배열 리스트의 element들을 - 을 앞에 붙여서 표현한다. - apple - banana - cat 3. 해시 / 딕셔너리 key, value 형식으로 데이터..
API 일반적인 기능들을 코어 그룹의 API에서 다루게 된다. 특정한 종류의 오브젝트들을 API그룹으로 다루게 된다. 오브젝트들 마다 사용할 수 있는 버전과 종류의 API가 있으므로 이에 맞게 사용해야 한다. API를 통해 오브젝트들이 관리되므로 알아두자 API의 종류에는 세가지가 있다. 알파버전 : 실험적인 API버전이다. 실험적인 만큼 불안정하고 버그가 있을 확률이 높다. 따라서 기본적으로 비활성화 되어 있지만 사용할 수는 있다. 버전 이름이 v1alpha 형식으로 되어 있다. 베타버전 : 충분히 코드가 테스트 되어 있고 기본적으로 활성화 되어 있다. 하지만 다음 버전에서 호환성이 변할 수 있다. 그래도 보통 마이그래이션을 할 수 있는 방법이 문서로 제공되므로 알파버전보다는 안전하다고 할 수 있다. ..
minjiwoo
'Cloud Engineering' 카테고리의 글 목록 (7 Page)