작업량

spec:
	strategy:
    	type: RollingUpdate
        rollingUpdate:
        	maxSurge: 25%
            maxUnavailable: 25%

Kubernetes 워크로드는 Kubernetes 클러스터에서 실행되는 애플리케이션의 방식과 구성을 정의합니다. 워크로드에는 애플리케이션을 구성하는 컨테이너, 포드, ReplicaSet 및 배포와 같은 Kubernetes 객체가 포함됩니다.

Kubernetes는 워크로드 생성 및 관리를 위한 다양한 객체를 제공합니다. 예를 들어 Deployment는 애플리케이션의 배포 및 업데이트를 관리하고 ReplicaSet은 Pod의 복제본 수를 관리합니다. Kubernetes는 또한 워크로드 확장, 로드 밸런싱 및 롤링 업데이트와 같은 기능을 제공합니다.

따라서 Kubernetes 워크로드를 정의하고 관리함으로써 애플리케이션 배포 및 운영을 효율적으로 관리할 수 있습니다.

색인

1. 레플리카셋

2. 배포

3. 다중 컨테이너 포드


    요약

    ReplicaSets: 고가용성을 보장하기 위해 Pod의 복제본을 유지 관리하는 개체입니다.

    배포: 상태 비저장 앱 배포를 담당하는 객체

    Multi-conatiner Pods: Pod 및 init 컨테이너에서 여러 컨테이너를 실행하기 위한 디자인 패턴Multi-conatiner Pods: Pod 및 init 컨테이너에서 여러 컨테이너를 실행하기 위한 디자인 패턴


    복제 세트

    Pod의 복제본을 관리하는 Kubernetes 개체입니다. ReplicaSet은 레플리카 수를 지정하고 포드의 레이블 선택기를 사용하여 해당 레이블이 있는 포드 수가 유지되도록 합니다.

    ReplicaSet는 애플리케이션 가용성과 확장성을 제공합니다. 예를 들어 ReplicaSet를 사용하여 웹 서버 애플리케이션을 배포하는 경우 ReplicaSet는 지정된 수의 웹 서버 포드를 유지합니다. 이렇게 하면 단일 포드에 장애가 발생하더라도 ReplicaSet가 지정된 수의 웹 서버 포드를 계속 유지하여 애플리케이션 가용성을 보장합니다.

    ReplicaSet는 Pod 확장도 지원합니다. ReplicaSet의 복제본 수를 늘리면 포드의 복제본 수가 늘어나고 반대로 복제본 수를 줄이면 포드의 복제본 수가 줄어듭니다. 이를 통해 ReplicaSet는 애플리케이션의 부하에 따라 포드를 자동으로 확장하거나 축소하여 리소스 사용을 최적화할 수 있습니다.

    단일 파드가 다중화되지 않아 고가용성이 확보되지 않는다.

    ReplicaSet은 Pod의 복사본인 일정한 복제본을 유지하여 고가용성을 보장합니다.

    의도한 상태는 제어 루프에 의해 달성됩니다.

    apiVersion: apps/v1
    kind: ReplicaSet
    metadata:
    	name: nginx-rs
        labels:
        	name: nginx-rs
    spec:
    	replicas: 3
        selector:
        	matchlabels:
            	app: nginx
         template:
         	metadata:
            	labels:
                	app: nginx
            spec:
            	containers:
               	- name: nginx
                image: nginx
    • 선언적 방식으로만 생성 가능

    확장/축소

    k scale rs nginx-rs --replicas 5
    
    k scale rs nginx-rs --replicas 2
    
    or
    
    yaml 스팩 수정

    • ReplicaSet는 Pod의 복제본을 안정적으로 유지하여 고가용성을 보장합니다.
    • Pod의 복제본은 확장/축소할 수 있습니다.


    전개

    애플리케이션의 배포 및 업데이트를 관리하는 Kubernetes 개체입니다. 배포는 ReplicaSet을 기반으로 하며 애플리케이션 버전 관리, 롤링 업데이트, 롤백 등을 지원합니다.

    배포를 통해 새 애플리케이션 버전을 배포할 수 있습니다. 배포는 지정된 수의 ReplicaSet를 생성하고 컨테이너 이미지의 새 버전을 각 ReplicaSet에 배포합니다. 그런 다음 이전 버전에서 ReplicaSet를 제거하는 동안 새 버전에 대한 롤링 업데이트가 수행됩니다.

    배포는 롤백 기능도 제공합니다. 애플리케이션의 새 버전에 문제가 있는 경우 배포는 이전 버전으로 롤백하고 이전 상태로 되돌릴 수 있습니다.

    또한 배포는 ReplicaSet를 사용하여 애플리케이션의 가용성과 안정성을 제공합니다. 따라서 배포는 ReplicaSet와 함께 사용되어 애플리케이션의 확장 및 복제본 관리를 자동화합니다.

    명령형 생성
    k create deploy app --image app:v1 --replicas 4
    
    
    선언형 생성
    apiVersion: apps/v1
    kind: Deployment
    metadata:
    	name: app
        labels:
        	name: app
    spec:
    	replicas: 4
        selector:
        	matchlabels:
            	app: app
         template:
         	metadata:
            	labels:
                	app: app
            spec:
            	containers:
               	- name: app
                image: app:v1
                
                
                
    컨테이너 이미지 업데이트
    k set image deployment app app=app:v2
    업데이트 하려는 이미지 태그

    여러 Pod의 컨테이너 이미지를 변경하여 배포할 때 사용합니다.

    spec:
    	strategy:
        	type: RollingUpdate
            rollingUpdate:
            	maxSurge: 25%
                maxUnavailable: 25%
                
                
                
                
    최대로 늘어날수 있는
    최대로 줄어들수 있는
    전체 복제본에서의 % 의 파드

    ReplicaSet과의 차이점은 업데이트 전략을 정의하는 전략 필드가 있다는 것입니다.

    2 업데이트 전략

    • 롤링업데이트
      • 업데이트할 포드의 수가 점차 증가함에 따라 이미지가 업데이트됩니다.
      • 정상적인 재시작
      • 기본
    • 재생성
      • 일시적으로 새 버전으로 대체됨

    롤링업데이트

    내부에 여러 ReplicaSet 생성

    이전 ReplicaSet에서는 Pod를 줄이고

    새 버전의 ReplicaSet에서는 변경되는 Pod가 늘어납니다.

    k rollout undo deployment app
    
    되돌리기
    새로운 리비전이 생성됨
    
    
    k rollout pause deployment app
    배포 작업을 중지
    
    k rollout resume deployment app
    배포 다시시작
    
    k rollout status deployment app
    상태 확인

    • 배포는 일련의 부품 업데이트와 관련된 워크로드 개체입니다.
    • 업데이트 전략은 롤링 업데이트 및 재생성입니다.
    • 배포는 개정에 해당하는 ReplicaSet를 관리합니다.
    • 이전 버전으로 롤백 가능
    • 업데이트/출시를 일시 중지하여 재개하고 상태를 확인할 수 있습니다.

    다중 컨테이너 포드


    마치다

    마치다