학습 내용

설치 없이 실습하기

방법설명
Katacoda브라우저에서 바로 쿠버네티스 실습 가능
Play with KubernetesDocker 계정으로 접속, 4시간 세션

쿠버네티스 구성 도구

도구설명
kubeadm클러스터 생성/관리 공식 도구
kubesprayAnsible 기반 클러스터 배포 오픈소스
kopsAWS 등 클라우드에서 클러스터 관리

직접 설치 구성 (실습 환경)

Master Node  : Ubuntu 20.04, 2CPU, 2GB RAM
Worker Node1 : Ubuntu 20.04, 1CPU, 2GB RAM
Worker Node2 : Ubuntu 20.04, 1CPU, 2GB RAM

네트워크 구성:

  • Master: 192.168.56.10
  • Node1: 192.168.56.11
  • Node2: 192.168.56.12

실습 - kubeadm으로 클러스터 설치

공통 (모든 노드)

# 스왑 비활성화
sudo swapoff -a
sudo sed -i '/ swap / s/^/#/' /etc/fstab
 
# 컨테이너 런타임 (containerd) 설치
sudo apt-get update
sudo apt-get install -y containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
sudo systemctl restart containerd
 
# kubeadm / kubelet / kubectl 설치
sudo apt-get install -y apt-transport-https ca-certificates curl
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | \
  sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/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

Master 노드

sudo kubeadm init --pod-network-cidr=10.96.0.0/12 \
  --apiserver-advertise-address=192.168.56.10
 
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
 
# CNI 설치 (weave)
kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml

Worker 노드

# kubeadm init 출력에서 복사한 join 커맨드 실행
sudo kubeadm join 192.168.56.10:6443 --token <token> \
  --discovery-token-ca-cert-hash sha256:<hash>

설치 확인

kubectl get nodes
kubectl get pods -n kube-system

체크리스트

  • kubeadm / kubelet / kubectl 역할 구분
  • 스왑 비활성화가 필요한 이유 이해
  • kubeadm init → CNI 설치 → worker join 순서 암기
  • kubectl get nodes 로 모든 노드 Ready 확인

참고 링크