본문 바로가기

Container/Kubernetes

[K8S] Job Controller Job이란 Kubernetes는 Pod를 running 중인 상태로 유지 Batch 처리하는 Pod는 작업이 완료되면 종료된다. Batch 처리에 적합한 컨트롤러로 pod의 성공적인 완료를 보장한다. - 비정상 종료 시 다시 실행 - 정상 종료 시 완료 [master ~]$ kubectl run testpod --image=centos:7 --command sleep 5 pod/testpod created [master ~]$ kubectl get pods --watch NAME READY STATUS RESTARTS AGE testpod 0/1 ContainerCreating 0 5s testpod 1/1 Running 0 9s testpod 0/1 Completed 0 14s testpod 1/1 R.. 더보기
[K8S] Statefulset Statefulset Pod의 상태를 유지해주는 컨트롤러 - Pod 이름 - Pod 의 볼륨(스토리지) Pod이름 : Hash값으로 Random으로 만들어진다. serviceName이라는 Field를 가지고 동작한다. # DaemonSet처럼 노드당 하나씩 보장해주는 것은 아님. # 파드의 이름을 보장해줄 뿐이다. [master ~]$ cat > rc-nginx.yaml apiVersion: v1 kind: ReplicationController metadata: name: rc-nginx spec: replicas: 3 selector: app: webui template: metadata: name: nginx-pod labels: app: webui spec: containers: - name: n.. 더보기
[K8S] DaemonSet DaemonSet전체 노드에서 특정 Pod가 한 개씩 실행되도록 보장각 노드에 동일한 워크로드 (ex: 로그 수입기, 모니터링 에이전트)와 같은 프로그램 실행 시 적용 DaemonSet의 주요 특징모든 노드에서 실행 보장:DaemonSet은 클러스터의 모든 노드에 동일한 Pod를 하나씩 실행 한다.새 노드가 클러스터에 추가되면 DaemonSet은 자동으로 해당 노드에 Pod를 생성시킨다.특정 노드에만 실행 가능:라벨과 Node Selector를 사용해 특정 노드에서만 실행하도록 제한 가능.노드에서 Pod 제거:노드가 삭제되거나 DaemonSet이 수정되면 Pod도 자동으로 제거.자동 관리:노드 추가, 삭제, 스케줄링 등 모든 작업을 DaemonSet이 자동으로 처리.DaemonSet의 사용 사례로그 수집.. 더보기
[K8S] Deployment - RollingUpdate Deployment : Rolling update를 위해 만들어진 API resourceReplicaSet을 컨트롤해서 Pod수 조절Rolling update & Rollling Back A rolling update allows a Deployment update to take place with zero downtime. It does this by incrementally replacing the current Pods with new ones. The new Pods are scheduled on Nodes with available resources, and Kubernetes waits for those new Pods to start before removing the old Pods.=> .. 더보기
[K8S] ReplicaSet ReplicaSet (RS)- ReplicaController와 같은 역할(=Pod의 갯수 보장)을 하는 컨트롤러- ReplicaController보다 풍부한 Selector 지원 # Self HealingKubernetes는 ReplicaSets 및 Replication Controller를 통해 Self Healing 응용프로그램을 지원한다. Replication Controller 는 POD 내의 응용프로그램이 충돌할 때 자동으로 POD가 다시 생성되도록 도와준다.응용프로그램의 replicas가 항상 충분히 실행될 수 있도록 도와준다.selector:  matchLabels:    component: redis  matchExpressions:    - {key:tier, operator: In, .. 더보기
[K8S] ReplicationController Controller란?Pod 의 개수를 보장Replication Controller (가장 BASIC한 Controller)요구하는 Pod의 개수를 보장하며 파드 집합의 실행을 항상 안정적으로 유지하는 것을 목표요구하는 Pod의 개수가 부족하면 template을 이용해 Pod cnrk요구하는 Pod 수보다 많으면 최근에 생성된 Pod 삭제기본 구성 : selector를 replicas 갯수만큼 만들려고 보장해준다selectorreplicastemplate구식의 기술로 최근에는 Replica Set으로 대체되고 있다. # 실습[master ~]$ cat > rc-nginx.yaml apiVersion: v1kind: ReplicationControllermetadata: # ReplicationCont.. 더보기
[K8S] Pod 환경 변수 설정 환경 변수 Pod 내의 컨테이너가 실행될 때 필요로 하는 변수 컨테이너 제작 시 미리 정의 NGINX Dockerfile 예 ENV NGINX_VERSION 1.19.2 ENV NJS_VERSION 0.4.3 Pod 실행 시 미리 정의된 컨테이너 환경변수를 변경할 수 있다. # kubeconfig 환경 변수 kubectl은 기본적으로 $HOME/.kube/config 파일에서 클러스터, 인증, 컨텍스트 정보로 읽어 들인다. ✔️ 이러한 클러스터 구성 정보 => kubeconfig root@master:~# kubectl api-resources NAME SHORTNAMES APIVERSION NAMESPACED KIND bindings v1 true Binding componentstatuses cs v.. 더보기
[K8S] Pod Resource 할당 Default로는 container는 리소스 할당에 대한 제한이 없다.No limit, No request : 하나의 파드가 모든 리소스를 사용할 수 있고, 2번째 Pod가 필요한 리소스를 할당받는데 방해한다.Resource Request 어느 노드가 실행해주면 좋을 지를 scheduler가 판단한다. 컨테이너가 실행되기 위해 최소한으로 필요한 메모리의 양을 정의한다.Kubernetes 스케줄러는 이 값을 기반으로 Pod을 스케줄링할 노드를 결정한다.Request는 보장된 자원으로, 다른 컨테이너가 이 메모리를 빼앗아 사용할 수 없다. Pod가 실행되려면 노드에 Request 값 이상의 사용 가능한 메모리가 있어야 한다.노드가 과부하 상태가 되면, Request가 낮은 Pod가 우선적으로 제거될 수 있음.. 더보기