⚠️ 저장소 전환 안내: Google이 운영하던
packages.cloud.google.com저장소는 2024-01-23 부로 폐기되었습니다. 기존 문서의 저장소 주소는 사용할 수 없으며, 아래pkgs.k8s.io신저장소를 사용해야 합니다.신저장소는 minor 버전별 URL 분리 방식이므로 버전 업그레이드 시 저장소 URL도 함께 교체해야 합니다.
sudo swapoff -a
sudo sed -i -E 's|^([^#].*swap)|#\1|' /etc/fstab
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
| 포트 | 용도 | 대상 |
|---|---|---|
| 6443/tcp | kube-apiserver | Control plane |
| 2379-2380/tcp | etcd | Control plane |
| 10250/tcp | Kubelet API | 전 노드 |
| 10259/tcp | kube-scheduler | Control plane |
| 10257/tcp | kube-controller-manager | Control plane |
| 30000-32767/tcp | NodePort Services | Worker |
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system
Kubernetes 1.24+ 는 Dockershim을 제거했으므로 CRI 런타임을 별도로 설치해야 한다.
# Docker 공식 저장소 등록 후 containerd.io 설치
sudo dnf install -y dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install -y containerd.io
# systemd cgroup 사용하도록 기본 설정
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 enable containerd --now
export K8S_MINOR="v1.30"
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/${K8S_MINOR}/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/${K8S_MINOR}/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF
sudo dnf install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
sudo systemctl enable kubelet --now
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gpg
sudo mkdir -p -m 755 /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/${K8S_MINOR}/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:/${K8S_MINOR}/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 kubelet --now
# RHEL 계열 (특정 버전 설치)
sudo dnf install -y kubelet-1.30.3 kubeadm-1.30.3 kubectl-1.30.3 --disableexcludes=kubernetes
# Debian/Ubuntu (업그레이드 방지)
sudo apt-mark hold kubelet kubeadm kubectl
kubeadm version
kubectl version --client
kubelet --version
새로운 minor 버전으로 업그레이드하려면 저장소 URL부터 교체해야 한다.
# 예: v1.30 → v1.31
# RHEL
sudo sed -i 's|stable:/v1.30/|stable:/v1.31/|g' /etc/yum.repos.d/kubernetes.repo
sudo dnf makecache
# Debian
sudo sed -i 's|stable:/v1.30/|stable:/v1.31/|g' /etc/apt/sources.list.d/kubernetes.list
# 키도 새 minor 버전용으로 재등록 필요
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.31/deb/Release.key | \
sudo gpg --dearmor --yes -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
sudo apt-get update