쿠버네티스 초보자 설치 설정 사용법

쿠버네티스 초보자 설치 설정 사용법

오늘은 쿠버네티스 초보자 설치 설정 사용법 에 대해서 알아보고 자세히 살펴보겠습니다.

쿠버네티스 는 컨테이너 개발 프로세스를 자동화하는 가장 인기 있는 오픈 소스 소프트웨어입니다.

클라우드 네이티브 컴퓨팅 재단(CNCF)의 연례 연구에 따르면, 조직의 96%가 쿠버네티스를 사용 중이거나 사용을 고려하고 있습니다.

자세히 살펴보면 전 세계 580만 명의 개발자가 쿠버네티스를 사용하며, 이는 전 세계 백엔드 개발자의 31%에 해당합니다.

향상된 확장성, 가용성, 짧은 배포 시간을 통해 기술을 활용할 수 있다는 점에서 선호도가 높습니다. 많은 개발자가 도커(한 번에 하나씩 컨테이너와 상호 작용하기 위해 CLI에 의존하는 포괄적인 도구)로 컨테이너를 시작하지만, 쿠버네티스는 협업할 수 있는 회로도를 통해 애플리케이션과 해당 인프라를 정의할 수 있는 높은 수준의 추상화를 제공합니다.

그럼, 쿠버네티스를 처음 접하는 초보자를 위한 쿠버네티스 초보자 설치 설정 사용법에 대해서 살펴보겠습니다.

쿠버네티스 초보자 설치 설정 사용법
쿠버네티스 초보자 설치 설정 사용법

쿠버네티스 초보자 설치 설정 사용법

쿠버네티스란 무엇이며 왜 필요한가요?

쿠버네티스 (Kubernetes)는 많은 애플리케이션 수명 주기 작업을 자동화하도록 설계된 강력하고 정교한 도구 세트입니다.

쿠버네티스는 처음에 Google에서 Borg라는 내부 도구로 개발되었으며 2014년에 오픈소스로 공개되었습니다.

20대 1의 컨테이너 오케스트레이터 경쟁에서 쿠버네티스는 아파치 메소스, 도커 스웜, 노마드를 제치고 최고의 플랫폼으로 부상했습니다. 쿠버네티스는 2018년부터 졸업한 CNCF 프로젝트입니다.

쿠버네티스는 궁극의 테트리스 게임과 같은 것으로, 컴퓨팅 리소스를 최적화하기 위해 컨테이너의 배치를 선택하고 이러한 워크로드가 최종적으로 어디에 배치될지 ‘오케스트레이션’합니다. 또한 컨테이너가 실패할 경우 자동으로 복구하고 다시 시작할 수 있는 자가 복구 기능도 제공합니다.

쿠버네티스는 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화하는 데 사용되는 오픈 소스 조정 엔진(프레임워크)으로, 예측 가능성 및 가용성 처리를 포함합니다.

간단히 컨테이너화된 애플리케이션을 생각해 봅시다. 애플리케이션 사용자에게 서비스를 제공하려면 여러 개의 컨테이너를 실행해야 합니다. 이러한 컨테이너를 관리해야 할 때 걱정이 시작됩니다.

컨테이너가 반드시 동일한 머신에 있지 않을 수 있으므로 관리가 더 복잡해집니다. 그렇다면 이 문제에 대한 해결책은 무엇일까요?

쿠버네티스는 이러한 모든 프로세스를 원활하게 처리할 수 있는 효율적인 방법을 제공합니다.

쿠버네티스를 도커와 같은 컨테이너 엔진에 비유할 수도 있지만, 그보다는 컨테이너 오케스트레이터입니다.

이제 막 시작하는 개발자는 쿠버네티스가 오케스트레이션을 수행하는 방식에 대해 걱정할 필요가 없습니다.

K8s 란?

종종 K8s로 약칭되는 쿠버네티스는 Kubernetes의 ‘K’와 ‘s’ 사이에는 8개의 글자가 있는데, 여기서 약어 K8s가 유래되었습니다.

쿠버네티스 특징

쿠버네티스에는 컨테이너 및 기타 관련 인프라를 실행하기 위한 광범위한 기능을 갖춘 여러 기능이 있습니다.

  1. 자동화된 롤아웃, 확장 및 롤백
    쿠버네티스는 지정된 수의 복제본을 생성하고, 적절한(가장 적합한) 하드웨어에 복제본을 배포하고, 노드가 다운타임 중인 경우 컨테이너 일정을 재조정하는 작업을 로봇화합니다. CPU 사용량과 같은 수요 또는 변화하는 요구사항에 따라 복제본을 즉시 확장할 수 있습니다.
  2. 서비스 검색, 로드 안정화 및 네트워크 진입
    쿠버네티스는 내부 서비스 검색 및 퍼블릭 컨테이너 노출을 포함한 고유한 네트워킹 솔루션을 제공합니다.
  3. 상태가 있는 애플리케이션과 없는 애플리케이션
    초기에 쿠버네티스는 주로 상태 비저장 컨테이너에 중점을 두었습니다. 기술이 여러 방면에서 발전함에 따라 이제는 상태 저장 애플리케이션을 나타내는 기본 제공 개체를 수용합니다. 비준을 받으면 모든 애플리케이션을 쿠버네티스에서 실행할 수 있습니다.
  4. 스토리지 규정
    로컬 파일시스템, 네트워크 공유 또는 클라우드에 있든, 쿠버네티스는 컨테이너에서 실행되는 애플리케이션에 퍼시스턴트 스토리지를 제공합니다(추상화). 그리고 추상화를 통해 기본 인프라에 관계없이 스토리지 요구 사항을 정의할 수 있습니다.
  5. 선언적 상태
    쿠버네티스는 오브젝트 매니페스트라고 하는 아직 마크업 언어(YAML) 파일을 사용하여 클러스터에 대해 원하는 상태를 지정합니다.
    매니페스트는 다른 구성 중에서도 원하는 애플리케이션 인스턴스 및 네트워킹 규칙을 포함하되 이에 국한되지 않는 클러스터의 모양을 지정합니다.
    매니페스트를 적용하면 쿠버네티스가 모든 상태 전환을 자동으로 처리하므로 이를 위해 스크립트를 작성할 필요가 없습니다.
  6. 다양한 작업 환경
    클라우드나 개발자 워크스테이션에서만 쿠버네티스를 사용할 수 있습니다. 특정 사용 사례에 맞게 거의 모든 배포판을 사용할 수 있습니다.
    Amazon Web Services, Google Cloud, Microsoft Azure와 같은 주요 클라우드 기술 제공업체에 주목하세요.
    이들 모두 관리형 Kubernetes 서비스를 제공하는 한편, 미니큐브나 K3와 같은 단일 노드 배포판도 로컬에서 사용할 수 있다는 것을 알게 될 것입니다.
  7. 뛰어난 확장성
    쿠버네티스는 다양한 기능의 집합체입니다. 그것만으로는 충분하지 않다면 확장을 통해 기능을 가속화할 수 있습니다.
    사용자 지정 개체 유형, 연산자 및 컨트롤러를 구축하여 워크로드를 간소화할 수 있습니다.

쿠버네티스 아키텍처

쿠버네티스 아키텍처의 핵심은 하나의 마스터 노드와 두 개의 워커 노드로 구성됩니다. 마스터 노드는 클러스터에서 샷을 호출하고, 워커(슬레이브) 노드는 마스터가 결정한 대로 애플리케이션을 실행합니다.

마스터 노드

마스터 노드는 클러스터 상태를 지시하고 각 특정 노드의 동작을 결정합니다. 마스터 노드를 설정하려면 몇 가지 프로세스가 필요합니다.

  1. API 서버
    모든 클러스터 통신은 이곳을 기반으로 합니다. 모든 클러스터 구성 요소가 정보를 교환할 수 있는 게이트웨이입니다.
    쿠버네티스 API를 설명하자면 여기서 수행되는 두 가지 주요 역할이 있습니다. 첫 번째는 사용자가 클러스터와 상호 작용할 수 있는 진입점입니다.
    예를 들어, Kubectl을 사용할 때 요청을 전송합니다. 두 번째는 요청을 인증하고 유효성을 검사하는 게이트키핑으로서 이 경우 특정 사용자만 요청을 실행할 수 있다.
  2. 스케줄러
    스케줄러는 애플리케이션 또는 쿠버네티스 워크로드 오브젝트를 워커 노드에 할당합니다. 여기서 스케줄러는 리소스 요구사항에 따라 노드에 파드를 배치합니다. 여기서 말하는 파드란 Kubernetes에서 배포의 작은 단위입니다.
  3. 컨트롤러 관리자
    이 유닛은 정확한 파드 수를 유지하기 위해 노드 장애와 같은 클러스터를 유지 관리합니다.
    파드가 죽는 것과 같은 클러스터 상태 변경을 감지하고 파드를 원래 상태로 복원하려고 시도합니다. 예를 들어, 파드가 실수로 죽으면 컨트롤러 매니저는 스케줄러에 어떤 노드가 대체 노드로서 새 파드를 스핀업할지 비준하도록 요청하고, kubelet은 새 파드를 스핀업합니다.
  4. etcd
    클러스터 브레인이라고도 합니다. 이 유닛은 클러스터 구성을 위한 키 값 저장소입니다. 즉, 모든 클러스터 변경이 여기서 이루어집니다.
    키 값 분산 저장소를 저장하여 클러스터를 백업할 수 있습니다. 단, 여기에는 클러스터 상태 데이터만 저장되고 애플리케이션 데이터는 저장되지 않는다는 점에 유의하세요. 이 유닛은 클러스터 상태 정보를 보관하고, 클러스터에 대한 인식을 앞선 프로세스에 제공하기 위한 용도로만 사용됩니다.

슬레이브 노드

모든 슬레이브 노드에는 쿠버네티스가 상호 작용하고 모든 노드 내에서 파드를 개별적으로 스핀업할 수 있도록 하는 세 개의 노드 프로세스가 설치됩니다. 필요한 프로세스는 다음과 같습니다.

  1. Kubelet
    컨테이너 실행 레이어에 대한 실행을 실행하는 쿠버네티스의 기본 서비스입니다.
    이 유닛을 제거하면, 쿠버네티스는 키-값 저장소로 승인된 REST API에 불과합니다. 기본적으로 쿠버네티스는 컨테이너 애플리케이션을 실행합니다.
    컨테이너는 항상 서로 및 기본 호스트 시스템으로부터 격리되어 있습니다. 이는 개별 애플리케이션 관리를 서로 분리하고 물리적 또는 가상 인프라로부터 분리하는 분석적 방법으로 입증되었습니다.
    API 어드미션 컨트롤은 파드를 거부하거나 추가 제약 조건을 추가할 수 있지만, 스케줄러나 데몬셋이 아니라 특정 노드에서 실행되는 파드의 최종 승인자는 kubelet입니다. 요약하자면, kubelet은 노드 및 컨테이너와 상호 작용합니다. 또한 컨테이너 런타임을 사용하여 구성 파일을 가져와서 파드를 스핀업합니다.
  2. 컨테이너 런타임
    이 섹션에서는 컨테이너를 실행합니다. 예를 들어, Docker, rkt 또는 conatinered를 사용하여 컨테이너 작동 방식 섹션을 좀 더 자세히 알아볼 수 있습니다.
  3. Kube-proxy
    이 유닛은 로드 밸런싱의 경우와 같은 공통 정책 하에서 노드 파드 그룹에 대한 추상화 계층을 제공합니다.
    모든 노드는 Kube-proxy를 적용하여 동적 파드에 액세스하는 클라이언트에 가상 IP 주소를 제공합니다. 이 구조는 성능 오버헤드를 낮게 유지하면서 로드 밸런싱을 위한 솔루션입니다.

쿠버네티스 설치 설정 방법

지금까지는 이론적인 부분에 많은 시간을 할애했으며, 계단식 섹션에서는 전술적인 부분과 함께 컨테이너를 직접 경험해보는 시간을 갖도록 하겠습니다.

이 튜토리얼은 특히 Windows 운영 체제에서의 설치에 대해 다룹니다.

Windows를 사용할 때 설치하는 방법은 여러 가지가 있는데, 명령줄이나 그래픽 사용자 인터페이스를 선택할 수 있습니다. 하지만 다음 필수 사양을 충족하는지 확인해야 합니다.

하드웨어는 마스터 노드에 2GB 이상의 메모리와 작업자 노드에 700MB 이상의 메모리가 필요합니다.

소프트웨어 요구 사항의 경우, Hype-v, 데스크톱용 Docker, 고유한 Mac 주소 및 모든 노드에 대한 고유한 제품 UUID가 필요합니다. 단계별 접근 방식은 다음과 같습니다.

Hyper-V 설치 및 설정

Hyper-V는 Window의 기본 가상화 소프트웨어입니다. 간단히 말해, 가상화 소프트웨어의 스테로이드 버전입니다. 이 소프트웨어를 사용하면 Microsoft GUI 또는 명령줄에서 가상 머신을 관리할 수 있습니다. Hyper-V를 활성화하려면 다음 단계를 따르세요.

  1. 제어판을 엽니다.
  2. 왼쪽 패널에서 프로그램을 클릭합니다.
  3. 프로그램 및 기능 페이지에서 ‘Windows 기능 켜기 또는 끄기’를 클릭합니다.
  4. Windows용 Hyper-V 및 하이퍼바이저 기능을 선택합니다.
  5. 이 단계에서 확인을 선택하면 컴퓨터가 재시작되어 새 설정이 활성화됩니다.

간혹 모든 것이 제대로 구성되었는지 확인하기 위해 PC를 여러 번 다시 시작할 수 있습니다. Power Shell에서 다음 명령을 입력하여 설치가 성공적으로 완료되었는지 확인할 수 있습니다.

Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V

화면이 ‘enabled‘ 상태로 채워지는지 확인합니다.

Docker 설치

이미 학습했듯이 쿠버네티스는 컨테이너 위에 구축된 컨테이너 오케스트레이션 도구이며, 이 경우 도커(Docker)가 좋은 선택입니다.

쿠버네티스는 도커와 통신하며 엔터프라이즈 수준에서 모든 것을 관리합니다. Windows용 도커를 다운로드하여 시작하세요.

도커 데스크톱을 사용해야 하는 이유가 궁금하다면, 도커화된(컨테이너화된) 애플리케이션의 개발, 배포 및 실행을 간소화하기 위해 선호됩니다.

또한 Hyper-V와 네트워킹을 사용하여 Windows에서 도커 앱을 빌드하는 가장 빠른 방법이기도 합니다.

성공적으로 설치한 후에는 실행 중인 모든 터미널에서 항상 Docker에 액세스할 수 있습니다. 설치에 대한 자세한 안내는 공식 [Docker 문서] 에서 확인할 수 있습니다.

설치 후 숨겨진 아이콘과 같은 문제가 발생하면 컴퓨터를 다시 시작하면 문제를 해결할 수 있습니다.

쿠버네티스 설치

Docker GUI를 통해 설정을 구성하고, 쿠버네티스를 설치 및 활성화할 수 있습니다. 쿠버네티스을 설치하려면 다음 단계를 따르세요.

  1. Docker 트레이 아이콘을 마우스 오른쪽 버튼으로 클릭하고 속성을 선택합니다.
  2. ‘Properties’을 클릭한 후 드롭다운 메뉴에서 ‘Settings’을 선택하세요.
  3. 왼쪽 패널에서 ‘Kubernetes’를 선택하고 ‘Apply’를 클릭합니다.

그러면 도커가 몇 가지 추가 패키지와 종속성을 설치합니다. 이 과정은 인터넷 속도에 따라 약 5~10분 정도 소요됩니다. Docker 앱을 사용하여 모든 것이 올바르게 작동하는지 확인할 수 있습니다.

쿠버네티스 앱은 CLI를 사용하여 배포할 수 있으므로 기본적으로 설치되어 있지 않은 쿠버네티스 대시보드를 설치해야 할 수 있습니다. 다음 단계에 따라 대시보드를 설치합니다.

  1. YAML 구성을 다운로드한다.
  2. 이 코드를 사용하여 애플리케이션을 배포한다: . Kubectl apply -f .\recommended.yaml
  3. 다음 명령으로 모든 것이 잘 설정되었는지 확인한다: kubectl.exe get -f .\recommended.yaml.txt

대시보드에 액세스하려면 파워셸에서 다음 명령을 실행합니다.(CMD가 아님)

  1. 다음 코드를 실행한다. ((kubectl -n kube-system describe secret default | select-string “token:”) – split “+”)[1]
    생성된 토큰을 복사하고 kubectl proxy 를 실행한다.
  2. 브라우저에서 로컬 링크를 연다.
  3. ‘Token’을 클릭하고 여기에 토큰을 붙여넣는다.
  4. 로그인한다.

여기까지 왔다면, 화면에 쿠버네티스 대시보드가 채워졌을 것입니다. 이제 CLI를 사용하여 어려운 작업을 하지 않고도 앱을 관리할 수 있습니다.

쿠버네티스 클러스터를 생성하고 관리하는 방법

여기까지의 과정을 수행했다면 호스트에 쿠버네티스를 성공적으로 설치했을 것입니다. 이제 다음 단계에 따라 클러스터를 생성하고 간단한 관리를 수행하세요.

  1. 네트워킹 구성 – 여기에서 클러스터 노드 간의 네트워킹을 설정하여 서로 통신할 수 있도록 해야 합니다.
  2. 클러스터 인증 설정 – 클러스터 액세스를 위한 인증 및 권한 부여 메커니즘을 만듭니다.
  3. 마스터 구성 요소 설정 – API 서버, 스케줄러 및 컨트롤러 관리자를 포함합니다.
  4. 작업자 노드 가입 – 클러스터 설정 프로세스에서 제공한 구성 파일을 사용하여 작업자 노드를 클러스터에 연결합니다.
  5. 추가 기능 배포 – 확장을 설치하여 클러스터의 기능을 향상시킬 수 있습니다.
  6. 워크로드 관리 – 이제 앱을 배포할 차례입니다.

이것은 클러스터 생성 프로세스의 개요일 뿐이지만, 여러 명령어와 관련된 많은 단계가 포함되어 있습니다. 다음은 배포 전에 클러스터를 만드는 방법에 대한 공식 문서 가이드입니다. 이 가이드를 참고하세요.

쿠버네티스를 사용하여 첫 번째 애플리케이션을 배포하는 방법

쿠버네티스를 사용할 때 가장 일반적으로 사용되는 명령은 지정된 리소스를 생성하거나 삭제하는 것과 같은 특정 작업을 수행할 수 있는 kubectl action resource 입니다.

문제가 발생하면 특정 서브커맨드 뒤에 –help를 사용하여 추가 정보를 얻을 수 있습니다.

예를 들어, --help 로 노드를 가져옵니다. 첫 번째 쿠버네티스 앱을 배포하기 위해 아래 커맨드를 사용합니다.

kubectl create deployment Kubernetes-bootcamp -image=gcr.io/google-samples/Kubernetes-bootcamp:v1

맺음말 쿠버네티스 초보자 설치 설정 사용법

지금까지 쿠버네티스 초보자 설치 설정 사용법에 대해서 알아보고 자세히 살펴보았습니다.

이 가이드는 쿠버네티스 기술에 대한 입문서였습니다. 쿠버네티스의 장점, 기능 및 아키텍처를 배웠을 것입니다. 다행히도 몇 가지 포인터(외부 리소스)를 참조해야 했을 수도 있지만, 내부에서 어떻게 작동하는지 설명했습니다.

초보자로서 전체 기술 스택을 파악하는 것이 부담스러울 수 있지만, 이 포스팅은 쿠버네티스를 시작하는 분들에게 도움이 될 수 있는 가이드라인 입니다.

좀 더 추가적인 연습을 위해서는 공식 Kubernetes 설명서를 참고하시기 바랍니다.


댓글 남기기

디지털 인사인트 매거진