본문 바로가기

전체 글

(21)
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 create & apply 차이점? 쿠버네티스 create VS apply 차이점 쿠버네티스의 Pod 를 배포하는 명령어로 kubectl create 와 kubectl apply 의 두가지 명령어가있다. ●kubectl create : 명령형 관리를 위한것 create는 새로운 리소스를 생성하고 리소스가 이미 존재하면 error가 발생함 ●kubectl apply : 선언적 관리를 위한것 apply는 기존리소스에 변경사항을 적용시켜주고 유지관리시켜줌 리소스가 이미 존재하면 error없이 변경사항만 적용 command 리소스가 존재하지 않을 경우 리소스가 이미 존재할 경우 create 새로운 리소스가 생성 ERROR가 발생 apply 새로운 리소스가 생성 리소스를 구성 (부분적인 spec을 적용) replace ERROR가 발생 리소스가 삭..
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 infra container pause kubernetes infra container (pause) 쿠버네티스에서 파드가 실행될때 pause 라는 컨테이너가 항상 실행되는데 이를 infra container 라고 부름 pause 컨테이너의 역할은 파드에 대한 infra 즉 IP,host를 관리하고 생성해준다. 컨테이너가 삭제되면 pause도 함께 삭제된다.
kubernetes init container kubernetes init container 초기화컨테이너(init container)는 APP컨테이너가 실행되기전에 파드를 초기화 해준다 초기화컨테이너는 여러개를 구성할 수 있다. 초기화컨테이너의 실행이 실패하면 성공할 때까지 재시작된다. 즉 필요한 명령,제어,조건들을 순서대로 실행하는데 사용 초기화컨테이너가 성공해야 APP컨테이너 실행된다. 초기화컨테이너는 파드가 모두 준비되기전에 실행한 후 종료되는 컨테이너이기 때문에 Probe기능을 지원하지 않는다. 초기화컨테이너는 파드가 재시작 되었다면 반드시 다시 실행된다. APP컨테이너 즉 Main container를 실행하는데 있어 init container 기능을 활용하여 메인컨테이너가 요구하는 환경,조건이 제데로 구성되어있는지 점검하고 완료되면 메인컨..
kubernetes Probe? self-healing kubernetes Probe self-healing 쿠버네티스 Probe self-healing 이란 kubelet에 의해 컨테이너를 주기적으로 체크해서 컨테이너를 재시작하거나 문제가있는 파드(컨테이너)를 중지 시키는 진단기능 이다 쿠버네티스는 총3가지의 probe를 제공한다. ●livenessprobe 매커니즘 쿠버네티스에서 제공하는 self-healing 기능 중 하나 컨테이너 마다 지정할수있음. 컨테이너가 동작할수있는지 확인하고 동작하지 않거나 문제가 발생할경우 정책에따라 재시작한다 livenessprobe를 컨테이너에 지정하지않으면 기본값은 success 즉 진단에성공했다고 판단함. 컨테이너(APP)의 용도,목적에 따라 livenessprobe 3가지의 매커니즘으로 관리할수있다. ● httpGe..
kubernetes pod kubernetes pod 컨테이너를 표현하는 k8s API의 최소단위 pod에는 1개또는 여러개의 컨테이너를 포함시킬수있음 kubernetes pod 생성 CLI명령어를 통한 생성방법 ( run,create,apply ,dry-run 등등) yaml을 통한 생성방법 kubectl cli 명령어를 통한 pod 생성방법. yaml을 통한 생성방법 직접 템플릿을 작성할때 리눅스환경의 vi,vim,nano편집기로 작성하는것 보단 vscode로 작성하는게 좋음...들여쓰기,띄어쓰기,대소문자구문 등.. 또한 #kubectl run [파드명] --image=[이미지명] --dry-run -o yaml 명령어를 통해 템플릿을 만들어서 안에 내용만 수정해도됨 multi pod(한개의pod안에 두개이상의 컨테이너) 구성..
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..