https://kubernetes.io/ko/docs/tutorials/kubernetes-basics/deploy-app/deploy-intro/
kubectl을 사용해서 디플로이먼트 생성하기
목표 애플리케이션 디플로이먼트(Deployment)에 대해 배운다. kubectl로 첫 애플리케이션을 쿠버네티스에 배포한다. 쿠버네티스 디플로이먼트 일단 쿠버네티스 클러스터를 구동시키면, 그 위에 컨테
kubernetes.io
컨트롤러
- 애플리케이션을 설정 / 배포하는 것을 조금 더 편리하게 관리하기 위하여 컨트롤러라는 개념을 사용한다.
- 기본 오브젝트를 생성하고 이를 관리하는 역할을 해준다.
- Replication Controller(RC), Replication Set, DamonSet, Job, StatefulSet, Deployment가 있다.
Replication Controller
- 지정된 숫자로 팟을 기동시키고 관리하는 역할
- Selector : Pod Selector 라는 라벨을 기반으로 하여, RC가 관리한 Pod 을 가지고 오는데 사용
- Replica 수 : 이 숫자만큼의 팟을 유지하도록 한다.
- Pod Template : 팟 추가 기동시 Pod에 대한 정보 (도커 이미지, 포트, 라벨 등)
ReplicaSet
- Replication Controller의 새버전
- RC는 Equality 기반 Selector 이용 , Replica Set은 Set 기반의 Selector를 이용하는 차이가 있다.
배포방법 - 롤링 업데이트
- 많이 사용되는 배포방식중 하나
- 새 버전을 배포하며 인스턴스를 늘려나가고 기존버전을 하나씩 줄여나가는 방법
- 무장애 배포 가능
1. 3개의 Pod이 서비스 중
2. version2 배포를 위해 새 RC를 만들고 새 RC에 팟을 하나 붙이고 기존 RC에는 팟을 하나 뺀다
3. 같은 방식으로 v1 팟 수를 줄이고, v2의 팟 수를 늘린다.
4. 배포 완료
- RC를 2개 만들어야 하며, 리플리카의 수를 단계적으로 조절해야 한다.
Deployment(배포)
- 여러가지 배포 방식을 RC를 이용하여 구현할 수 있지만, 운영이 복잡해지는 단점이 있다.
- 이에 따라 쿠버네티스에서는 RC가 아닌 Deployment 라는 개념을 사용한다.
- Deployment는 기본적으로 RC를 생성하고, 이를 관리하는 역할을 한다.
쿠버네티스 디플로이먼트
- 클러스터를 구동시키면, 그 위에 컨테이너화된 애플리케이션을 배포할 수 있다.
- 디플로이먼트는 쿠버네티스가 애플리케이션의 인스턴스를 어떻게 생성하고 업데이트해야하는지를 지시한다.
- 디플로이먼트가 만들어진 후, 컨트롤 플레인이 해당 디플로이먼트에 포함된 애플리케이션 인스턴스가 클러스터의 개별 노드에서 실행되도록 스케줄링한다.
- 디플로이먼트 컨트롤러는 자신의 인스턴트들을 모니터링하며 구동중인 노드가 다운되거나 삭제되면 다른 노드의 인스턴스로 교체시켜준다 (자동복구 self-healling 매커니즘)
쿠버네티스에 첫 번째 애플리케이션 배포하기
Kubectl
- 쿠버네티스의 CLI
- 클러스터와 상호작용하기 위해 쿠버네티스 API를 사용한다.
hello-node 애플리케이션을 배포해보자
- Kubernetes 내부에서 실행 중인 팟은 분리된 개인 네트워크에서 실행되고 있다.
- 기본적으로 동일한 Kubernetes 클러스터 내의 다른 팟 및 서비스에서는 볼 수 있지만 해당 네트워크 밖에서는 볼 수 없다
- kubectl 명령은 통신을 클러스터 전체의 전용 네트워크로 전달하는 프록시를 생성할 수 있다
- 프록시를 실행할 두 번째 터미널 창을 이용한다.
- 프록시를 사용하면 이러한 터미널에서 API에 직접 액세스할 수 있다.
- API 서버는 팟 이름을 기반으로 프록시를 통해 액세스할 수 있다.
- 프록시를 사용하지 않고도 새 배포에 액세스할 수 있으려면 다음 모듈에서 설명하는 서비스가 필요하다.
'Devops > kubernetes' 카테고리의 다른 글
쿠버네티스 실습 4 - 앱 노출하기 (0) | 2021.06.18 |
---|---|
쿠버네티스 실습 3 - 앱 조사하기 (0) | 2021.06.18 |
쿠버네티스 실습 1 - 클러스터 생성 (0) | 2021.06.18 |
Kubernetes(쿠버네티스) 실습 2 (service/load balancer/ingress) (0) | 2021.06.01 |
Kubernetes(쿠버네티스) 실습 1 (kubectl/pod/replicaset/deployment) (0) | 2021.06.01 |