[카테고리:] Kubernetes

  • K8S 클러스터 구성

    1. SSH 서버 활성화 및 기본 필요 패키지 설치

    sudo systemctl enable ssh
    sudo systemctl start ssh
    
    sudo apt update && sudo apt upgrade
    
    sudo apt-get install -y ca-certificates curl apt-transport-https gpg

    2. Docker 관련 패키지 설치 (필요 없는 경우 containerd.io만 설치하면 됨)

    • Debian Linux (Raspberry Pi OS 포함, Ubuntu 제외)
    sudo install -m 0755 -d /etc/apt/keyrings
    sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
    sudo chmod a+r /etc/apt/keyrings/docker.asc
    echo   "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
      $(. /etc/os-release && echo "$VERSION_CODENAME") stable" |   sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    • Ubuntu
    sudo install -m 0755 -d /etc/apt/keyrings
    sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
    sudo chmod a+r /etc/apt/keyrings/docker.asc
    echo   "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
      $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" |   sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

    3. 메모리 Swap 비활성화 및 Cgroup 활성화

    • Debian Linux (Ubuntu 포함)
    sudo vi /etc/fstab
    # 다음과 같이 주석 처리 후 저장
    # /swap.img     none    swap    sw      0       0
    sudo reboot
    • Raspberry Pi OS
    sudo dphys-swapfile swapoff
    sudo systemctl disable dphys-swapfile
    
    sudo vi /boot/firmware/cmdline.txt
    # cgroup_enable=memory cgroup_memory=1 을 앞에 추가

    4. Kubernetes 설치 (Kubeadm 배포판)

    curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/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.32/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 containerd config default | sudo tee /etc/containerd/config.toml
    sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml
    sudo systemctl restart containerd
    sudo systemctl restart kubelet
    
    sudo modprobe br_netfilter
    cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
    br_netfilter
    EOF
    
    cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
    
    sudo sysctl --system

    5. Kubernetes 클러스터 생성 및 Flannel CNI 설치 (Master 노드)

    sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --v=5
    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

    • Cluster Join Token 재발급
    kubeadm token create --print-join-command

    6. Kubernetes 클러스터 등록 (Worker 노드)