Ubuntu에 k8s 설치하기

2025. 2. 21. 22:09k8s

참조: https://white-polarbear.tistory.com/161

 

쿠버네티스(Kubernetes) 실습 환경 구성 - 초기 구성

■ 쿠버네티스 실습 환경Oracle VirtualBox 최신 버전Ubuntu 24.04 Desktop 버전도커 최신 버전 사용쿠버네티스 버전 1.28 → 1.29 (업그레이드 진행)런타임 환경 containerd 사용3-Node Cluster 환경 구성 (Master Plane

white-polarbear.tistory.com

환경설정

# 패키지 설정
sudo apt-get install -y net-tools openssh-server vim tree htop

# 방화벽 제거(필요한 경우만)
sudo ufw disable
sudo ufw status

# 메모리 swap 제거
sudo swapoff -a
free
sudo sed -i '/swap/s/^/#/' /etc/fstab

# NTP 설정
sudo apt-get install -y ntp
sudo systemctl restart ntp 
sudo systemctl status ntp
sudo ntpq -p

# containerd 환경구성
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF

cat /etc/modules-load.d/containerd.conf
sudo modprobe overlay
sudo modprobe br_netfilter

# 통신 구성
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

cat /etc/modules-load.d/k8s.conf

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

cat /etc/sysctl.d/k8s.conf

cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

cat /etc/sysctl.d/99-kubernetes-cri.conf

sudo sysctl --system

containerd 설치

sudo apt install -y containerd

sudo mkdir -p /etc/containerd
sudo containerd config default | sudo tee /etc/containerd/config.toml
sudo vi /etc/containerd/config.toml
# SystemdCgroup = true 설정변경
---------------------------------------------------
          [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
            ..
            SystemdCgroup = true
---------------------------------------------------

sudo systemctl restart containerd.service
sudo systemctl status containerd.service

k8s 설치

sudo apt-get update

# repository 공개키 다운로드 및 설정
sudo apt-get install -y apt-transport-https ca-certificates curl gpg
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/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.28/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-cache policy kubeadm

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

# 업데이트 방지
sudo apt-mark hold kubelet kubeadm kubectl

# 버전 확인
kubeadm version
kubectl version
kubelet --version

# 자동 시작 등록
sudo systemctl daemon-reload
sudo systemctl restart kubelet.service
sudo systemctl enable --now kubelet.service

k8s 초기화

sudo kubeadm init

# kubectl 사용을 위한 환경 설정
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# 환경변수 등록
vi .profile
-----------------------------------------------------
export KUBECONFIG=$HOME/.kube/config
-----------------------------------------------------

source .profile
echo $KUBECONFIG

# 확인: node 상태가 Reday가 되어야 함
kubectl get node

network plugin 설치

# plugin이 없으면, coredns가 배포안됨
kubectl get pod -A

NAMESPACE     NAME                                             READY   STATUS              RESTARTS   AGE
kube-system   coredns-5dd5756b68-ppv9m                         0/1     ContainerCreating   0          12m
kube-system   coredns-5dd5756b68-vzv5d                         0/1     ContainerCreating   0          12m
kube-system   etcd-barisein-thinkpad-x220                      1/1     Running             838        12m
kube-system   kube-apiserver-barisein-thinkpad-x220            1/1     Running             893        12m
kube-system   kube-controller-manager-barisein-thinkpad-x220   1/1     Running             0          12m
kube-system   kube-proxy-x9cvc                                 1/1     Running             0          12m
kube-system   kube-scheduler-barisein-thinkpad-x220            1/1     Running             927        12m

# calico 설치
curl -O https://raw.githubusercontent.com/gasida/KANS/main/kans3/calico-kans.yaml
kubectl apply -f calico-kans.yaml

kubectl get pod -A
NAMESPACE     NAME                                             READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-97d84d657-rhvsn          1/1     Running   0          82s
kube-system   calico-node-m5752                                1/1     Running   0          82s
kube-system   coredns-5dd5756b68-ppv9m                         1/1     Running   0          16m
kube-system   coredns-5dd5756b68-vzv5d                         1/1     Running   0          16m
kube-system   etcd-barisein-thinkpad-x220                      1/1     Running   838        16m
kube-system   kube-apiserver-barisein-thinkpad-x220            1/1     Running   893        16m
kube-system   kube-controller-manager-barisein-thinkpad-x220   1/1     Running   0          16m
kube-system   kube-proxy-x9cvc                                 1/1     Running   0          16m
kube-system   kube-scheduler-barisein-thinkpad-x220            1/1     Running   927        16m