Kubernetes 설정 · 3 min read · Nov 03, 2025

AWS EC2 인스턴스에서 Ubuntu를 사용하여 kubeadm으로 Kubernetes 클러스터 설정하기

이 기사에서는 Ubuntu 18.04 LTS 서버에서 2개의 워커 노드와 1개의 마스터 노드를 갖춘 Kubernetes 클러스터를 설정하는 방법을 살펴보겠습니다. 클러스터를 설정하기 위해 “kubeadm“ 도구를 사용할 것입니다. Kubeadm은 Kubernetes 클러스터를 생성하기 위해 “kubeadm init“ 및 “kubeadm join“을 제공하는 도구입니다. 클러스터 생성을 진행하기 전에 몇 가지 용어를 간단히 이해해 봅시다.

  1. Docker:
    Docker는 애플리케이션을 개발, 배포 및 실행하기 위한 오픈 플랫폼입니다. Docker를 사용하면 애플리케이션을 인프라와 분리하여 소프트웨어를 신속하게 제공할 수 있습니다. Docker를 사용하면 애플리케이션을 관리하는 것과 같은 방식으로 인프라를 관리할 수 있습니다.
  2. Image:
    이미지는 Docker 컨테이너를 생성하기 위한 지침이 포함된 읽기 전용 템플릿입니다. 종종 이미지는 다른 이미지를 기반으로 하며 일부 추가 사용자 정의가 포함됩니다.
  3. Container:
    컨테이너는 이미지의 실행 가능한 인스턴스입니다. Docker API 또는 CLI를 사용하여 컨테이너를 생성, 시작, 중지, 이동 또는 삭제할 수 있습니다. 컨테이너를 하나 이상의 네트워크에 연결하거나 스토리지를 연결하거나 현재 상태를 기반으로 새 이미지를 생성할 수 있습니다.
  4. Kubernetes:
    Kubernetes는 애플리케이션 배포, 확장 및 관리를 자동화하기 위한 오픈 소스 컨테이너 오케스트레이션 시스템입니다.
  5. Nodes:
    노드는 클러스터 내의 단일 머신을 나타냅니다.
  6. Pods:
    Pod는 동일한 호스트에서 함께 배포되는 컨테이너 그룹입니다. 이는 Kubernetes 애플리케이션의 기본 실행 단위입니다.
  7. Deployments:
    Deployment는 애플리케이션의 여러 복제본을 실행하고 실패하거나 응답하지 않는 인스턴스를 자동으로 교체합니다. 이는 Pods 및 ReplicaSets에 대한 선언적 업데이트를 제공합니다.
  8. Replica Set:
    Replica Set은 몇 개의 pod 복제본이 실행되어야 하는지를 보장합니다. 이는 복제 컨트롤러의 대체로 간주될 수 있습니다.
  • Replication Controller:
    이는 장기 실행 pod의 감독자입니다. 지정된 수의 pod를 복제본이라고 하며 항상 실행되도록 보장합니다.
  1. Service:
    이는 Pods의 논리적 집합과 이를 액세스하는 정책을 정의하는 추상화입니다.

API 서버, etcd, 컨트롤러 관리자 및 스케줄러는 마스터의 구성 요소이며, Docker, Kubelet 서비스 및 Kubernetes 프록시 서비스는 워커 노드의 구성 요소입니다. 이 문서에서는 이러한 구성 요소에 대해 논의하지 않을 것입니다. 이러한 구성 요소에 대해 알고 싶다면 Kubernetes 공식 페이지를 방문할 수 있습니다.

사전 요구 사항

  1. 최소 2GB RAM과 2개의 CPU를 갖춘 3개의 Ubuntu 18.04 서버.
  2. 각 서버에서 “sudo” 액세스 권한이 있는 시스템 사용자.

우리가 할 일

  1. kubeadm으로 Kubernetes 클러스터 설정

kubeadm으로 Kubernetes 클러스터 설정하기

여기,

우리는 3개의 Ubuntu 18.04 LTS 서버가 있습니다.

서버 1= node1
서버 2= node2
서버 3= master

실제 설치를 진행하기 전에 서버의 호스트 이름을 변경합시다.

각 서버에서 호스트 이름을 설정하기 위해 다음 명령을 사용할 수 있습니다. 각 서버에서 다음 명령을 실행한 후, 서버에 다시 로그인하여 새로운 호스트 이름을 가져오도록 합니다.

sudo hostnamectl set-hostname "master"  
sudo hostnamectl set-hostname "node1"  
sudo hostnamectl set-hostname "node2"

작동하는 Kubernetes 클러스터를 가져오기 위해 아래에 언급된 단계를 따르십시오.

Docker gpg 키 가져오기 *(모든 노드에서 다음 명령을 실행하십시오):*

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Docker 저장소 추가 (모든 노드에서 다음 명령을 실행하십시오):

sudo add-apt-repository    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \  
   $(lsb_release -cs) \  
   stable"

Kubernetes gpg 키 가져오기 (모든 노드에서 다음 명령을 실행하십시오):

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

Kubernetes 저장소 추가 (모든 노드에서 다음 명령을 실행하십시오):

cat << EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list  
deb https://apt.kubernetes.io/ kubernetes-xenial main  
EOF

패키지 업데이트 (모든 노드에서 다음 명령을 실행하십시오):

sudo apt-get update

Docker, kubelet, kubeadm 및 kubectl 설치 (모든 노드에서 다음 명령을 실행하십시오):

sudo apt-get install -y docker-ce=18.06.1~ce~3-0~ubuntu kubelet=1.15.7-00 kubeadm=1.15.7-00 kubectl=1.15.7-00

*현재 버전으로 유지하기 (모든 노드에서 다음 명령을 실행하십시오)*:

sudo apt-mark hold docker-ce kubelet kubeadm kubectl

sysctl.conf에 iptables 규칙 추가 (모든 노드에서 다음 명령을 실행하십시오):

echo "net.bridge.bridge-nf-call-iptables=1" | sudo tee -a /etc/sysctl.conf

iptables를 즉시 활성화 (모든 노드에서 다음 명령을 실행하십시오):

sudo sysctl -p

마스터에서 :

클러스터 초기화 (마스터 노드에서만 다음 명령을 실행하십시오):

sudo kubeadm init --pod-network-cidr=10.244.0.0/16

로컬 kubeconfig 설정 *(마스터 노드에서만 다음 명령을 실행하십시오):*

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

Flannel CNI 네트워크 오버레이 적용 (마스터 노드에서만 다음 명령을 실행하십시오):

sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Node1 및 Node 2에서:

워커 노드를 클러스터에 추가 (Node1 및 Node2에서만 다음 명령을 실행하십시오):

sudo kubeadm join 172.31.4.161:6443 --token 0y52t6.ffsj8jkjfcl1sq8h \  
   --discovery-token-ca-cert-hash sha256:7aa1825042d19d3e567f7e4b447634e942fe9ed7f18f78464a9c05f451551ed5

워커 노드가 클러스터에 성공적으로 추가되었는지 확인하기 위해 마스터 노드에서 다음 명령을 실행하십시오:*:

kubectl get nodes

결론:

이 기사에서는 kubeadm 도구를 사용하여 Kubernetes 클러스터를 설정하는 방법을 배웠습니다. 단계를 놓치지 않고 적절한 설치가 이루어지면 클러스터를 얼마나 쉽게 생성할 수 있는지를 보았습니다.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.