Job Controller 쿠버네티스의 가장 기본적인 특징은 Pod를 항상 Running 중인 상태로 보장해준다는 것이다. 하지만 배치 처리처럼 특정 시점에만 Pod가 필요하다면 Job 컨트롤러를 사용하는 것이 해답이 될 수 있다. Job Controller에 의해서 Pod를 실행시키면 해당 Job에 대한 결과(정상인지에 대한 여부)를 점검해서 비정상으로 종료되었을 경우에는 다시 재시작해준다는 특징이 있다. 실습 예시 1) restartPolicy: Never - job-exam.yaml 파일 apiVersion: batch/v1 kind: Job metadata: name: centos-job spec: # completions: 5 # parallelism: 2 # activeDeadlineSecon..
StatefulSet StatefulSet은 상태(Pod 이름, Pod 볼륨)를 보존해주는 컨트롤러이다. Pod를 생성할 때 NAME 뒤에 추가되는 5자리의 문자는 랜덤으로 생성된 Hash 값이다. 컨트롤러에 의해 만들어진 모든 Pod는 이와 같이 랜덤 해시 값이 붙은 형태로 Pod 이름이 형성된다. 특정 Pod를 지우고 다시 실행되는 Pod의 이름을 보면 이전과 달라진 해시값을 가진다. 즉, Pod의 이름이 보장되지 않는다는 것을 의미한다. 이전까지 배운 컨트롤러는 'Pod의 개수를 보장'해주었지만 Pod의 이름을 보장해주지는 않았다. StatefulSet은 다른 컨트롤러와 다르게 아래 두 가지를 보장해주는 컨트롤러이다. 1) Pod 이름 2) Pod 저장소 (스토리지, 볼륨) Pod 이름을 어떻게 보..
이전 포스팅에서 다룬 컨트롤러 - ReplicationController: 컨트롤러의 가장 근본적인 역할을 하는 컨트롤러로 Pod의 개수를 보장 - ReplicaSet: 풍부한 label을 지원하여 다양한 조건에 해당하는 Pod 개수 보장 - Deployment: ReplicaSet을 컨트롤하며 Rolling Update를 지원 -> 결국 세 개의 컨트롤러는 모두 'Pod의 개수를 보장'하는 것이 주요 역할이었던 컨트롤러였다. DaemonSet도 Pod의 개수를 보장하지만 다른 컨트롤러와 비교해보면 약간 성격이 다르다. DaemonSet - 이전에 다룬 다른 컨트롤러와 달리 DaemonSet은 노드 당 1개씩의 Pod를 보장하는 컨트롤러이다. - 운영 중에 노드가 추가되면 추가된 노드 개수만큼 Pod를 ..
Deployment - Controller인 ReplicaSet을 제어해주는 부모 역할을 한다. - Deployment는 Rolling Update를 목적으로 만들어졌다. - Deployment를 만들면 Deployment가 ReplicaSet을 만든다. 이때 Deployment는 실행시킬 Pod의 버전과 replicas를 ReplicaSet에게 전달한다. 그 후엔 ReplicaSet이 전달받은 정보를 기반으로 Pod를 생성하고 Pod 수를 보장하게 된다. - 즉, Deployment가 ReplicaSet을 컨트롤하고 ReplicaSet이 Pod를 컨트롤하는 구조이다. - 정리하자면, Deployment는 ReplicaSet Controller를 관리해서 Pod 수를 보장하고, 추가적으로 Rolling ..
ReplicaSet Controller - RC(ReplicationController)와 같은 역할을 하는 컨트롤러이다. - RC보다 다양한 형태의 selector를 지원한다. 이때 selector 필드 아래 matchLabels, matchExpressions 필드를 사용한다. - matchLabels만 사용하면 RC와 같다. (label에 대한 AND 연산) - matchExpressions까지 사용하면 다양한 형태로 표현할 수 있다. - RC, RS 모두 label과 selector 만을 기반으로 Pod를 컨트롤한다. 즉, 어떤 컨테이너인지는 관여하지 않는다. RC vs RS Definition 비교 출처: https://github.com/237summit/Getting-Start-Kuberne..
이번 포스팅에서는 쿠버네티스의 컨트롤러 중에서 ReplicationController에 대해 다룬다. ReplicationController - 요구하는 Pod의 개수를 보장하는 가장 기본적인 컨트롤러 역할을 한다. - 요구하는 Pod 개수가 부족하면 template을 이용해 Pod를 추가한다. - 요구하는 Pod 수보다 많으면 최근에 생성된 Pod를 삭제한다. ReplicationController의 기본 구성 - selector - replicas - template RC Definition 예시 - label은 key:value 형태로 정의된다. - selector에서 정의한 :와 같은 label을 가진 Pod를 replicas 만큼 운영한다. - 컨트롤러는 현재 운영되고 있는 Pod들을 모니터링하..
컨테이너 리소스 할당 개론 - 쿠버네티스가 관리하는 리소스는 CPU와 Memory이다. - 기본적으로 컨테이너 단위로 리소스를 제한한다. 리소스를 제한하지 않을 경우 발생할 수 있는 문제 1) starvation 리소스를 제한하지 않으면 해당 노드에 할당된 컨테이너는 노드의 리소스를 전부 다 사용할 수 있다. 따라서 만약 리소스 제한을 두지 않고 특정 호스트에 Pod를 두 개 이상 띄웠을 경우, 하나의 Pod가 노드의 모든 리소스를 사용한다면 새로운 Pod가 스케줄링될 수 없다. 2) 보안 관련 이슈 만약 특정 Pod에 보안 관련 버그가 발생해서 해커가 해당 Pod에 디도스 공격을 주어 노드의 모든 리소스를 사용하게 된다면, 다른 Pod들은 스케줄링될 수 없다. ** 따라서 Pod 하나를 띄우더라도 해당..
쿠버네티스가 제공해주는 기능 10가지 쿠버네티스 공식 사이트에 들어가면 쿠버네티스가 제공해주는 10가지 기능에 대해 설명되어 있다. 이중에서도 자가 치유(Self-healing)에 대한 부분을 이번 포스팅에서 다루도록 한다. 자가 치유(Self-healing) 오류가 발생한 컨테이너를 재시작하고, 노드가 죽었을 때 컨테이너를 교체하기 위해 다시 스케줄 하고, 사용자 정의 상태 체크에 응답하지 않는 컨테이너를 제거하며, 서비스를 제공할 준비가 될 때까지 클라이언트에 해당 컨테이너를 알리지 않는다. 즉, 정상적인 컨테이너들만을 대상으로 애플리케이션을 운영해 주겠다는 의미이다. Self-handling 기능중에 포함된 것이 'livenessProbe'이다. livenessProbe는 컨테이너를 진단해서 정상적..
- Total
- Today
- Yesterday
- helm
- argocd
- Kubernetes
- Linux
- container
- kafka
- ci/cd
- CICD
- Stream
- rolling update
- db
- K8s
- 쿠버네티스
- RDB
- 컨트롤러
- ubuntu
- golang
- Controller
- jvm
- 카프카
- docker
- LFCS
- 우분투
- go
- github actions
- Java
- spring
- Non-Blocking
- 코틀린
- GitOps
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |