다음은 VM설치는 윈도우환경에서 진행합니다.
VM 환경 설치를 하기전에 Virtual Box 와 Vagrant 설치를 먼저 해주세요.
VM환경에서는 Vagrant로 간단하게 실습 쿠버네티스를 생성할수 있다.
Vagrant 란 VirtualBox 나 VMware 위에 리눅스 VM을 자동으로 만들고 설정해주는 도구
기존은 GUI 설치로 직관적이나 반복설치, 자동화 제한이 있음.
1. mkdir k8s && cd k8s
2. curl -O https://raw.githubusercontent.com/k8s-1pro/install/main/ground/k8s-1.27/vagrant-2.4.3/Vagrantfile
3. curl -O https://raw.githubusercontent.com/k8s-1pro/install/main/ground/k8s-1.27/vagrant-2.4.3/rockylinux-repo.json
4. vagrant box add rockylinux-repo.json
5. vagrant plugin install vagrant-vbguest vagrant-disksize
6. vagrant up
윈도우에서 VM실습 할때는 위와같은 명령어로 진행하나 실서버(Linux 로컬)에서는 Vagrant가 필요없으니 아래와같이 bash 파일로 진행 (Rocky Linux 8/9 전용 , OS버전 바뀔시 한번더 확인 필요)
위의 파일 다운로드 후 실행
1. chmod +x install-k8s-rocky.sh ( 실행전 권한 부여 )
2. sudo ./install-k8s-rocky.sh
3. sudo kubeadm init --pod-network-cidr=10.244.0.0/16
4. kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
bash 에서는 다음과 같은 작업을 합니다.
🧠 1️⃣ swap 비활성화
k8s는 노드의 메모리 사용량을 정확하게 관리하는데 swap이 커져있으면 RAM이 부족할 때 디스크 공간을 가상메모리로 사용
-> Pod 메모리 부족해야하는데 아직도 살아있네 ? 하고 메모리 오버커밋 상황을 감지못해 스케쥴링이 꼬이거나, Out of Memory 발생 시 정상적인 Pod 축출(Eviction)이 안되는 문제가 생긴다.
⚙️ 2️⃣ 마스터 초기화(kubeadm init)
k8s 마스터 노드는 클러스터의 "두뇌" 역할을 하는 여러 컴포넌트가 실행됨.
이때 초기화를 통해 모든 컴포넌트를 정상적으로 초기 세팅, 클러스터 토큰 과 CA 인증서, 기본 네트워크 구성을 자동으로 만듬.
kubeadm init은 "이 머신을 마스터로 만들어줘"라는 명령, 이걸 안하면 클러스터의 뇌가 없어서 kubectl 명령도 안먹힘.
🌐 3️⃣ Calico 적용
k8s는 기본적으로 Pod간 네트워크를 직접 구성하지 않는다. 즉 네트워크 플러그인 (CNI , Container Network Interface)를 설치해야 Pod간 통신이 가능해짐 . Calico는 CNI 중 하나, 실무에서 대세적으로 쓰는 플러그인중 하나
iptables/bridge 설정은 쿠버네티스가 Pod 네트워크를 정상적으로 만들고, 다른 노드/Pod와 통신하게 하기 위해 필수
🔹 역할
- 각 노드에 10.244.0.0/16 같은 가상 네트워크 대역을 할당
- Pod들이 서로 다른 노드에 있어도 같은 내부 IP 대역으로 통신 가능
- 내부적으로 VXLAN 터널링을 이용해 트래픽을 캡슐화

쿠버네티스 공식문서는 한글화가 잘되있으니 꼭 공식문서 자주볼것
런타임관련 설치도 꼭 최신버전이 아닌 LTS버전으로 설치를 진행해야함.
설치 후 다음과 같이 작업을 진행(개발서버에서는 bash에 포함해 자동으로 진행하는것이 편하나
운영서버에서는 token 유효기간확인 및 네트워크 상태확인 체크가 들어갈수있기에 수동을 권장)
SSH Root 계정으로 접속 이후
1️⃣ 마스터 초기화 확인
스크립트에서는 이미 실행은 됐지만, 상태를 확인해보는 것이 안전.
kubectl get nodes
kubectl get pods -A
모든 노드가 Ready 상태인지 확인 , kube0-system 네임스페이스의 pod들이 정상적으로 Running 상태인지 확인
2️⃣ kubeconfig 환경 확인
echo $KUBECONFIG
kubectl config view
스크립트에서 이미 ~/.kube/config에 admin.conf를 복사했으므로
일반 사용자 계정에서 바로 kubectl 사용 가능
필요 시 다른 사용자 또는 원격 PC에서 접근하려면 admin.conf를 복사/환경 변수 설정 필요
scp user@master-node:~/.kube/config ~/kubeconfig
export KUBECONFIG=~/kubeconfig
kubectl get nodes
3️⃣ 워커 노드 합류 (수동)
- 마스터 초기화가 끝나면, kubeadm이 join 명령어를 출력함.
- 워커 노드에서 출력된 join 명령어 그대로 실행:
sudo kubeadm join <MASTER_IP>:6443 --token <TOKEN> \
--discovery-token-ca-cert-hash sha256:<HASH>
- 토큰 유효기간이 24시간이므로, 만료된 경우 새로 생성 가능:
모든 워커 노드가 Ready 상태인지 확인
Pod 상태 확인:
Calico, Metrics Server, kube-system Pod가 정상적으로 Running인지 확인
kubectl exec -it test-pod -- ping <다른 Pod IP>
'개인스터디' 카테고리의 다른 글
| 제 4장 쿠버네티스 Pod 의기능 Probe (0) | 2025.10.06 |
|---|---|
| 3장. 쿠버네티스로인한 편해진 IT 인프라 구축과 대표기능 (0) | 2025.10.05 |
| 쿠버네티스 1장 <리눅스 흐름과 쿠버네티스 컨테이너> (0) | 2025.10.04 |
| 내가 했던 인터페이스에 대한 오해와 진실 (0) | 2024.12.06 |
| Jest test메서드 호출이 안되는 에러 (0) | 2024.12.04 |
주니어 모코코 개발자
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!