And Brain said,

CI/CD Argonautica - Kubernetes, 조타수 - 이론 본문

IT/CICD Argonautica

CI/CD Argonautica - Kubernetes, 조타수 - 이론

The Man 2023. 5. 13. 21:27
반응형

 

CI/CD Argonautica

Docker, 선박
Kubernetes, 조타수 Harbor, 항구
Helm, 타륜
Istio, 돛
Jenkins, 선장
ArgoCD, 출항

1장/ Loki, Trickster

Troubleshooting

 
우리 여행의 선박이 되어줄 컨테이너, 도커(Docker)를 배웠으니 이제, 여행의 조타수가 되어줄 쿠버네티스(Kubernetes, K8s)에 대해 이론적으로 알아보도록 하자. 쿠버네티스는 컨테이너화된 애플리케이션의 배포, 확장, 그리고 관리를 담당하는 오픈 소스 플랫폼으로, 클라우드 환경에서 동작하는 애플리케이션의 실행과 관리를 효과적으로 돕는다.
 
쿠버네티스는 파드, 노드, 서비스, 레플리카셋, 디플로이먼트 등 다양한 구성 요소를 이용하여 애플리케이션의 스케일링, 로드 밸런싱 및 자동 복구 등의 기능을 제공하며 또한, 오토스케일링 기능을 통해 자원 사용을 최적화하고 애플리케이션의 트래픽 변화에 유연하게 대응할 수 있다. 쿠버네티스는 클라우드 시대의 핵심 기술로서, 복잡하고 다양한 IT 환경에서의 애플리케이션 배포와 관리를 간편하고 효율적으로 만들어 줄 것이다.

자, 그럼 쿠버네티스 이론편을 바로 시작하자.
 
 

파드(Pod)

쿠버네티스에서 가장 기본적인 배포 단위인 파드는 하나 이상의 컨테이너 그룹으로, 이 컨테이너들은 스토리지 및 네트워크 자원을 공유하며, 어떻게 실행되어야 하는지에 대한 설정을 가지고 있다. 각 파드는 독립적인 애플리케이션을 실행하는데 필요한 모든 것을 포함하고 있다.
 
 

노드(Node)

노드는 파드가 실행되는 서버 혹은 물리적인 머신을 의미한다. 하나의 클러스터 안에는 여러 개의 노드가 있을 수 있으며, 각 노드는 마스터 노드의 관리를 받게 된다.
 
 

서비스(Service)

서비스는 네트워크 경로 (예를 들어, DNS 이름)를 통해 동일한 기능을 수행하는 파드 집합에 안정적인 접근 방법을 제공한다. 이는 파드가 유동적으로 생성되고 사라지는 환경에서 특정 파드 집합에 대한 신뢰성 있는 접근성을 보장한다.
 
 

레플리카셋(ReplicaSet)과 디플로이먼트(Deployment)

레플리카셋과 디플로이먼트를 이용하면 서비스의 가용성을 높이고 로드 밸런싱을 할 수 있다. 레플리카셋은 특정 수의 파드 인스턴스가 항상 실행되도록 보장하는 역할을 하며, 디플로이먼트는 애플리케이션을 업데이트하고, 이전 버전으로 롤백하고, 다양한 리소스와 함께 애플리케이션을 스케일링하는 등의 기능을 제공한다.
 
 

오토스케일링(Autoscaling)

쿠버네티스의 오토스케일링은 크게 두 가지 유형이 있는데,
 

Horizontal Pod Autoscaler (HPA): HPA는 파드의 수를 자동으로 늘리거나 줄여서 수평적으로 스케일링한다. 예를 들어, CPU 사용률을 기준으로 설정할 수 있으며, 사용률이 특정 임계치를 초과하면 HPA는 추가 파드를 자동으로 생성하여 트래픽을 처리하게 된다. 반대로, 사용률이 낮아지면 HPA는 필요 이상의 파드를 자동으로 제거하여 리소스를 절약한다.

Vertical Pod Autoscaler (VPA): VPA는 파드의 CPU나 메모리 같은 리소스 요구량을 자동으로 조절하여 수직적으로 스케일링한다. VPA는 각 파드의 리소스 사용 패턴을 분석하고, 이를 바탕으로 파드의 리소스 요구량을 동적으로 조절한다.

 
 

컨트롤 플레인(Control Plane)

Kubernetes의 컨트롤 플레인은 클러스터에 대한 중앙화된 관리 역할을 담당한다. 이 컨트롤 플레인의 주요 구성 요소로는 API 서버, 스케줄러, 컨트롤러 매니저, etcd 등이 있다. 이들 구성 요소들은 사용자의 요청을 처리하고, 클러스터의 상태를 유지하고, 여러 노드에서 실행되는 작업을 조정하는 역할을 한다.
 
 

클러스터(Cluster)

Kubernetes의 기본 아키텍처는 클러스터라는 개념을 중심으로 구성된다. 클러스터는 여러 노드의 집합으로, 이들 노드들은 하나 이상의 애플리케이션을 실행하는 파드를 호스트하게 된다. 클러스터 내에서는 모든 리소스가 효율적으로 분배되고, 관리되며, 사용자는 이 클러스터를 통해 애플리케이션을 배포하고 관리하게 된다.
 
 

네임스페이스(Namespace)

네임스페이스는 클러스터 내의 리소스를 논리적으로 분리하여 관리할 수 있게 해주는 기능으로, 이를 통해 동일한 클러스터 내에서 여러 팀이나 프로젝트를 분리하여 운영 가능해진다. 이런 기능은 특히 대규모 클러스터에서 중요하게 작용하며, 리소스의 공유와 접근 권한을 세밀하게 관리할 수 있게 도와준다.
 
 
여기까지 쿠버네티스의 이론에 대해 간략히 살펴보았고, 다음 시간엔 실습으로 넘어가보도록 하자.
 
 

Thanks for watching, Have a nice day.

 

References

https://kubernetes.io/ko/docs/home/

반응형
Comments