래원

[Kubernetes] Kubernetes 설치 본문

Docker 및 Kubernetes/Kubernetes

[Kubernetes] Kubernetes 설치

Laewon Jeong 2025. 1. 23. 20:01

 

 

이번 글에서는 Kubernetes를 설치한 과정에 대해 정리할 예정이다.

 

Kubernetes 설치 방법은 Minikube, kubeadm, kubernetes 공식 클라우드 배포 방법 등 다양한데 나는 kubeadm을 사용했다.

 

APT 패키지 업데이트 및 필수 패키지 설치

먼저 apt 패키지 업데이트 및 필수 패키지를 설치한다.

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg

 

Kubernetes APT 저장소 키 추가

다음으로 kubernetes apt 저장소 키를 추가한다.

# If the folder `/etc/apt/keyrings` does not exist, it should be created before the curl command, read the note below.
# sudo mkdir -p -m 755 /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
sudo chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg # allow unprivileged APT programs to read this keyring

# This overwrites any existing configuration in /etc/apt/sources.list.d/kubernetes.list
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.32/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo chmod 644 /etc/apt/sources.list.d/kubernetes.list   # helps tools such as command-not-found to work correctly

 

Kubernetes 패키지 설치

Kubernetes 클러스터를 구성하기 위해 필요한 kubectl, kubelet, kubeadm을 모두 설치한다.

sudo apt-get update
sudo apt-get install -y kubectl kubelet kubeadm

 

다음으로 자동으로 패키지가 업데이트도지 않도록 버전을 고정해준다.

sudo apt-mark hold kubelet kubeadm kubectl

 

다음 명령어를 통해 잘 설치 되었는지 확인할 수 있다.

sudo kubectl vesrion

 

Kubernetes 클러스터 초기화

Swap 비활성화

Kubernetes는 노드에서 메모리를 효율적으로 관리하기 위해 swap이 비활성화된 상태를 요구한다.
노드의 메모리 부족 시 swap 영역을 사용하는 경우, Kubernetes의 스케줄러와 kubelet이 리소스를 관리하는 데 혼란이 생기고, 안정적인 클러스터 운영에 문제가 발생할 수 있기 때문이다. 또한, Kubelet은 기본적으로 swap이 활성화된 상태에서는 동작을 제한하므로, 클러스터 초기화를 위해 swap을 비활성화해야 한다.

# 모든 서버
sudo swapoff -a

 

Kubeadm으로 클러스터 초기화

# Master Node에서만
sudo kubeamd init

 

init이 완료되면 위와 같은 결과를 얻을 수 있다. 위 그림에서 시키는대로 진행하면 된다.

# Master Node에서만
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# root 유저라면
export KUBECONFIG=/etc/kubernetes/admin.conf

 

다음으로 위 그림에서 kubeadm join ~~~~~ 라인이 있을텐데 이를 복사하여 worker node에 접속하여 붙여넣기 통해 Master Node와 연결을 시켜주면된다.

# Master Node를 제외한 다른 Node들에서
kubeadm join ~~~~

 

다음과 같은 명령어로 서로 잘 연결되었는지 확인할 수 있다.

# Master Node에서
kubectl get nodes

 

CNI 설정

Kubernetes 클러스터에서 네트워크 구성을 위해 CNI 플러그인을 설정해야한다. 

대표적으로 Calico와 Flannel이 있는데, 나는 calico를 사용했다.

다음과 같이 적용할 수 있다.

# 마스터 노드에서
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

 

적용을 확인하기 위해서 다음 명령어를 사용했다.

calico 관련 pod들이 Running 상태로 표시되면 정상적으로 적용한 것이라 볼 수 있다.

kubectl get pods -n kube-system

 

테스트용 pod 생성

클러스터가 잘 구성되었는지 확인하기 위해 테스트용 pod를 생성하였다.

kubectl run test-pod --image=nginx --restart=Never

kubectl get pod

 

정상적으로 동작함을 확인하고 pod를 지워주었다.

kubectl delete pod <pod 이름>

 

 

마무리


이번 글에서는 kubernetes 설치 과정에 대해 정리해보았다. 

 

kubernetes 클러스터도 구성되었으니 다음 글에서부터는 kubernetes 구성 요소의 대한 내용과 이를 직접 사용해본 내용을 포스팅할 예정이다.