kubernates를 사용하는 이유
가상머신 vs 컨테이너
가상머신은 하이퍼바이저 위에 게스트OS를 포함하여 앱을 실행하는 형태
컨테이너는 호스트OS에서 컨테이너 소프트웨어를 통해 앱을 컨테이너 내에 담아 실행하는 형태
요즘 같이 이벤트 등의 이유로 트래픽이 순식간에 몰리거나 할 때 스케일업 보다는 스케일 아웃을 통해 인스턴스를 늘리고 줄이고 한다. 그런데 가상머신은 게스트OS 등 앱 자체와는 상관 없는 환경 구성이 필요하므로 앱을 여러 개 구성할 때 컨테이너 방식보다 자원의 낭비가 생긴다.
그러나 컨테이너 방식을 사용한다고 해도 마냥 장점만 있는 것이 아닌게, 가상머신 방식과 달리 컨테이너 방식은 호스트OS에 문제가 생겨 멈추게 되면 모든 컨테이너가 멈추게 된다는 단점이 있다. 그래서 자칫하면 모든 서비스가 마비될 수 있다.
쿠버네티스는 위와 같은 상황을 예방하고 해결할 수 있다. 쿠버네티스는 컨테이너를 조화롭게 사용할 수 있도록 도와주는 도구이다. 주요 기능으로는 어플리케이션의 쉬운 배포, 확장, 모니터링, 관리 등의 기능을 제공한다. 쿠버네티스를 설치할 수 있는 환경이라면 온프레미스나 클라우드 환경 상관없이 모두 사용 가능하며, 한곳에서 앱이 마비가 되었을 경우에 이를 모니터링하고 있다가 대체할 수 있는 환경을 마련해준다.
요즘 현업에서 자주 사용되고 취업 우대 사항에도 거의 매번 등장할만큼 중요하기에 이번에 쿠버네티스에 대해서 배워보기로 했다.
Docker 설치하기
https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository
Install Docker Engine on Ubuntu
Jumpstart your client-side server applications with Docker Engine on Ubuntu. This guide details prerequisites and multiple methods to install Docker Engine on Ubuntu.
docs.docker.com

그냥 위 스크린샷에 해당하는 부분을 따라서 진행하면 된다.
쿠버네티스 설치하기
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
Installing kubeadm
This page shows how to install the kubeadm toolbox. For information on how to create a cluster with kubeadm once you have performed this installation process, see the Creating a cluster with kubeadm page. This installation guide is for Kubernetes v1.30. If
kubernetes.io
쿠버네티스를 설치하는 방법은 간단하다. 위 공식 매뉴얼대로 따라하기만 하면 된다. 나는 GCP 환경에서 진행하지만, 윈도우 환경이라면 가상 머신을 이용해서 진행하면 된다.

이 부분 아래에 있는 설치 과정을 진행하면 된다.

sudo apt-get update
# apt-transport-https may be a dummy package; if so, you can skip that package
sudo apt-get install -y apt-transport-https ca-certificates curl gpg
# If the directory `/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.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

# 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.31/deb/ /' | 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
sudo systemctl enable --now kubelet
enable은 나중에 재부팅했을 때 자동 실행되도록 하는 명령어라 해도 되고 안 해도 된다. 하지만 하는게 편하니 하는걸 추천한다.
오류 해결

만약 sudo kubeadm init 명령어 실행 중에 위와 같은 오류가 발생한다면 Docker 설치 과정에서 containerd.io 설치를 빼먹었을 수도 있으니 다시 설치하면 된다.
그리고 설치한 후에 /etc/containerd/ 경로로 이동하면 config.toml 파일이 있을텐데

이렇게 되어있는 내용에서 disabled_plugins 행을 주석 처리하고 저장한다.
이후에 sudo systemctl restart containerd.service를 실행하고 다시 시도해보면 정상 작동할 것이다.
성공하면 무언가가 많이 뜨는데 끝날 때까지 기다리면 된다.
-- 추가 --
만약 kubeadm init 실행 후 에러가 발생했으면 kubeadm reset으로 다시 돌릴 수 있다.
다만, 일부 설정 파일은 직접 제거해야 할 수도 있다.
kubeadm reset
rm -rf /etc/kubernetes/manifests/*
systemctl restart kubelet
systemctl restart containerd
추가 사항

swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab
swap 기능을 꺼야 제대로 동작한다.
https://kubernetes.io/ko/docs/setup/production-environment/_print/#%EB%8F%84%EC%BB%A4
프로덕션 환경
프로덕션 수준의 쿠버네티스 클러스터 생성
kubernetes.io

IP테이블 관련 설정을 해주어야 한다.
kubectl get nodes를 실행하면 Not Ready로 뜰텐데
kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml
위 명령어를 실행하고 조금만 기다리면 Ready로 바뀌는 것을 확인할 수 있다.
'공부 > kubernates' 카테고리의 다른 글
| [kubernates] Kubespray 설치하기 (0) | 2024.11.28 |
|---|---|
| [Kubernates] 쿠버네티스 명령어 실습하기 (1) | 2024.09.05 |
| [Linux] VMware로 쿠버네티스 테스트 환경 구축하기 (0) | 2024.08.16 |