01_쿠버네티스 개요와 클러스터 설치

Nari.·2024년 10월 9일
0
post-custom-banner

01. 쿠버네티스란?

쿠버네티스는 대규모 클러스터 환경에서 컨테이너화된 애플리케이션을 자동으로 배포하고 확장, 관리하는데 필요한 여러가지 요소들을 자동화하는 오픈소스 플랫폼이다.

데브옵스(DevOps) 혹승 시스템 운영자 관점에서 바라본 쿠버네티스의 가장 큰 특징은

  1. 소스코드 기반으로 클러스터를 운영하고
    • 모든 작업을 소스코드로 관리하면 여러 이점이 있는데, 대표적으로 실제 운영 시스템에 적용하기 전에 코드로 구현할 수 있어서 개발팀, 데브옵스팀, 보안팀 등 모든 이해관계자가 사전에 충분히 검토할 수 있다는 것이다.
  2. 의도한 상태(desired state)로 클러스터를 관리하는 것
    • 쿠버네티스는 클러스터를 '의도한 상태'를 기준으로 관리한다. 코드 형태로 배포된 클러스터는 최초 의도한 상태와 현재 실행중인 상태를 쿠버네티스 컨트롤러가 자동으로 끊임없이 확인하여 차이점이 발견되면 현재 상태를 자동으로 처음에 의도한 상태로 변경한다(self-healing).

컨테이너 환경의 쿠버네티스는 기존 가상 머신 환경과 몇가지 기본 철학이 다르다. 대표적으로 '애완동물 vs 가축'의 개념이다.

  • 가상 머신 환경에서는 각 가상 머신마다 이름을 부여하고 문제가 생겼을 때 각 서버에 접속하여 설정을 변경해서 문제를 해결했다.
  • 쿠버네티스 환경에서는 애플리케이션을 실행하는 기본 단위인 파드(Pod)에 임의의 이름을 지정하고(마치 가축은 번호로 이름을 지정하듯이) 문제가 발생하면 즉각 새로운 파드로 교체한다.

02. Kubespray를 이용해 3개의 노드로 구성된 클러스터 구축

  • kubespray는 다양항한 설치 옵션 및 운영체제를 지원하는 앤서블(Ansible)기반의 쿠버네티스 설치 자동화 도구
  • K3s는 랜처(Rancher)에서 지원하는 솔루션으로 경량화된 쿠버네티스 설치 도구로서 Edge, IoT, 단일노드 등 시스템 자원이 부족한 다양한 환경에 적합

03. K3s를 이용해 단일 노드로 구성된 클러스터 구축

단일 노드로 구성된 클러스터도 기본적인 쿠버네티스 명령어 및 작업 수행은 가능하지만 각 노드 간 워크로드 분배, 노드 페일오버(failover)등의 클러스터 관리 업무는 수행하기가 어렵다.

04. 로컬호스트에서 원격 쿠버네티스 관리하기

쿠버네티스의 모든 작업은 컨트롤 플레인 노드의 API파드와 통신하는 과정을 거쳐 실행된다. 원격서버와 로컬호스트에서 실행하는 모든 명령어는 동일하게 쿠버네티스의 API가 처리한다.

$ kubectl version --client
WARNING: This version information is deprecated and will be replaced with the output from kubectl version --short.  Use --output=yaml|json to get the full version.
Client Version: version.Info{Major:"1", Minor:"25", GitVersion:"v1.25.2", GitCommit:"5835544ca568b757a8ecae5c153f317e5736700e", GitTreeState:"clean", BuildDate:"2022-09-21T14:33:49Z", GoVersion:"go1.19.1", Compiler:"gc", Platform:"darwin/arm64"}
Kustomize Version: v4.5.7

쿠버네티스는 원격 클러스터의 API서버 통신에 필요한 인증 정보를 kubeconfig(${HOME}/.kube/config) 파일에서 관리한다.

이 파일의 정보는

$ kubectl config view

명령어를 통해 조회할 수 있다.

post-custom-banner

0개의 댓글