본문 바로가기

전체 글55

4.3. ReplicaSet 1. ReplicaSet 소개 replication controller의 문제점 및 기능을 개선을 위해 추가되었다. replication controller가 제공하는 기능과 거의 비슷하다. 기본적으로 요구하는 복제본 개수만큼 pod를 복제하고 모니터링하며 관리한다. 2. ReplicaSet과 replication controller의 비교 pod의 다중 레이블 지원 파드 들은 레이블이 여러 개 있을 수 있다.ex) app: web, env: dev 레이블이 몇개든 상관없다. 레플리케이션 컨트롤러는 레이블을 하나밖에 모른다. pod에 설정된 레이블의 키만 선택 가능 env라는 레이블의 키만 가지고 있어도 된다.=> 특정 레이블의 키만 가지고 있어도 된다. 레이블은 생성한 직후에는 같지만 나중에 추가하거나.. 2020. 7. 28.
4.2. Replication Controller kubernetes의 컨트롤러는 파드를 올바르게 동작하기 위해 특정 상태를 보장하기 위한 기능이다. 특정 상태는 컨트롤러에 따라 동작하는 방식 및 정의하는 상태에 따라 다르다. 1. replication controller란? 파드가 특정 개수만큼이 복제되고 동작하는 것을 보장한다. 최신 버전에서는 잘 쓰지 않는다. label을 수정하면 label이 달라지기 때문에 복제본을 새로 만든다 -> 복제본이 하나 없어졌다고 판단하기 때문에 노드에 문제가 발생했거나 파드가 문제가 생겨 원하는 수의 파드가 동작하지 않는다면 자동으로 스케줄러에 의해 새로운 노드나 기존 노드에 다시 새로운 파드를 생성해 원하는 수의 파드를 복제해서 동작시킨다. 파드가 원하는 수보다 많은 경우에도 원하는 파드 수로 맞춘다. --> 불필.. 2020. 7. 24.
4.1. Liveness Probe 1. liveness probe 소개 라이브니스 프로브는 pod에 의해 컨테이너를 동작시키고, 동작하고 있는 컨테이너가 잘 동작하는지 주기적으로 모니터링한다. 만약 모니터링 도중 파드의 오류가 발생하면 해당 컨테이너를 재시작한다. 재시작을 했는데도 안된다 -> pod fail .spec.containers에서 지정. 컨테이너마다 지정 라이브니스 프로브는 세 가지 메커니즘을 가지고 컨테이너의 상태를 모니터링한다. HTTP GET probe 특정 경로에 HTTP GET 요청 HTTP 응답 코드가 2XX 또는 3XX인지 확인함 TCP socket probe 특정 TCP 포트 연결을 시도함 Exec probe 컨테이너 내부의 바이너리(명령)를 실행하고 종료 코드 확인 2. liveness probe 생성 ..... 2020. 7. 24.
3.4. namespace 1. namespace란? object를 논리적으로 분리할 수 있는 논리적 파티션. 2. namespace 확인 default : 기본 네임스페이스. 특정 네임스페이스를 지정하지 않으면 기본 네임스페이스를 사용한다. 네임스페이스의 목록은 클러스터 배포 방법 / 도구나 쿠버네티스 버전에 따라 기본 제공되는 네임스페이스 목록이 조금씩은 다를 수 있다. default : 기본 네임스페이스. kube-node-lease kubernetes node의 가용성을 체크하기 위한 네임스페이스. 하트비트를 위한 leases 오브젝트가 있다. kubernetes 1.14 이상 kubectl get leases.coordination.k8s.io -n kube-node-lease -> 노드가 살아있는지 죽어있는지 확인. k.. 2020. 7. 24.
3.2. Label 및 Selector 1. Label이란? kubernetes cluster의 모든 object(파드 포함)에 키/값 쌍으로 리소스를 식별하고 속성을 지정하는 데 사용 카테고리라고 생각해라 오브젝트에 적절한 레이블을 부여하여 성격을 정의하고 검색을 용이하게 할 수 있다. label의 예: release : stable / canary / A / B environment : dev / qa / production tier : frontend / backend / cache / database partition : customerA / customerB track : daily / weekly app : webapp / middleware label 구문 키는 "접두사(옵션)/이름" 형식 영문자, 숫자, 대시(-), 언더스코어(.. 2020. 7. 23.
Pod pod는 kubernetes의 기본 구성 요소이다. kubernetes cluster 내에서 애플리케이션을 배포하며 동작하는 프로세스이다. kubernetes의 object 모델 중에서 만들고 배포할 수 있는 가장 작은 단위이다. 하나 이상의 컨테이너가 들어갈 수 있다. -> 각각 다른 기능으로 동작해야한다. pod의 컨테이너는 같은 노드에서만 동작한다. 하나의 pod에 하나의 container가 생성되는게 일반적. IP는 pod에만 할당된다. 컨테이너들은 volume을 공유할 수 있다. 같은 pod의 컨테이너는 네트워크를 공유하고 볼륨도 공유할 수 있다. 1. pod 정의 pod를 생성할 수 있는 YAML 파일을 작성해보자 # myapp-pod.yml apiVersion: v1 kind: Pod met.. 2020. 7. 23.
명령형 명령어 1. replication controller(pod) 생성 kubectl run myapp-httpd --image=httpd --port=80 --generator=run/v1 kubectl run 명령을 사용하여 replication controller를 생성했다. controller의 이름 = myapp-httpd container에 사용할 image = httpd application port = 80 --gernerator 일반적으로 사용하지는 않는다. 이 옵션으로 복제 컨트롤러를 사용하여 파드를 생성한다. 사용하지 않으면 deployment object가 생성된다. 참고 https://kubernetes.io/docs/reference/kubectl/conventions/#generators.. 2020. 7. 23.
Object 관리 1. kubernetes object kubernetes는 cluster의 상태를 나타내기 위해 오브젝트 개체를 정의하여 사용 kubernetes에서 object를 생성할 때, object에 대한 기본적인 정보와 함께 의도한 상태를 기술한 object spec을 제시해야 함. object를 생성하기 위해 YAML 또는 JSON 파일을 작성 kubectl 명령에 object가 정의된 YAML 또는 JSON 파일 제공 kubectl은 JSON 형식으로 정보를 변환시켜 API 요청을 함. pod object를 기술한 간단한 YAML 파일 예제 apiVersion: v1 kind: Pod metadata: name: myweb-pod lables: app: myweb type: frontend spec: con.. 2020. 7. 22.
YAML 1. YAML이란? 사람이 읽고 쓰기 쉽게 데이터를 정의하는 양식 XML, C, Python, Perl, RFC2822(인터넷 메시지 포맷)에서 정의된 개념을 기반으로 만들어짐 데이터의 직렬화를 위해 많이 사용함. 2. YAML 요소 YAML은 모든 데이터를 scalar, list, hash로 표현한다. scalar / string 스칼라 : 단순한 문자 또는 문자열 hello I am kubernetes 'I am kubernetes' list / array - 로 시작해야하며 한줄에 하나의 요소를 표현 key: - value1 - value2 - value3 key: [value1, value2, value3] hash / dictionary key: key1: value1 key2: value2 k.. 2020. 7. 22.