오답노트
[k8s] 컨테이너 배포/통신/볼륨 관리 본문
Kubernetes Object
가장 기본적인 구성단위로 상태를 관리하는 역할을 한다. 기본적인 오브젝트로는 Pod, Service, Volume, Namespace가 있다
.
오브젝트는 Spec(정의된 상태)와 Status(현재 상태)가 존재한다.
Namespace는 단일 클러스터 내 리소스 그룹 격리를 위한 오브젝트이다. 이는 사용자가 여러 팀으로 구성하는 경우, 프로젝트를 진행함에 있어 환경을 분리 해야 하는 경우 사용한다.
Kubernetes Controller
각 컨트롤러는 현재 상태(Status)를 정의된 상태(Spec)에 가깝게 유지하려 한다.
- 관찰 : 현재 상태를 관찰한다.
- 상태 변동 : 현재 상태와 정의한 상태를 비교한다.
- 조치 : 현재 상태를 정의한 상태로 변경한다. 그리고 다시 관찰 단계로 돌아간다.
Auto Healing
쿠버네티스에는 Pod나 Node가 손상되었거나 정상작동을 하지 못할때 이를 자동적으로 정상상태로 돌리는 기능이 있다. 그것이 Auto Healing이다. 먼저 Controller에서는 계속해서 각 pod들을 모니터링하고 있기 때문에 기능에 문제가 발생하면 즉시 인지하고 처리할 수 있다.
Auto Scaling
리소스 부하가 커지면 pod의 수를 늘리고, 작아지면 pod의 수를 줄인다.
Update & Rollback
버전을 업데이트 하거나 되돌릴 수 있다.
Update Flow
Update 방식에는 Recreate와 Rolling Update가 있다.
Recreate : 현재 운영중인 Pod를 삭제하고 업데이트 된 Pod들을 생성(DownTime 발생)
Rolling Update : 먼저 업데이트된 Pod를 하나 생성하고 구버전의 Pod를 삭제하여 Downtime 없이 업데이트 가능 (리소스가 여유가 있을 때 사용가능)
Rollback
Deployment는 이전버전의 ReplicaSet을 10개까지 저장(revisionHistoryLimit 속성을 설정하면 개수를 변경 가능)
Deployment
ReplicaSet을 관리하여 애플리케이션의 배포를 더욱 세밀하게 관리(버전 업데이트 or 롤백)한다.
ReplicaSet란 Pod 개수를 유지시켜준다. yaml 을 작성할 때 replica 개수를 지정하면 그 개수에 따라 pod의 개수를 유지한다
업데이트 시 ReplicaSet의 Replicas를 0으로 만들어 롤백시 에 사용한다.
kubectl은 Kubernetes에 명령을 내리는 CLI(Command Line Interface) 이다. 오브젝트와 컨트롤러를 생성, 수정, 삭제 등 명령을 입력할 수 있다.
Yaml
Yaml은 오브젝트를 정의하는 파일양식이다.
Yaml 구조는 아래와 같다.
- apiVersion : 연결할 API server의 버전
- kind : 리소스의 유형
- metadata : 리소스가 기본 정보를 갖고 있는 필드 name, label, namespace 등
- spec : 배포되는 리소스의 원하는 상태
'Infra > Kubernetes' 카테고리의 다른 글
[k8s] 쿠버네티스 배포 유형 (0) | 2022.11.06 |
---|---|
[k8s] 쿠버네티스 컴포넌트 (0) | 2022.11.06 |
[k8s] 가상머신과 컨테이너의 차이 그리고 쿠버네티스 (0) | 2022.11.06 |