티스토리 뷰
7탄!! 쿠버네티스에 pod 올리자! pod? 뭐에요?
부록!! 쿠버네티스 장애 처리5탄7탄!! 쿠버네티스에 pod 올리자! pod? 뭐에요?
부록!! 쿠버네티스 장애 처리5탄부록!! 쿠버네티스 장애 처리
쿠버네티스 오토스케일링(kubernetes autoscaling)
디플로이먼트
디플로이먼트 는 파드와 레플리카셋에 대한 선언적 업데이트를 제공한다.
디플로이먼트에서 의도하는 상태 를 설명하고, 디플로이먼트 컨트롤러(Controller) 는 현재 상태에서 의도하는 상태로 비율을 조정하며 변경한다. 새 레플리카셋을 생성하는 디플로이먼트를 정의하거나 기존 디플로이먼트를 제거하고, 모든 리소스를 새 디플로이먼트에 적용할 수 있다.
참고: 디플로이먼트가 소유하는 레플리카셋은 관리하지 말아야 한다. 사용자의 유스케이스가 다음에 포함되지 않는 경우 쿠버네티스 리포지터리에 이슈를 올릴 수 있다.
유스케이스
다음은 디플로이먼트의 일반적인 유스케이스이다.
- 레플리카셋을 롤아웃 할 디플로이먼트 생성. 레플리카셋은 백그라운드에서 파드를 생성한다. 롤아웃 상태를 체크해서 성공 여부를 확인한다.
- 디플로이먼트의 PodTemplateSpec을 업데이트해서 파드의 새로운 상태를 선언한다. 새 레플리카셋이 생성되면, 디플로이먼트는 파드를 기존 레플리카셋에서 새로운 레플리카셋으로 속도를 제어하며 이동하는 것을 관리한다. 각각의 새로운 레플리카셋은 디플로이먼트의 수정 버전에 따라 업데이트한다.
- 만약 디플로이먼트의 현재 상태가 안정적이지 않은 경우 디플로이먼트의 이전 버전으로 롤백한다. 각 롤백은 디플로이먼트의 수정 버전에 따라 업데이트한다.
- 더 많은 로드를 위해 디플로이먼트의 스케일 업.
- 디플로이먼트 일시 중지로 PodTemplateSpec에 여러 수정 사항을 적용하고, 새로운 롤아웃의 시작을 재개한다.
- 롤아웃이 막혀있는지를 나타내는 디플로이먼트 상태를 이용.
- 더 이상 필요 없는 이전 레플리카셋 정리.
디플로이먼트 생성
다음은 디플로이먼트의 예시이다. 예시는 3개의 nginx 파드를 불러오기 위한 레플리카셋을 생성한다.
nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
이 예시에 대한 설명은 다음과 같다.
-
.metadata.name 필드에 따라 nginx-deployment 이름으로 디플로이먼트가 생성된다.
-
.spec.replicas 필드에 따라 디플로이먼트는 3개의 레플리카 파드를 생성한다.
-
.spec.selector 필드는 디플로이먼트가 관리할 파드를 찾는 방법을 정의한다. 이 사례에서는 간단하게 파드 템플릿에 정의된 레이블(app: nginx)을 선택한다. 그러나 파드 템플릿 자체의 규칙이 만족되는 한, 보다 정교한 선택 규칙의 적용이 가능하다.
참고: .spec.selector.matchLabels 필드는 {key,value}의 쌍으로 매핑되어있다. matchLabels 에 매핑된 단일 {key,value}은 matchExpressions 의 요소에 해당하며, 키 필드는 "key"에 그리고 연산자는 "In"에 대응되며 값 배열은 "value"만 포함한다. 매칭을 위해서는 matchLabels 와 matchExpressions 의 모든 요건이 충족되어야 한다.
-
template 필드에는 다음 하위 필드가 포함되어있다.
- 파드는 .metadata.labels 필드를 사용해서 app: nginx 라는 레이블을 붙인다.
- 파드 템플릿의 사양 또는 .template.spec 필드는 파드가 도커 허브의 nginx 1.14.2 버전 이미지를 실행하는 nginx 컨테이너 1개를 실행하는 것을 나타낸다.
- 컨테이너 1개를 생성하고, .spec.template.spec.containers[0].name 필드를 사용해서 nginx 이름을 붙인다.
시작하기 전에, 쿠버네티스 클러스터가 시작되고 실행 중인지 확인한다. 위의 디플로이먼트를 생성하려면 다음 단계를 따른다.
참고: --record 플래그를 지정해서 실행된 명령을 kubernetes.io/change-cause 리소스 어노테이션에 작성할 수 있다. 기록된 변경사항은 향후 인트로스펙션(introspection)에 유용하다. 예를 들면, 디플로이먼트의 각 수정 버전에서 실행된 명령을 볼 수 있다.
- kubectl get deployments 을 실행해서 디플로이먼트가 생성되었는지 확인한다.
만약 디플로이먼트가 여전히 생성 중이면, 다음과 유사하게 출력된다.
- NAME 은 네임스페이스에 있는 디플로이먼트 이름의 목록이다.
- READY 는 사용자가 사용할 수 있는 애플리케이션의 레플리카의 수를 표시한다. ready/desired 패턴을 따른다.
- UP-TO-DATE 는 의도한 상태를 얻기 위해 업데이트된 레플리카의 수를 표시한다.
- AVAILABLE 은 사용자가 사용할 수 있는 애플리케이션 레플리카의 수를 표시한다.
- AGE 는 애플리케이션의 실행된 시간을 표시한다.
'3. 쿠버네티스의 모든것' 카테고리의 다른 글
3탄!! Kubernetes 구성도 알아보자! (0) | 2020.08.05 |
---|---|
윈도우 10에 도커, 쿠버네티스 설치 (도커 데스크탑) (0) | 2020.07.11 |
쿠버네티스 가상스토리지(Ceph) 설치 (0) | 2020.07.10 |
8탄!! K8S 대시보드 설치 (0) | 2020.06.25 |
elasticsearch.yaml 테스트중 (0) | 2020.06.25 |
- Total
- Today
- Yesterday
- 버쳐박스
- startup 에러
- 커널
- ubuntu
- 여러서버 컨트롤
- 스토리지 클레스
- 앤시블
- 오라클 홈디렉토리 copy 후 startup 에러
- CVE 취약점 점검
- 오라클
- [오라클 튜닝] sql 튜닝
- pod 상태
- [오라클 튜닝] instance 튜닝2
- 오라클 트러블 슈팅(성능 고도화 원리와 해법!)
- directory copy 후 startup 에러
- 쿠버네티스
- 튜닝
- MSA
- ORACLE 트러블 슈팅(성능 고도화 원리와 해법!)
- 테라폼
- 트리이스
- 코로나19
- Oracle
- 5.4.0.1072
- (InstantClient) 설치하기(HP-UX)
- K8s
- 우분투
- 설치하기(HP-UX)
- 키알리
- 오라클 인스턴트클라이언트(InstantClient) 설치하기(HP-UX)
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |