본문 바로가기

카테고리 없음

쿠버네티스 클러스터 구축과 운용을 위한 단계별 가이드

쿠버네티스 구성 방법

쿠버네티스(Kubernetes)는 컨테이너화된 애플리케이션을 관리하기 위한 오픈 소스 플랫폼입니다. 많은 기업이 마이크로서비스 아키텍처로 전환하면서 쿠버네티스의 필요성이 더욱 커졌습니다. 이번 포스팅에서는 쿠버네티스를 구성하는 방법에 대해 단계별로 설명하겠습니다.

1. 사전 준비

쿠버네티스를 구성하기 위해서는 몇 가지 사전 준비가 필요합니다.

  • 서버 준비: 쿠버네티스 클러스터를 구성하기 위한 서버 또는 가상 머신이 필요합니다. 최소한 한 대의 마스터 노드와 여러 대의 워커 노드가 필요합니다.
  • 운영체제: 보통 리눅스 배포판(우분투, CentOS 등)이 사용됩니다.
  • 네트워크 환경: 클러스터의 각 노드가 서로 통신할 수 있도록 적절한 네트워크 환경이 구성되어야 합니다.

2. 쿠버네티스 설치 도구 선택

쿠버네티스를 설치하는 방법은 여러 가지가 있습니다. 대표적인 방법으로는 다음과 같습니다.

  • Kubeadm: 쿠버네티스 클러스터를 쉽게 구성할 수 있도록 돕는 도구입니다.
  • Minikube: 로컬 개발 환경에서 쿠버네티스를 실행할 수 있게 해주는 도구입니다.
  • Kops: AWS에서 쿠버네티스를 쉽게 배포하고 관리할 수 있게 해주는 도구입니다.

가장 흔하게 사용되는 Kubeadm을 기준으로 진행하겠습니다.

3. 쿠버네티스 마스터 노드 설정

  1. 필수 패키지 설치: 모든 노드에서 kubelet, kubeadm, kubectl을 설치합니다.

    sudo apt-get update
    sudo apt-get install -y apt-transport-https ca-certificates curl
    sudo curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
    echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
    sudo apt-get update
    sudo apt-get install -y kubelet kubeadm kubectl
    sudo apt-mark hold kubelet kubeadm kubectl
  2. 마스터 노드 초기화: 마스터 노드에서 다음 명령어를 실행하여 클러스터를 초기화합니다.

    sudo kubeadm init

    초기화가 완료되면 클러스터에 워커 노드를 조인시킬 수 있는 명령어가 출력됩니다. 이 명령어를 메모해 둡니다.

  3. kubectl 설정: kubectl을 사용하기 위해 kubeconfig 파일을 설정합니다.

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config

4. 네트워크 플러그인 설치

쿠버네티스 클러스터는 네트워크 플러그인이 필요합니다. Calico, Flannel 등 여러 가지 옵션이 있지만, 여기서는 Calico를 설치해 보겠습니다.

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

5. 워커 노드 설정

각 워커 노드에서 마스터 노드에서 복사한 조인 명령어를 실행하여 클러스터에 추가합니다.

sudo kubeadm join <마스터 노드 IP>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>

6. 클러스터 상태 확인

모든 노드가 정상적으로 추가되었다면, 클러스터의 상태를 확인합니다.

kubectl get nodes

위 명령어를 통해 각 노드의 상태가 "Ready"로 표시되는지 확인합니다.

7. 애플리케이션 배포

클러스터가 성공적으로 구성되었다면, 이제 애플리케이션을 배포할 수 있습니다. 아래는 간단한 nginx 서버를 배포하는 예제입니다.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

위 YAML 파일을 nginx-deployment.yaml이라는 파일명으로 저장한 후, 아래 명령어로 배포합니다.

kubectl apply -f nginx-deployment.yaml

결론

쿠버네티스를 구성하는 과정은 복잡해 보일 수 있지만, 단계별로 진행하면 매우 간단합니다. 이러한 설치 과정을 통해 여러분은 강력한 컨테이너 오케스트레이션 플랫폼을 손쉽게 구축할 수 있습니다. 쿠버네티스를 활용하여 애플리케이션을 관리하고 배포하는 데 많은 이점을 누려보세요.