02. Container

Kubernetes에서 Manifest 개요

카이저일공 2024. 1. 25. 23:18
Kubernetes Manifest에 대한 설명

Kubernetes Manifest에 대한 상세 설명

가. 종류

쿠버네티스 매니페스트는 다양한 리소스 유형을 정의합니다. 각각의 유형은 쿠버네티스 클러스터 내에서 특정 역할을 수행합니다.

1. 파드(Pods):

설명: 가장 기본적인 배포 단위로, 하나 이상의 컨테이너를 포함합니다. 이 컨테이너들은 네트워크와 저장소 등의 리소스를 공유합니다.

예시: 웹 애플리케이션을 실행하는 파드가 있을 수 있으며, 이 파드 내에는 Nginx 웹 서버 컨테이너와 애플리케이션 로직을 실행하는 Python 컨테이너가 포함될 수 있습니다.

2. 서비스(Services):

설명: 파드 집합에 대한 안정적인 네트워크 주소를 제공합니다. 로드 밸런싱과 서비스 발견을 위해 사용됩니다.

예시: 여러 파드로 구성된 애플리케이션에 대한 단일 접점 역할을 하는 서비스가 있을 수 있으며, 이 서비스는 외부 요청을 여러 파드에 분산시키는 역할을 합니다.

3. 디플로이먼트(Deployments):

설명: 파드의 배포, 확장 및 업데이트를 관리합니다. 선언적으로 애플리케이션의 상태를 유지하는 데 사용됩니다.

예시: 애플리케이션의 새 버전을 배포할 때, 디플로이먼트는 새 파드를 생성하고, 오래된 파드를 점진적으로 교체하여 업데이트를 수행합니다.

4. 볼륨(Volumes):

설명: 파드가 소멸되어도 지속되는 데이터 저장소를 제공합니다. 로컬 스토리지, 네트워크 스토리지 등 다양한 종류의 볼륨이 지원됩니다.

예시: 데이터베이스를 실행하는 파드는 데이터의 영속성을 위해 네트워크 볼륨을 사용할 수 있습니다. 이를 통해 파드가 재시작되어도 데이터가 유지됩니다.

나. 특징

쿠버네티스 클러스터의 리소스를 효율적으로 관리하고 운영하는 데 중요한 역할을 합니다. 이러한 특징들은 쿠버네티스 환경에서의 작업을 간소화하고, 자동화하며, 보다 효과적으로 만들어 줍니다. 다음은 쿠버네티스 매니페스트의 주요 특징에 대한 상세 내용입니다.

1. 선언적 구성:

상세 설명: 쿠버네티스 매니페스트는 선언적 구성 방식을 사용합니다. 사용자는 YAML 또는 JSON 형식의 파일에서 원하는 리소스의 상태(예: 실행 중인 파드의 수, 사용할 컨테이너 이미지 등)를 선언하고, 쿠버네티스는 이 상태를 실제 클러스터에서 실현하도록 합니다.

장점: 이 방식은 리소스의 현재 상태를 직접 조작하는 대신, 원하는 최종 상태를 정의함으로써 관리의 복잡성을 크게 줄여줍니다.

2. 버전 관리 가능:

상세 설명: 매니페스트 파일은 Git과 같은 소스 코드 관리 시스템에 저장될 수 있습니다. 이를 통해 매니페스트의 버전을 추적하고, 필요한 경우 이전 버전으로 롤백하는 것이 용이해집니다.

장점: 이러한 접근 방식은 팀 내에서 매니페스트의 변경 사항에 대한 협업과 투명성을 높여주며, 오류 발생 시 빠른 복구를 가능하게 합니다.

3. 자동화:

상세 설명: 매니페스트를 통해 파드의 배포, 서비스의 확장, 애플리케이션의 업데이트 등 다양한 프로세스를 자동화할 수 있습니다. 쿠버네티스의 컨트롤러는 매니페스트에 선언된 상태를 지속적으로 모니터링하고, 필요한 조치를 자동으로 취합니다.

장점: 자동화는 수동 개입을 줄이고, 운영상의 실수를 방지하며, 효율성을 향상시킵니다. 또한, 개발자와 운영팀의 작업 부담을 줄여줍니다.

다. 고려사항

쿠버네티스 매니페스트를 작성할 때 고려해야 할 중요한 사항들에는 여러 가지가 있습니다. 이들은 클러스터의 안정적이고 효율적인 운영을 보장하는 데 필수적입니다. 다음은 쿠버네티스 매니페스트 작성 시 고려해야 할 주요 사항들에 대한 보다 상세한 설명입니다.

1. 정확한 문법

상세 설명: 쿠버네티스 매니페스트는 주로 YAML 또는 JSON 형식으로 작성됩니다. 작은 문법 오류나 타이핑 실수도 리소스 생성 및 관리에 큰 영향을 미칠 수 있습니다.

주의사항: 문법을 정확히 준수하고, 매니페스트 파일을 작성한 후에는 유효성 검사 도구를 사용하여 오류가 없는지 확인해야 합니다.

2. 보안

상세 설명: 쿠버네티스 매니페스트에 민감한 정보(예: 비밀번호, API 키)를 포함시키는 것은 보안상 위험할 수 있습니다.

주의사항: 민감한 데이터는 쿠버네티스의 Secrets 객체를 사용하여 안전하게 관리해야 합니다. Secrets는 데이터를 암호화하여 저장하고, 필요한 파드에서만 접근할 수 있게 합니다.

3. 리소스 할당 및 관리

상세 설명: 쿠버네티스 클러스터에서 리소스(예: CPU, 메모리)의 오버알로케이션은 시스템의 안정성에 영향을 줄 수 있습니다.

주의사항: 파드나 컨테이너에 적절한 리소스 할당량을 설정해야 하며, 필요에 따라 리소스 제한을 구성하여 시스템의 안정성과 효율성을 보장해야 합니다. 이를 위해 requests와 limits 설정을 적절히 사용합니다.