0223
deployment
레플리카셋, 포드의 배포, 업데이트 등을 관리
디플로이먼트 생성, 삭제
#1 디플로이먼트 정의
파드를 3개 유지시킨다
kubectl get deployment,replicaset,pod
순차적으로 나온다
파드가 함께 사라진다
앞에서 나온 레플리카셋과 동일한 개념이다
--> 디플로이먼트를 사용하는 이유는 무엇인가?
- 어플리케이션 업데이트와 배포를 편하게 하기 위해서 사용
업데이트와 배포를 편하게 한다는 것은 어떤 의미인가?: 버전 관리를 한다!
여러 개의 서버에 서버당 컨테이너가 몇백개가 돌아가는 환경에서 어떻게 돌아가게 할ㄲㅏ 고려하고 만든 것.
디플로이먼트는 컨테이너나 어플리케이션을 배포하고 업데이트 하는 것을 용이하게 하기 위해 만드는 것이다
포드의 상태--> 기존에 만들어져있던 것들은 디플로이먼트로 생성했을 때 만들어지는 것들
1.10 버전은 종료되고
1.11버전은 새롭게 생성된다
하나의 서버만 가지고 업그레이드 하는 것은 한계가 있다--> 분산시켜서 병렬로 만들어서 사용자들의 접속을 분산시킨다
증설될 수 있도록 만들 때 포트를 여러개 만든다
kubectl get replicaset
NAME DESIRED CURRENT READY AGE
my-nginx-deployment-9b5988dd 0 0 0 9m32s <-- 처음 생성했던 레플리카셋
my-nginx-deployment-d4659856c 3 3 3 6m41s <-- 새롭게 생성된 레플리카셋
이전 레플리카셋이 유지되는 것을 확인할 수 있음
포드의 이미지를 바꿨더니 예전 것을 바꿔주는 것을 알 수 있다!
서비스가 매끄럽게 업그레이드 되는 것을 알 수 있음 --> 스케일 업
필요에 따라 내가 원하는 버전으로 롤백 가능
이전 버전의 레플리카셋으로 롤백!
롤백하니 이전 레플리카셋이 올라왔다
kubectl describe deployment my-nginx-deployment
총 세 개의 버전이 있다는 뜻
히스토리는 생성된 레플리카셋의 갯수와 동일하다고 볼 수 있다
객체의 갯수만큼 가져간다!
service
포드를 연결하고 외부에 노출시키는 역할을 한다
-
yaml파일 정의시 컨테이너 포트 항목을 정의했다고 해서 해당 포드가 바로 외부에 노출되는 것은 아님
-
해당 포트로 사용자가 접근하거나 다른 디플로이먼트의 포트들이 내부적으로 접근하려면 서비스 객체가 필요
-
여러 개의 포드에 쉽게 접근할 수 있도록 고유한 도메인 이름 부여
-
ㄴ여러 개의 포드에 접근할 때, 요청을 분산하는 로드 밸런서 기능
-
클라우드 플랫폼 로드 밸런서, 클러스터 노드 포트 등을 통해 포드를 외부에 노출
-
서비스의 종류
-
ClusterIP 타입
- 쿠버네티스 내부에서만 포드들에 접근할 때 사용
- 외부로 포드를 노출하지 않기 때문에 쿠버네티스 클러스터 내부에서만 사용되는 포드에 적합
-
NodePort 타입
- 포드에 접근할 수 있는 포트를 클러스터의 모든 노드에 동일하게 개방
- 외부에서 포드에 접근할 수 있는 서비스 타입
- 접근할 수 있는 포트는 랜덤으로 정해지지만, 특정 포트로 접근하도록 설정할 수 있음
- 내가 80포트로 액세스 가능하도록 하면 서비스 컨테이너로 연결하도록 돕는것
-
LoadBalancer 타입
- 클라우드 플랫폼에서 제공하는 로드 밸런서를 동적으로 프로비저닝해 포드에 연결
- AWS/GKC와같은 클라우드에서 제공하는 것 ㅅㅏ용하는..
- NodePort 타입과 마찬가지로 외부에서 포드에 접근할 수 있는 서비스 타입
- 일반적으로 AWS,GCP와 같은 클라우드 플랫폼 환경에서 사용
--> 파드의 호스트이름을 반환하는 웹 서버 이미지
클러스터 IP 타입의 서비스- 쿠버네티스 클러스터 내부에서만 파드에 접근가능
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hostname-svc-clusterip ClusterIP 10.97.51.221 <none> 8080/TCP 7s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 25h
=> 쿠버네티스 api 에 접근하기 위한 서비스
로드 밸런싱: 요청이 들어오면 여유 있는 파드에게 넘긴다
서비스는 이름이 있어서 이름으로 접근가능함
쿠버네티스는 어플리케이션이 서비스나 포드를 쉽게 찾을 수 있도록 내부 DNS(이름을 ip로 바꿔주는 서비스)를 구동하고 있다
Author And Source
이 문제에 관하여(0223), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@6democratickim9/0223저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)