본문 바로가기

Cloud

(Kubernetes) - workload

반응형

🍳머리말

workload 개념 및 resource 설명글


📕 workload

📔 정의

워크로드는 쿠버네티스에서 구동되는 애플리케이션

📔 특징

 워크로드가 단일 컴포넌트이거나 함께 작동하는 여러 컴포넌트이든 관계없이, 쿠버네티스에서는 워크로드를 일련의 파드 집합 내에서 실행합니다. 쿠버네티스에서 Pod는 클러스터에서 실행 중인 컨테이너 집합을 나타냅니다.

쿠버네티스 파드에는 라이프사이클이 있습니다. 예를 들어, 일단 파드가 클러스터에서 실행되고 나서 해당 파드가 동작 중인 노드에 심각한 오류가 발생하면 해당 노드의 모든 파드가 실패합니다. 쿠버네티스는 이 수준의 실패를 최종(final)으로 취급하며 사용자는 향후 노드가 복구되는 것과 상관 없이 Pod 를 새로 생성해야 합니다.


📕 workload resource

 pod를 새로 생성하는 작업이 훨씬 쉽도록, 각 Pod 를 직접 관리할 필요는 없도록 만들었습니다. 대신, 사용자를 대신하여 파드 집합을 관리하는 워크로드 리소스를 사용할 수 있습니다. 이러한 리소스는 지정한 상태와 일치하도록 올바른 수의 올바른 파드 유형이 실행되고 있는지 확인하는 컨트롤러를 구성합니다.

쿠버네티스는 다음과 같이 여러 가지 빌트인(built-in) 워크로드 리소스를 제공합니다.

📔 Deployment 및 ReplicaSet

 레거시 리소스인 replicationcontroller를 대체합니다. Deployment  Deployment 의 모든 Pod 가 필요 시 교체 또는 상호 교체 가능한 경우, 클러스터의 스테이트리스 애플리케이션 워크로드를 관리하기에 적합합니다.

📔 StatefulSet

 어떻게든 스테이트(state)를 추적하는 하나 이상의 파드를 동작하게 해줍니다. 예를 들면, 워크로드가 데이터를 지속적으로 기록하는 경우, 사용자는 Pod 와PersistentVolumn을 연계하는 StatefulSet 을 실행할 수 있습니다. 전체적인 회복력 향상을 위해서, StatefulSet  Pods 에서 동작 중인 코드는 동일한 StatefulSet 의 다른 Pods 로 데이터를 복제할 수 있습니다.

📔 DaemonSet

 노드-로컬 기능(node-local facilities)을 제공하는 Pods를 정의합니다. 이러한 기능들은 클러스터를 운용하는 데 기본적인 것입니다. 예를 들면, 네트워킹 지원 도구 또는 add-on 등이 있습니다. DaemonSet 의 명세에 맞는 노드를 클러스터에 추가할 때마다, 컨트롤 플레인은 해당 신규 노드에 DaemonSet 을 위한 Pod 를 스케줄합니다.

 

 모든(또는 일부) 노드가 파드의 사본을 실행하도록 합니다. 노드가 클러스터에 추가되면 파드도 함께 추가됩니다. 노드가 클러스터에서 제거되면 해당 파드는 가비지(garbage)로 수집됩니다. 데몬셋을 삭제하면 데몬셋이 생성한 파드들이 함께 정리됩니다.

용도는 3가지 입니다.

  • 모든 노드에서 클러스터 스토리지 데몬 실행
  • 모든 노드에서 로그 수집 데몬 실행
  • 모든 노드에서 노드 모니터링 데몬 실행

단순한 케이스에서는, 각 데몬 유형의 처리를 위해서 모든 노드를 커버하는 하나의 데몬셋이 사용됩니다. 더 복잡한 구성에서는 단일 유형의 데몬에 여러 데몬셋을 사용할 수 있지만, 각기 다른 하드웨어 유형에 따라 서로 다른 플래그, 메모리, CPU 요구가 달라집니다.

📔 Job 및 CronJob

 실행 완료 후 중단되는 작업을 정의합니다. CronJobs 이 스케줄에 따라 반복되는 반면, 잡은 단 한 번의 작업을 나타냅니다.

더 넓은 쿠버네티스 에코시스템 내에서는 추가적인 동작을 제공하는 제 3자의 워크로드 리소스도 찾을 수 있습니다. 커스텀 리소스 데피니션을 사용하면, 쿠버네티스 코어에서 제공하지 않는 특별한 동작을 원하는 경우 제 3자의 워크로드 리소스를 추가할 수 있습니다. 예를 들어, 사용자 애플리케이션을 위한 Pods 의 그룹을 실행하되 모든 파드가 가용한 경우가 아닌 경우 멈추고 싶다면(아마도 높은 처리량의 분산 처리를 하는 상황 같은), 사용자는 해당 기능을 제공하는 확장을 구현하거나 설치할 수 있습니다.

 

 📑 Job

잡에서 하나 이상의 파드를 생성하고 지정된 수의 파드가 성공적으로 종료될 때까지 계속해서 파드의 실행을 재시도합니다. 파드가 성공적으로 완료되면, 성공적으로 완료된 잡을 추적합니다. 지정된 수의 성공 완료에 도달하면, 작업(즉, 잡)이 완료됩니다. 잡을 삭제하면 잡이 생성한 파드가 함께 정리됩니다. 작업을 일시 중지하면 작업이 다시 재개될 때까지 활성 파드가 삭제됩니다.

간단한 사례는 잡 오브젝트를 하나 생성해서 파드 하나를 안정적으로 실행하고 완료하는 것입니다. 첫 번째 파드가 실패 또는 삭제된 경우(예로는 노드 하드웨어의 실패 또는 노드 재부팅) 잡 오브젝트는 새로운 파드를 기동시킵니다.

잡을 사용하면 여러 파드를 병렬로 실행할 수도 있습니다

 


📕참조

https://kubernetes.io/ko/docs/concepts/workloads/

 

워크로드

쿠버네티스에서 배포할 수 있는 가장 작은 컴퓨트 오브젝트인 파드와, 이를 실행하는 데 도움이 되는 하이-레벨(higher-level) 추상화

kubernetes.io

 

'Cloud' 카테고리의 다른 글

(Kubernetes) - k8s namespace 생성하기  (0) 2021.11.09
(Kubernetes) - storage  (0) 2021.10.26
(Kubernetes) - 용어 정리  (0) 2021.10.18
DevOps와 NoOps  (0) 2021.10.13
Kubernetes 등장 배경과 장점  (0) 2021.10.12