K8S

쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2 미션 1

개발공명 2025. 6. 3. 23:05

 

쿠버네티스 무게감 있게 설치하기 - 구간별 상태 확인

 

[1-1] 내 PC 네트워크 확인

cmd > ipconfig로 확인

 

[1-2] 내 PC 자원 확인

작업 관리자 > 성능 탭에서 확인

 

[1-3] VirtualBox 설치 버전 확인

VirtualBox 실행 > 도움말 > VirtualBox 정보에서 확인

 

[1-4] Vagrant 설치 버전 확인 

cmd > vagrant --version 명령어로 확인

 

[1-5] 원격 접속 (MobaXterm) 설치 버전 확인

MobaXterm 실행 > Help > About MobaXterm에서 확인

 

[2-1] VirtualBox VM 확인

VM의 이름 확인

 

[2-2] 내 VM에 적용된 NAT 확인

k8s_master-node 마우스 우클릭 > 설정 > 네트워크 > 어댑터 1에서 정보 확인

 

[2-3] 내 VM에 적용된 Host-Only Network 확인

k8s_master-node 마우스 우클릭 > 설정 > 네트워크 > 어댑터 2에서 정보 확인

 

[2-4] VirtualBox Host-Only cidr 확인

VirtualBox 파일 > 도구 > Network Manager에서 확인

 

[3-1] Rocky Linux 버전 확인

vagrant up 명령어로 VM 생성 > MobaXterm 세션으로 이동해 k8s-master 원격 접속 > 아래 명령어 실행해 리눅스 버전 확인

[root@k8s-master ~]# cat /etc/*-release

 

[3-2] Hostname 확인

k8s-master 원격 접속 > 아래 명령어 실행해 hostname 확인

[root@k8s-master ~]# hostname

 

[3-3], [3-4] Network 확인

k8s-master 원격 접속 > 아래 명령어 실행해 network 확인

[root@k8s-master ~]# ip addr

 

[3-5] 자원 (cpu, memory) 확인

k8s-master 원격 접속 > 아래 명령어 실행해 자원 확인

[root@k8s-master ~]# lscpu
[root@k8s-master ~]# free -h

 

cpu 자원 (스크립트에 설정한대로 4코어임을 볼 수 있음)

 

memory 자원 (스크립트에 설정한대로 6GB임을 볼 수 있음)

 

[4] Rocky Linux 기본 설정

k8s-master 원격 접속 > 아래 명령어로 타임존 설정 확인

[root@k8s-master ~]# timedatectl

 

timezone이 스크립트에서 설정한대로 Asia/Seoul로 되어 있는 것을 볼 수 있음.

 

[5] kubeadm 설치 전 사전 작업

k8s-master 원격 접속 > 아래 명령어로 방화벽 해제 여부 확인

[root@k8s-master ~]# systemctl status firewalld

 

스크립트에서 설정한대로 방화벽이 disabled 된 것을 볼 수 있음.

 

k8s-master 원격 접속 > 아래 명령어로 스왑 비활성화 확인

[root@k8s-master ~]# free
[root@k8s-master ~]# cat /etc/fstab | grep swap

 

스크립트에서 설정한대로 swap이 0으로 된 것을 볼 수 있음.

 

[6] 컨테이너 런타임 설치 

[6-1] 컨테이너 런타임 설치 전 사전 작업

 

k8s-master 원격 접속 > 아래 명령어로 iptables 세팅 확인

# 설정 세팅 확인
[root@k8s-master ~]# cat /etc/modules-load.d/k8s.conf
[root@k8s-master ~]# cat /etc/sysctl.d/k8s.conf
# 모듈 적제 확인
[root@k8s-master ~]# lsmod | grep overlay
[root@k8s-master ~]# lsmod | grep br_netfilter

 

컨테이너 런타임 공식 문서 :  https://kubernetes.io/ko/docs/setup/production-environment/container-runtimes/#ipv4%EB%A5%BC-%ED%8F%AC%EC%9B%8C%EB%94%A9%ED%95%98%EC%97%AC-iptables%EA%B0%80-%EB%B8%8C%EB%A6%AC%EC%A7%80%EB%90%9C-%ED%8A%B8%EB%9E%98%ED%94%BD%EC%9D%84-%EB%B3%B4%EA%B2%8C-%ED%95%98%EA%B8%B0

 

컨테이너 런타임 공식 문서에 따라 iptables 설정에서 확인해야 할 것은 아래와 같다.

  • br_netfilter 모듈 로드 확인
  •  sysctl 구성에서 net.bridge.bridge-nf-call-iptables가 1로 설정되어 있는지 확인

결과에 보면 되어 있는 것을 볼 수 있다. 

 

[6-2] docker engine (containerd.io)만 설치

k8s-master 원격 접속 > 아래 명령어로 docker repo 설정 확인

[root@k8s-master ~]# yum repolist enabled

 

 

k8s-master 원격 접속 > 아래 명령어로 containerd 설치 확인

[root@k8s-master ~]# systemctl status containerd

 

k8s-master 원격 접속 > 아래 명령어로 설치 가능한 버전의 containerd.io 리스트 확인

[root@k8s-master ~]# yum list containerd.io --showduplicates | sort -r

 

[6-3] 컨테이너 런타임 (CRI 활성화)

k8s-master 원격 접속 > 아래 명령어로 cri 활성화 설정 확인

[root@k8s-master ~]# cat /etc/containerd/config.toml

 

k8s-master 원격 접속 > 아래 명령어로 kublet cgroup 확인 (configmap)

[root@k8s-master ~]# kubectl get -n kube-system cm kubelet-config -o yaml

 

k8s-master 원격 접속 > 아래 명령어로 kublet cgroup 확인 (kubelet)

[root@k8s-master ~]# cat /var/lib/kubelet/config.yaml

 

[7] kubeadm 설치

k8s-master 원격 접속 > 아래 명령어로 repo 설정 확인

[root@k8s-master ~]# yum repolist enabled

 

 

k8s-master 원격 접속 > 아래 명령어로 SELinux 설정 확인

[root@k8s-master ~]# cat /etc/selinux/config
[root@k8s-master ~]# sestatus

 

 

k8s-master 원격 접속 > 아래 명령어로 kubelet, kubeadm, kubectl 버전, 상태 등 확인

#버전 보기
[root@k8s-master ~]# kubeadm version
[root@k8s-master ~]# kubectl version

#상태 보기
[root@k8s-master ~]# systemctl status kubelet

#설정 파일 위치
[root@k8s-master ~]# cat /var/lib/kubelet/config.yaml

#로그 조회
 journalctl -u kubelet | tail -10

 

kubeadm 버전 확인

 

kubectl 버전 확인

 

kubelet 상태 확인

 

k8s-master 원격 접속 > 아래 명령어로 kubeadm 리스트 확인

[root@k8s-master ~]# yum list --showduplicates kubeadm --disableexcludes=kubernetes

 

[8] kubeadm 설치

[8-1] 클러스터 초기화 (Pod Network 세팅)

 

k8s-master 원격 접속 > 아래 명령어로 클러스터 상태 확인

# master node 상태확인
[root@k8s-master ~]# kubectl get node

# pod network cidr 설정 확인
[root@k8s-master ~]# kubectl cluster-info dump | grep -m 1 cluster-cidr

# apiserver advertise address 적용 확인
[root@k8s-master ~]# kubectl cluster-info

# kubernetes component pod 확인
[root@k8s-master ~]# kubectl get pods -n kube-system

 

[8-2] kubectl 사용 설정

k8s-master 원격 접속 > 아래 명령어로 인증서 설정 확인

[root@k8s-master ~]# cat ~/.kube/config

 

[8-3] CNI Plugin 설치 (calico)

k8s-master 원격 접속 > 아래 명령어로 calico pod 상태 확인 및 pod network cidr 적용 확인

# Calico Pod 상태 확인
[root@k8s-master ~]# kubectl get -n calico-system pod
[root@k8s-master ~]# kubectl get -n calico-apiserver pod

# Calico에 pod network cidr 적용 확인
[root@k8s-master ~]# kubectl get installations.operator.tigera.io default -o yaml  | grep cidr

 

[8-4] Master 에 pod 생성할 수 있도록 설정 

k8s-master 원격 접속 > 아래 명령어로 Master Node에 Taint 해제 확인 

[root@k8s-master ~]# kubectl describe nodes | grep Taints

 

[9] 쿠버네티스 편의 기능 설치

[9-1] kubectl 자동 완성 기능

 

k8s-master 원격 접속 > 아래 명령어로 kubectl 자동 완성 기능 설정 확인

[root@k8s-master ~]# cat ~/.bashrc

 

[9-2] Dashboard 설치

k8s-master 원격 접속 > 아래 명령어로 dashboard 설치 확인

[root@k8s-master ~]# kubectl get pod -n kubernetes-dashboard

 

[9-3] Metrics Server 설치 

k8s-master 원격 접속 > 아래 명령어로 metrics server 설치 확인

[root@k8s-master ~]# kubectl get pod -n kube-system  | grep metrics
[root@k8s-master ~]# kubectl top pod -A

 

출처

https://inf.run/k7mF

 

쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2 강의 | 일프로 - 인프런

일프로 | , ✅ 광범위한 쿠버네티스 기술을 A~Z까지 넓고 얇게 훑기보다 하나의 개념을 배우더라도 왜 사용하는지 부터 실무에서 어떻게 사용되는지 까지를 다루는 강의✅ 시작은 초급자지만강

www.inflearn.com