-
쿠버네티스 설치(kubeadm)K8s 2025. 7. 8. 21:56
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
Installing kubeadm
This page shows how to install the kubeadm toolbox. For information on how to create a cluster with kubeadm once you have performed this installation process, see the Creating a cluster with kubeadm page. This installation guide is for Kubernetes v1.33. If
kubernetes.io
https://devopscat.tistory.com/136
쿠버네티스 설치를 위한 설정 2
https://kubernetes.io/ko/docs/setup/production-environment/tools/kubeadm/install-kubeadm/ kubeadm 설치하기이 페이지에서는 kubeadm 툴박스 설치 방법을 보여준다. 이 설치 프로세스를 수행한 후 kubeadm으로 클러스터를 만
devopscat.tistory.com
kubeadm : 쿠버네티스에서 공식으로 제공하는 클러스터 생성/관리 도구
쿠버네티스 설치
1. control-plane (master node)
- 노드들의 상태를 관리하고 제어한다.
sudo apt update && sudo apt install -y curl gnupg2 apt-transport-https ca-certificates curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/k8s.gpg echo "deb [signed-by=/etc/apt/keyrings/k8s.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list sudo apt update sudo apt install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl1) 패키지 목록을 업데이트하고 필요한 패키지 설치
- sudo apt update && sudo apt install -y curl gnupg2 apt-transport-https ca-certificates
- curl: URL에서 데이터를 가져오기 위한 도구
- gnupg2: GPG 키를 처리하기 위한 도구
- apt-transport-https: HTTPS를 통해 APT 저장소에 접근할 수 있도록 함
- ca-certificates: 인증서 관련 패키지로 HTTPS 통신을 위해 필요

2) Kubernetes 패키지 저장소의 GPG 키를 다운로드하고 시스템에 등록
https://v1-30.docs.kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
Installing kubeadm
This page shows how to install the kubeadm toolbox. For information on how to create a cluster with kubeadm once you have performed this installation process, see the Creating a cluster with kubeadm page. This installation guide is for Kubernetes v1.33. If
kubernetes.io
- 쿠버네티스 한국어 공식 문서를 보고 설치하다가 오류 발생. 설치 시 영문 버전을 참고하기.
kubernetes-xenial은 Ubuntu 16.04(xenial) 기준으로 만들어진 저장소 - Ubuntu 24.04에서는 기존 kubernetes-xenial 저장소가 의존성 충돌과 버전 미지원 문제로 인해 오류 발생
따라서 Kubernetes 1.30 버전과 호환되는 최신 저장소(pkgs.k8s.io/core:/stable:/v1.30)를 사용해야 함

3) Kubernetes 저장소를 APT 소스 목록에 추가

4) 새로운 저장소 정보를 반영하기 위해 패키지 목록 다시 업데이트

5) Kubernetes 핵심 구성 요소 설치 (kubelet, kubeadm, kubectl)
- kubelet: 각 노드에서 실행되며, 컨테이너 상태를 관리
- kubeadm: 클러스터 초기화 및 관리 도구
- kubectl: Kubernetes 클러스터를 제어하는 커맨드라인 도구

6) 설치한 패키지들이 자동으로 업데이트되지 않도록 고정

- kubeadm, kubectl, kubelet 설치 확인


kubelet 실행 및 자동 실행 등록 (worker node에도 해야함)
systemctl start kubelet systemctl enable kubelet
kubeadm init 시 에러
- [ERROR CRI] : container runtime is not running
- CRI 가 비활성화 되어 오류가 발생

- containerd가 CRI 기능을 비활성화하게 되어 Kubernetes와 연결이 안됨
- disabled_plugins = ["cri"] 를 주석 처리 해야한다.

- control-plane(master) , node1, node2 모두 설정
- kubeadm init, kubeadm join 시 에러 발생 방지
# containerd의 기본 설정을 파일로 출력하여 저장 containerd config default | sudo tee /etc/containerd/config.toml # 설정 파일 수정 vi /etc/containerd/config.toml # containerd 재시작 systemctl restart containerd- containerd config default | sudo tee /etc/containerd/config.toml
- 기본 설정 파일은 disabled_plugins = [ ] 로 되어 있다.

- SystemdCgroup = true로 변경 (디폴트는 false)
- Kubernetes의 kubelet과 containerd가 동일한 cgroup 드라이버(systemd)를 사용해야 호환성 문제 방지 가능

- containerd 재시작

- containerd 서비스 상태 확인

참고 - 따배쿠 유튜브 댓글 (이렇게 해도 해결 된다고 함)
# containerd 설정 파일 삭제 rm /etc/containerd/config.toml # containerd 재실행 systemctl restart containerdcontrol-plane(master) 초기화
kubeadm init --pod-network-cidr=192.168.0.0/16 --apiserver-advertise-address=192.168.0.101옵션 설명 --pod-network-cidr=192.168.0.0/16 클러스터 내 Pod들이 사용할 가상 네트워크 범위를 지정함→ CNI 플러그인(예: Weave Net)에서 사용하는 IP 범위와 일치해야 함 --apiserver-advertise-address=192.168.0.101 마스터 노드의 API 서버가 리스닝할 IP 주소를 명시함→ 워커 노드가 이 주소로 kubeadm join해서 클러스터에 연결됨 
- 쿠버네티스 컨트롤 플레인 초기화 성공 후 아래의 설정을 완료하고 node worker에서 join을 한다.

- token 은 파일에 저장해뒀다가 node들을 join 할 때 사용함.

클러스터 사용을 위한 사용자 환경 설정
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/
Creating a cluster with kubeadm
Using kubeadm, you can create a minimum viable Kubernetes cluster that conforms to best practices. In fact, you can use kubeadm to set up a cluster that will pass the Kubernetes Conformance tests. kubeadm also supports other cluster lifecycle functions, su
kubernetes.io
- kubeadm init을 통해 클러스터는 생성되지만, kubectl 명령어로 클러스터에 접근하려면 사용자 홈 디렉토리에 kubeconfig 설정이 필요하다. 이를 위해 .kube/config 파일을 생성하고 소유권을 사용자에게 변경하는 설정을 한다.

# 1. kubectl 설정 파일을 저장할 디렉토리 생성 mkdir -p $HOME/.kube # 2. kubeadm이 생성한 관리자 설정 파일을 현재 유저용 config로 복사 # kubectl은 기본적으로 ~/.kube/config 파일을 참조함 sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config # 3. 복사된 config 파일의 소유권을 현재 사용자에게 변경 (root 권한으로 복사됐기 때문) sudo chown $(id -u):$(id -g) $HOME/.kube/config
Weave Net 설치
- Weave Net(CNI 플러그인)을 클러스터에 설치 (Pod 간 네트워크 통신을 위해 필요)
kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml
2. worker node(node1 / node2)
- kubelet이라는 프로세스(에이전트)가 동작하며, 마스터 노드의 명령을 받아 사용자가 선언한 pod나 job을 실제로 실행한다.
- kubelet 실행 및 자동 실행 등록
systemctl start kubelet systemctl enable kubelet- containerd 설정 파일 수정
# containerd의 기본 설정을 파일로 출력하여 저장 containerd config default | sudo tee /etc/containerd/config.toml # 설정 파일 수정 vi /etc/containerd/config.toml # containerd 재시작 systemctl restart containerd- worker node를 Kubernetes 클러스터(control-plane)에 연결


- control-plane(master)에서 kubectl get nodes으로 연결된 노드 목록 확인
# 현재 클러스터에 연결된 모든 노드의 상태 확인 (control-plane에서 실행) kubectl get nodes

- kubectl / kubeadm 자동 완성 설정
https://kubernetes.io/ko/docs/reference/kubectl/cheatsheet/
kubectl 치트 시트
이 페이지는 일반적으로 사용하는 kubectl 커맨드와 플래그에 대한 목록을 포함한다. Kubectl 자동 완성 BASH source <(kubectl completion bash) # bash-completion 패키지를 먼저 설치한 후, bash의 자동 완성을 현재
kubernetes.io
# kubectl 명령어의 bash 자동완성 기능을 현재 셸에 적용 source <(kubectl completion bash) # 로그인할 때마다 자동완성 기능이 적용되도록 bashrc에 등록 (영구 적용) echo "source <(kubectl completion bash)" >> ~/.bashrc # kubeadm 명령어에 대한 bash 자동완성 기능을 현재 셸에 적용 source <(kubeadm completion bash) # 로그인할 때마다 자동완성 기능이 적용되도록 bashrc에 등록 (영구 적용) echo "source <(kubeadm completion bash)" >> ~/.bashrc



'K8s' 카테고리의 다른 글
namespace (0) 2025.07.15 컴포넌트 종류와 구성 및 애드온 (0) 2025.07.14 Pod (0) 2025.07.10 쿠버네티스 설치를 위한 설정 1 (0) 2025.07.08 쿠버네티스 설치를 위한 설정 2 (0) 2025.07.04