본문 바로가기

Kubernetes

(9)
kubernetes deploymemt rollingupdate kubernetes deploymemt rollingupdate 디플로이먼트는 쿠버네티스에서 상태가없는 앱을 배포할때 가장 기본적인 컨트롤러이다. 디플로이먼트는 레프리카셋을 관리하면서 앱 배포를 더 세밀하게 관리한다. 파드갯수를 보장해주는것 뿐만아니라 롤링,롤백업데이트를 지원한다. 롤링업데이트(rollingupdate): 파드를 점진적으로 새로운것으로 업데이트 하여 서비스 중단 없이 이루어질 수 있도록 함 레플리카셋을 제어해주는 부모역할을 하는 디플로이먼트. ●deployment Controller 생성 ,관리 및 확인 NAME READY STATUS RESTARTS AGE pod/nginx-deploy-84455b7b7c-7ffbf 1/1 Running 0 13s pod/nginx-deploy-8445..
kubernetes replicaset controller kubernetes replicaset controller replicaset은 레플리케이션 컨트롤러와 같은역할을 한다 파드의 갯수를 보장 ...등 한가지 차이점은 집합성 기준의 풍부한 레이블 셀렉터(matchlabels,matchExpressions)를 지원한다.레플리카셋 컨트롤러의 API 버전은 apps/v1버전을 사용 레플리케이션 컨트롤러: key:value 타입 의 일치성 기준 "키=값" 둘다 일치해야만 지원레플리카셋 컨트롤러 : 집합성+일치성 기준 "키=값" ,"키=X" 둘다 일치 혹은 둘중하나만 일치해도 지원 matchExpressions 연산자 ●In : key:value 의 지정된 값이 일치해야 하는 pod만 연결 ●Notin : key는 일치하고 value는 일치 하지않은 pod에 연결 ..
kubernetes pod 환경변수 설정 kubernetes pod 환경변수 설정 Pod내의 컨테이너가 실행될때 필요로 하는 변수 컨테이너 제작시 미리 정의할수있음. Pod 실행시 미리 정의된 컨테이너 환경변수를 변경할수있음. apiVersion: v1 kind: Pod metadata: name: ngin-pod-env spec: containers: - image: nginx:1.14 name: ngin-pod-env ports: - containerPort: 80 env: - name: MYVAR value: "testvalue" ●env: 필드값 name: 사용할 환경변수의 이름을 설정 value: 문자열이나 숫자 형식의 값을 설정 valueFrom:값을 직접 할당하는 것이 아니라 어딘가 다른곳에서 참조하는 값을 설정 fieldRef:파..
kubernetes Pod resource setting 파드 자원관리 kubernetes Pod resource Setting 쿠버네티스에서 Pod 실행,배포시 worker node의 H/W상태를 체크.점검하여 가장 적합한 worker Node에 실행,관리시켜주는 컴포넌트는 master Node의 scheduler 이때 사용량이 많은 파드가 한 node 몰려서 동작시 효율성이 낮아진다. 이를 방지하는 몇가지 기능 중 Pod의 컨테이너 용도에 맞게 CPU,MEM 사용량을 관리해주는것을 kubernetes Pod resource setting 이라고 한다. ●Pod 리소스 단위 쿠버네티스 파드 리소스 표현단위 프로세서(CPU): M , 1 (core) 메모리(memory): Ki , Mi , Gi ●Pod 리소스 요청 및 제한 쿠버네티스 파드 리소스관리의 요청,제한은 두가지로..
kubernetes static pod & kubelet kubernetes static pod & kubelet kube-apiserver를 통하지 않고 kubelet 데몬이 직접 관리,생성한다. 정적인 파드만 실행가능하며 기타리소스는 사용할 수 없다. 보통 static pod는 api,etcd같은 시스템파드를 실행하는 용도로 많이사용 노드마다 존재하는 특정경로에 yaml을 배치하면 실행된다 ( /etc/kubernetes/manifests/ ) 기존 Pod의 실행방식은 kubectl -> master node의 API 요청 -> etcd -> scheduler -> 최적의 node에 실행 static pod는 기존 실행방식이 아닌 각 master node를 포함한 모든 노드는 kubelet 데몬이 동작하고 있는데 kubelet 이 관리하는 static po..
kubernetes init container kubernetes init container 초기화컨테이너(init container)는 APP컨테이너가 실행되기전에 파드를 초기화 해준다 초기화컨테이너는 여러개를 구성할 수 있다. 초기화컨테이너의 실행이 실패하면 성공할 때까지 재시작된다. 즉 필요한 명령,제어,조건들을 순서대로 실행하는데 사용 초기화컨테이너가 성공해야 APP컨테이너 실행된다. 초기화컨테이너는 파드가 모두 준비되기전에 실행한 후 종료되는 컨테이너이기 때문에 Probe기능을 지원하지 않는다. 초기화컨테이너는 파드가 재시작 되었다면 반드시 다시 실행된다. APP컨테이너 즉 Main container를 실행하는데 있어 init container 기능을 활용하여 메인컨테이너가 요구하는 환경,조건이 제데로 구성되어있는지 점검하고 완료되면 메인컨..
kubernetes yaml kubernetes yaml 사람이 쉽게 읽고 쓸수 있는 직렬화된 쿠버네티스용 문법을 갖춘 양식 key:value 타입으로 구성 ( Scalar 문법 ) '-' 문자로 여러개를 나열하는 배열문법 띄어쓰기 구분을 명확하게 해줘야함 ( 셋팅은 하위종속적이기 때문에 띄어쓰기나 들여쓰기가 정확하지않은경우 실행불가) http://yaml.org/ kubernetes yaml 의 필드구성 #kubectl run testyaml --image=nginx --port 80 --dry-run -o yaml > testyaml.yaml -> --dry-run -o yaml 실제파드를 생성하지않고 yaml양식에 맞춰 템플릿을 확인해 보거나 yaml을 생성할수있음. apiVersion: 오브젝트를 생성하기위한 API버전, A..
kubernetes namespace 쿠버네티스 namespace namespace란 클러스터내의 논리적인 단위로 분리 단위. 각자다른 클러스터환경에서 분리되어 운영되지 않으면 관리와사용적인 측면에서 어려움을 겪게된다. 따라서 쿠버네티스에선 운영목적에 따라 논리적인단위로 분리하여 구분할수있는 네임스페이스를 사용하게된다. ● 서비스목적에 따른 namespace ● 환경,운영에 따른 namespace ● 프로젝트별 namespace 쿠버네티스 default namespace 쿠버네티스 클러스터의 네임스페이스기본값은 4가지로 구성되어있다. 네임스페이스의 기본값은 dafult를 사용한다. # kubectl get namespaces ( or kubectl get ns ) NAME STATUS AGE default Active 331d kube-no..