반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
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 31
Archives
Today
Total
관리 메뉴

/var/log/messages

쿠버네티스란? 본문

Rancher

쿠버네티스란?

로만로만 2023. 5. 7. 13:57
반응형

소개
Docker 및 컨테이너화와 같은 기술이 개발자 및 운영 툴킷의 필수적인 부분이 되고 모든 규모의 조직에서 견인력을 얻음에 따라 더 큰 관리 도구 및 배포 환경에 대한 필요성이 증가했습니다. 컨테이너 오케스트레이션 시스템인 Kubernetes는 프로덕션 환경에서 복잡한 컨테이너 워크로드를 관리하기 위한 압도적인 표준이 되었습니다. 그러나 Kubernetes란 무엇이며 어떻게 작동합니까?

이 가이드에서는 Kubernetes가 어떻게 탄생했는지에 대해 이야기하고, 몇 가지 핵심 Kubernetes 개념을 소개하고, 컨테이너 오케스트레이션 플랫폼이 컨테이너화된 애플리케이션을 최신 개발을 위해 강력하고 확장성이 뛰어난 환경으로 전환하는 데 어떻게 도움이 되는지 살펴보겠습니다.

 

컨테이너 오케스트레이션과 쿠버네티스의 탄생
컨테이너 오케스트레이션은 운영자가 여러 호스트에서 컨테이너 그룹을 실행할 수 있게 해주는 소프트웨어를 가리키는 용어입니다. 이러한 시스템은 컨테이너 런타임과 조정하여 컨테이너화된 워크로드의 수명 주기를 관리하고 컨테이너를 위한 전체 지원 환경을 운영하여 배포를 위한 확장 가능한 플랫폼을 생성합니다. 즉, 컨테이너 오케스트레이션 시스템은 생산 요구 사항이 있는 컨테이너 운영의 힘든 작업을 처리하는 완벽한 관리 환경을 생성하도록 설계되었습니다.

컨테이너 오케스트레이션은 개별 컨테이너 런타임 위에 추가 관리 계층이 필요하기 때문에 성장했습니다. 런타임은 단일 호스트에서 컨테이너를 관리할 수 있지만 적절한 확장 방법을 제공하지 않는 경우가 많습니다. 또한 호스트에서 컨테이너를 실행하는 것은 확실히 프로덕션 준비가 된 컨테이너를 실행하기 위한 핵심 요구 사항이지만 해결해야 할 다른 많은 요구 사항이 있습니다. 컨테이너 오케스트레이터는 이러한 요구 사항의 핵심 하위 집합을 수행하여 추가 기능을 제공합니다.

쿠버네티스는 지금까지 세계에서 가장 인기 있고 기능이 풍부한 컨테이너 오케스트레이션 시스템입니다. 2003년부터 조직 전체에서 워크로드를 운영하고 확장하는 데 사용된 Borg라는 내부 Google 클러스터 시스템에서 성장했습니다. 2014년 Google은 내부적으로 새 시스템으로 전환한 후 Borg의 오픈 소스 버전으로 Kubernetes를 출시했습니다.

쿠버네티스는 잘 정의된 프리미티브, 강력한 아키텍처, 막대한 워크로드를 처리할 수 있는 것으로 입증된 설계로 인해 즉시 컨테이너 커뮤니티의 관심을 끌었습니다. 2015년에 버전 1.0을 출시한 후 Google과 Linux Foundation은 커뮤니티가 Kubernetes에 대한 소유권과 제어권을 유지하도록 하기 위해 Kubernetes 및 같은 생각을 가진 오픈 소스 프로젝트의 관리자로서 Cloud Native Computing Foundation을 만들기 위해 파트너십을 맺었습니다. 거기에서 쿠버네티스는 성숙함에 따라 계속해서 널리 채택되었고 플랫폼을 향상시키려는 수많은 프로젝트로 생태계가 팽창했습니다.

쿠버네티스 기능
Kubernetes는 프로덕션 실행 가능성을 달성하는 데 도움이 되는 다양한 기능을 제공합니다. 가장 중요한 몇 가지를 살펴보겠습니다.

 

유연한 컨테이너 스케줄링
Kubernetes가 제공하는 기본 기능 중 하나는 주어진 요구 사항에 따라 개별 노드에서 컨테이너를 예약하는 기능입니다. 이 컨텍스트에서 "일정"은 적절한 노드를 선택하고 작업을 전달한 다음 상태 확인에서 워크로드에 주의가 필요함을 나타내는 경우 대응하는 것을 의미합니다. Kubernetes는 컨테이너의 요구 사항과 개별 노드에서 사용 가능한 현재 상태 및 리소스를 기반으로 컨테이너에 가장 적합한 노드를 자동으로 선택하려고 합니다.

사용자는 컨테이너를 클러스터에 배포할 때 추가 요구 사항을 제공하여 일정 결정에 영향을 줄 수 있습니다. 또한 특정 노드와 관련된 속성을 변경하여 특정 유형의 컨테이너가 개별 노드에 할당될 가능성을 높이거나 낮춤으로써 스케줄링에 영향을 줄 수 있습니다. 이러한 유형의 유연성은 원하는 방식으로 컨테이너를 실행하기 위한 자동 선택과 세분화된 제어 간에 적절한 균형을 제공합니다.

상태 확인 및 자가 치유
Kubernetes는 컨테이너 상태의 변화를 파악하고 이에 대응하는 책임을 집니다. 컨테이너가 제대로 시작되지 않으면 Kubernetes는 컨테이너를 다시 시작하려고 시도합니다. 마찬가지로 컨테이너가 조기에 종료되는 경우 Kubernetes는 이전 가용성 수준에 도달하도록 컨테이너를 인식하고 다시 예약합니다. 이 작업이 진행되는 동안 비정상 컨테이너로 새로운 트래픽이 전달되지 않도록 자동으로 네트워킹을 조정합니다.

Kubernetes는 컨테이너 상태에 대한 자체 기준을 정의하기 위한 메커니즘을 제공하며 이를 모니터링합니다. Kubernetes는 컨테이너 자체 내에서 명령을 실행하거나, 특정 끝점에서 HTTP 요청에 대한 특정 응답을 찾거나, 특정 포트에 대한 TCP 연결을 시도하여 정상 동작을 확인할 수 있습니다. 이를 통해 정상적인 구성 요소의 정확한 동작을 정의할 수 있으므로 편차가 발생할 경우 Kubernetes가 조치를 취할 수 있습니다.

워크로드별 관리 기능
쿠버네티스는 컨테이너 관리에 탁월하지만 컨테이너 패러다임 위에 더 복잡한 객체를 구축하고 작업함으로써 컨테이너를 관리합니다. 이 계층화는 보다 구체적인 사용 사례를 대상으로 하므로 추가 기능과 함께 제공됩니다.

예를 들어 쿠버네티스는 가장 작은 관리 단위인 포드라고 하는 개체 내의 모든 컨테이너를 래핑합니다. 수평 확장을 활성화하기 위해 Pod는 ReplicaSet에서 관리됩니다. 롤아웃 및 롤백 기능을 추가하기 위해 레플리카셋은 디플로이먼트에 의해 관리됩니다. 각각의 추가 추상화는 많은 추가 복잡성 없이 새로운 기능, 보증 및 기능을 추가합니다. 일회성 포드를 실행하고, 클러스터의 모든 노드에서 포드를 실행하고, 특별한 스토리지 관리가 필요한 포드를 실행하기 위해 다양한 추상화가 존재합니다.

네트워크 관리, 서비스 검색 및 로드 밸런싱
Kubernetes는 클러스터 환경에서 다양한 유형의 애플리케이션을 실행하기 위한 통신 요구사항에 특별한 주의를 기울입니다. 연결은 기본적으로 구성 가능하고 안전하며 안정적이어야 합니다. Kubernetes는 기본적으로 강력한 네트워킹 기능을 제공하지만 다른 프로젝트에서 사용 가능한 네트워킹 기능을 개선하거나 수정할 수도 있습니다. 이를 통해 관리자는 요구 사항에 맞게 네트워크 환경을 조정할 수 있습니다.

기본 연결 외에도 Kubernetes는 애플리케이션 관련 네트워크 기능도 제공합니다. 서비스 검색 기능이 플랫폼에 내장되어 있어 애플리케이션과 구성 요소가 트래픽을 쉽게 찾고 서로 라우팅할 수 있습니다. 마찬가지로 로드 밸런싱을 즉시 사용할 수 있으므로 단일 엔드포인트에서 전체 컨테이너 풀로 요청을 라우팅할 수 있습니다.

비밀 및 구성 관리 분리
기본적으로 Kubernetes는 애플리케이션 자체와 별도로 구성을 관리하는 메커니즘을 제공하여 소프트웨어 개발 모범 사례를 수용합니다. Kubernetes에서 사용하는 워크로드 정의는 별도로 저장하고 관리할 수 있는 구성 값을 참조할 수 있습니다. 이를 통해 유연성을 유지하면서 응용 프로그램 정의를 표준화할 수 있으므로 현재 환경의 요구 사항에 맞게 가변 데이터를 조정할 수 있습니다.

마찬가지로 Kubernetes는 비밀로 간주되어야 하는 데이터에 대해 별도의 범주를 제공합니다. 일반 구성 데이터에서 중요한 데이터를 분리하면 조직에서 시스템 보안에 부정적인 영향을 주지 않고 중요한 정보에 액세스할 수 있습니다. Kubernetes의 보안 비밀은 보다 철저하게 보호되는 별도의 프로세스를 통해 처리하여 보호할 수 있습니다.

쉬운 확장성
Kubernetes가 제공하는 가장 중요한 기능 중 하나는 쉽게 확장할 수 있는 기능입니다. 수평 확장은 Kubernetes 배포 개체에서 제공하는 기능으로, 실행 중인 각 애플리케이션의 컨테이너 수를 관리할 수 있습니다. 규모 조정을 간단하게 함으로써 수요 변동에 대응할 수 있으며 모니터링 및 자동 규모 조정 기능을 통해 Kubernetes가 자동으로 대응하고 서비스에 맞게 규모를 조정하도록 구성할 수 있습니다.

 

쿠버네티스 작동 방식
이제 Kubernetes가 제공하는 몇 가지 이점을 이해했으므로 Kubernetes 작동 방식에 대해 간략하게 설명하겠습니다. 이후 가이드에서 Kubernetes 아키텍처 및 워크로드를 더 깊이 다룰 예정이므로 간단한 설명이 될 것입니다.

Kubernetes의 기본 아이디어는 컨테이너화된 워크로드를 위한 탄력적인 플랫폼을 제공하는 것입니다. 아키텍처 수준에서 Kubernetes는 오케스트레이션 논리, 리소스 관리, 예약 등을 담당하는 마스터(또는 컨트롤 플레인) 노드와 할당된 컨테이너 워크로드를 실행하고 컨트롤에 다시 보고하는 작업자 노드로 구성된 클러스터 시스템입니다. 비행기. 이러한 시스템은 함께 작동하여 표준 Kubernetes 명령줄 클라이언트인 kubectl과 같은 도구에서 사용되는 API 서버를 통해 관리되는 안정적인 플랫폼을 제공합니다.

쿠버네티스는 추상화 및 기능의 추가 레이어를 추가하는 컨테이너 패러다임 위에 프리미티브를 제공함으로써 애플리케이션 실행 방식에 대한 많은 제어 기능을 사용자에게 제공합니다. 우리는 이러한 추상화를 "객체"라고 부르며 이러한 잘 구조화된 구성 요소는 Kubernetes가 기본 컨테이너를 구성 가능하고 강력한 애플리케이션으로 전환하는 기본 방법입니다. 사용자는 원하는 결과를 정의하고 클러스터는 현재 상태가 요청과 일치하도록 작동합니다.

쿠버네티스는 컨테이너의 수명 주기를 관리할 뿐만 아니라 다소 까다로운 작업인 컨테이너와 호스트 간의 연결 관리에도 도움이 됩니다. 컨테이너가 생성 및 소멸됨에 따라 구성 요소 간의 인터페이스는 서로 통신하는 방법과 외부 요청을 수신하는 방법에 대한 최신 정보로 새로 고쳐야 합니다. Kubernetes는 트래픽을 적절하게 라우팅하고 올바른 인터페이스를 외부 세계에 노출하기 위해 애플리케이션 그룹 위에 안정적인 자동 업데이트 서비스 모델을 제공하여 이러한 복잡성을 많이 처리합니다.