본문 바로가기
반응형

k8s36

[k8s]Kubernetes - 멀티마스터 쿠버네티스 클러스터 쿠버네티스 클러스터를 직접 구성하는 도구 kubeadm 쿠버네티스에서 공식 제공하는 클러스터 생성/관리 도구 kubespray 쿠버네티스 클러스터를 배포하는 오픈소스 프로젝트 다양한 형식으로 쿠버네티스 클러스터 구성 가능 온프레미스에서 상용 서비스 클러스터 운영 시 유용 쿠버네티스 클러스터 구성 control plane(master node) 워커 노드들의 상태를 관리하고 제어 Highly Available(HA) cluster 운영 API는 loadbalancer를 통해 워커 노드에 노출 최소 3개의 중첩된 control plane을 구성(5, 7개의 master nodes) worker node 도커 플랫폼을 통해 컨테이너를 동작하며 실제 서비스 제공 Multi-master(HA) 클러스터 구성 fl.. 2023. 3. 7.
[k8s]Kubernetes - CronJob CronJob CronJob안에 Job 컨트롤 기능 포함 사용자가 원하는 시간에 Job 실행 예약 지원 Job 컨트롤러로 실행할 애플리케이션 파드를 주기적으로 반복해서 실행 Linux의 cronjob의 스케줄링 기능을 Job Controller에 추가한 API 반복해서 실행하는 Job을 운영해야 할 때 사용 Data Backup Send email Cleaning tasks log file 정리 garbagage 제거 CronJob을 통해 작업을 예약하려면 CronJob 포맷에 맞게 작업 예약시간을 걸어줘야 함 CronJob Schedule: " 0 3 1 * * " Minutes (from 0 to 59) Hours (from 0 to 23) Day of the month (from 1 to 31) M.. 2023. 3. 4.
[k8s]Kubernetes - Job Controller Job Controller Kubernetes는 pod를 running 중인 상태로 유지 동작 후 5초뒤 종료하는 pod를 생성하면 동작과 종료를 계속 반복함 Batch 처리하는 Pod는 작업이 완료되면 종료됨 백업을 하는 경우, 백업이 완료되면 종료되어야 함 Batch 처리에 적합한 컨트롤러로 Pod의 성공적인 완료를 보장 비정상 종료 시 다시 실행 정상 종료 시 완료 완료 시 pod가 삭제되는 것은 아님 Job Controller Definition Image가 배치 작업이어야 함 set up garbage data clear log 주기적 forwarding restartPolicy Never Pod restart OnFailure 컨테이너 restart Job example 변수 completio.. 2023. 3. 3.
[k8s]Kubernetes - StatefulSet StatefulSet Pod의 상태를 유지해주는 컨트롤러 Pod 이름 Pod는 생성될 때 random하게 hash값을 받아 생성 됨 Controller에 의해 Pod가 삭제되고 생성될 때 Pod 이름 보장 x StatefulSet은 Pod의 이름을 보존 Pod의 볼륨(스토리지) StatefulSet Definition Service 이름과 Pod이름을 연결시켜서 코어DNS 도메인 이름으로 사용 StatefulSet volume example create -f를 통해 StatefulSet 실행 kubectl create -f statefulset-exam.yaml get을 통해 StatefulSet, Pod 확인 kubectl get statefulset kubectl get pods scale을 통해 s.. 2023. 3. 3.
[k8s]Kubernetes - DaemonSet DaemonSet 전체 노드에서 Pod가 한 개씩 실행되도록 보장 워커 노드 추가 되면 Pod 한 개 추가 워커 노드 삭제 되면 Pod 한 개 삭제 Pod에 문제가 생기면 Pod 삭제 후 새로 생성 로그 수입기, 모니터링 에이전트와 같은 프로그램 실행 시 적용 DaemonSet Definition DaemonSet example create -f를 통해 DaemonSet 실행 kubectl create -f daemonset-exam.yaml get을 통해 DaemonSet, Pod 확인 kubectl get daemonset kubectl get pods delete를 통해 DaemonSet 삭제 kubectl delete daemonsets.apps daemonset-nginx DaemonSet Ro.. 2023. 3. 3.
[k8s]Kubernetes - Deployment & Rolling Update Deployment ReplicaSet을 제어해주는 부모 역할 ReplicaSet을 컨트롤해서 Pod수를 조절 Deployment의 목적 Rolling Update & Rolling Back Rolling Update란? 서비스의 중단 없이 버전을 업데이트 하는 것 pod 인스턴스를 점진적으로 새로운것으로 업데이트 Deployment definition Rolling Update 기능을 제외하면 ReplicaSet과 Deployment 똑같음 Deployment example create -f를 통해 Deployment 실행 kubectl create -f deploy-nginx.yaml get을 통해 Deployment, ReplicaSet, Pod 확인 kubectl get deployments ku.. 2023. 2. 23.
[k8s]Kubernetes - ReplicaSet ReplicaSet ReplicationController와 같은 역할을 하는 컨트롤러 성격 = pod의 개수 보장 ReplicationController보다 풍부한 selector matchLabels 연산자 까지는 ReplicationController와 동일 key:value matchExpressions 연산자 In: key와 values를 지정하여 key, value가 일치하는 Pod만 연결 NotIn: key는 일치하고 value는 일치하지 않는 Pod에 연결 Exists: key에 맞는 label의 Pod를 연결 DoesNotExist: key와 다른 label의 Pod를 연결 ReplicationController/ReplicaSet Definition ReplicaSet Selector .. 2023. 2. 23.
[k8s]Kubernetes - Controller/ReplicationController Controller란 Pod의 개수를 보장 스케줄러는 파드를 노드에 알맞게 배치, 컨트롤러는 파드의 개수를 보장 컨트롤러가 보장중인 파드 중 한개가 다운되어 수가 적어질 경우 컨트롤러가 파드를 하나 생성하여 보장 개수를 맞춰줌 보장하는 Pod의 구분은 레이블을 이용 Controller 종류 Replication Controller 가장 기본적인 컨트롤러 요구하는 Pod의 개수를 보장하며 파드 집합의 실행을 항상 안정적으로 유지하는 것을 목표로 함 요구하는 Pod의 개수가 부족하면 template를 이용해 Pod를 추가 요구하는 Pod의 수 보다 많으면 최근에 생성된 Pod를 삭제 기본 구성 selector replicas template selector의 key: value에 해당하는 레이블을 갖는 컨테.. 2023. 2. 21.
[k8s]Kubernetes - Pod 환경 변수 & 구성 패턴 환경변수 Pod내의 컨테이너가 실행될 때 필요로 하는 변수 컨테이너 제작 시 미리 정의 NGINX Dockerfile의 예 ENV(환경변수) [환경변수 이름] [환경변수 값] ENV NGINX_VERSION 1.19.2 ENV NJS_VERSION 0.4.3 Pod 실행 시 미리 정의된 컨테이너 환경변수를 변경할 수 있음 미리 정의된 환경변수를 입력한 기존의 환경변수 값으로 변경 미리 정의된 환경변수를 입력한 새로운 환경변수 값으로 변경 환경변수 사용 예 환경변수 변경 여러개 작성 가능 Pod 구성 패턴의 종류 Pod를 구성하고 실행하는 패턴 multi-container Pod Sidecar Pod, Sidecar Container 단독으로 혼자서 움직일 수 없는 pod의 형태 웹 서버 컨테이너의 로그를.. 2023. 2. 20.
[k8s]Kubernetes - Pod에 Resource 할당하기 Pod에 리소스(cpu, memory) 할당하기 pod에 리소스 제한을 하지 않으면 하나의 pod가 노드의 리소스를 전부 다 사용할 수도 있음 같은 노드의 다른 pod는 사용할 리소스가 없을 수 있음 특정 pod가 해킹당해 리소스를 다 잡아먹으면 다른 pod가 제대로 동작을 못하는 상황이 발생할 수 있음 Pod 리소스 요청 및 제한 Resource Requests 파드를 실행하기 위한 최소 리소스 양을 요청 Resource Limits 파드가 사용할 수 있는 최대 리소스 양을 제한 Memory limit을 초과해서 사용되는 파드는 종료(OOM Kill)되며 다시 스케줄링 됨 Resource 단위 memory Gib, Mib, Kib 등으로 표현 1Gib = 1024Mib, 1Mib = 1Kib CPU c.. 2023. 2. 20.
[k8s]Kubernetes - static pod(kubelet daemon) static Pod 특정 노드의 kubelet daemon에 의해 동작되는 Pod API에게 요청 보내지 않음 kubelet daemon이 관리하는 static pod directory(dir/)에 yaml파일을 저장하면 알아서 컨테이너 실행하고 yaml 파일 지우면 알아서 컨테이너 삭제 보통 /etc/kubernetes/manifests/ 디렉토리가 static pod 디렉토리 노드의 /var/lib/kubelet/config.yaml 파일안에서 static pod 디렉토리 확인 가능 /var/lib/kubelet/config.yaml 파일안의 static pod 디렉토리 수정시 kubelet deamon은 restart 필수 스케줄러가 pod를 생성할 노드를 정해주는 것이 아닌 사용자가 직접 지정 가.. 2023. 2. 17.
[k8s]Kubernetes - init/infra container init container 앱 컨테이너 실행 전에 미리 동작시킬 컨테이너 본 컨테이너가 실행되기 전에 사전 작업이 필요한 경우 사용 로그인 컨테이너가 실행되기 전 db에 접속하여 내용을 받아오는 사전 작업이 필요한 경우 앱을 실행하기 전에 네트워크 점검이 필요한 경우 등 init container가 모두 실행된 후에 앱 컨테이너를 실행 init container example init-myservice, init-mydb라는 init container와 myapp-container라는 메인 컨테이너를 만드는 yaml파일 메인 컨테이너는 init container가 모두 실행되어야 실행 init-myservice, init-mydb는 제대로 동작되지 않으면 계속 'wating for myservice'라는.. 2023. 2. 16.
반응형