Kubernetes Ubuntu 설치 스크립트

Ubuntu용 Kubernetes 도구 설치 스크립트입니다. pkgs.k8s.io 저장소, kubelet/kubeadm/kubectl 설치, swap/kernel/runtime 확인과 kubeadm init 예시를 정리했습니다.

Ubuntu에서 Kubernetes 도구를 설치할 때는 오래된 apt.kubernetes.io kubernetes-xenial 저장소 예제를 그대로 쓰면 안 됩니다. 현재 공식 문서는 pkgs.k8s.io 저장소와 버전별 stable channel을 사용합니다.

kubeadm 기반 클러스터 생성을 위한 kubelet, kubeadm, kubectl 설치 스크립트입니다. 클러스터 초기화와 CNI 설치는 별도 절차로 분리합니다.

install-kubernetes-tools.sh

#!/usr/bin/env bash
set -euo pipefail

KUBERNETES_MINOR="${KUBERNETES_MINOR:-v1.36}"
KEYRING="/etc/apt/keyrings/kubernetes-apt-keyring.gpg"
LIST_FILE="/etc/apt/sources.list.d/kubernetes.list"

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gpg
sudo install -d -m 0755 /etc/apt/keyrings

curl -fsSL "https://pkgs.k8s.io/core:/stable:/${KUBERNETES_MINOR}/deb/Release.key" |
 sudo gpg --dearmor -o "${KEYRING}"

echo "deb [signed-by=${KEYRING}] https://pkgs.k8s.io/core:/stable:/${KUBERNETES_MINOR}/deb/ /" |
 sudo tee "${LIST_FILE}" >/dev/null

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

kubeadm version
kubectl version --client

사전 설정 확인

swapon --show
sudo swapoff -a
lsmod | grep br_netfilter || sudo modprobe br_netfilter
sysctl net.bridge.bridge-nf-call-iptables 2>/dev/null
systemctl status containerd --no-pager 2>/dev/null

kubeadm 클러스터는 container runtime, swap, kernel module, sysctl, CNI가 맞아야 정상 동작합니다. 도구 설치만으로 클러스터가 완성되는 것은 아닙니다.

다음 단계

sudo kubeadm init --pod-network-cidr=10.244.0.0/16
mkdir -p "$HOME/.kube"
sudo cp /etc/kubernetes/admin.conf "$HOME/.kube/config"
sudo chown "$(id -u):$(id -g)" "$HOME/.kube/config"
kubectl get nodes

위 초기화 명령은 랩 예시입니다. 운영 cluster는 control plane HA, CNI, ingress, storage, 인증서, backup, upgrade 전략을 별도로 설계합니다.

공식 문서

BGM EVER