티스토리 뷰

TL;DR
- 클러스터 = 여러 서버를 묶어 한 번에 관리하고, Pod 실행을 분산시키는 단위
- 마스터 노드: 전체 관리
- 워커 노드: 애플리케이션 실행
- 생성 이유
- 장애 나도 서비스 지속(고가용성)
- 트래픽 늘면 노드 추가 가능(확장성)
- 자원 효율적 사용
- 배포/스케일링/헬스 체크 자동화
쿠버네티스 클러스터란?
**클러스터(Cluster)**란, 여러 대의 서버(노드)를 하나로 묶어 하나의 논리적 시스템처럼 동작하게 만든 환경을 말합니다.
구성 요소
- 마스터 노드 (Control Plane)
- 클러스터 전체를 관리
- 주요 컴포넌트:
- kube-apiserver: API 요청 처리
- etcd: 상태 저장소 (클러스터 상태)
- kube-scheduler: 어떤 노드에 Pod을 배치할지 결정
- kube-controller-manager: 상태를 원하는 상태로 유지
- 워커 노드 (Worker Node)
- 실제 애플리케이션(Pod) 실행
- 주요 컴포넌트:
- kubelet: 노드에서 Pod 실행/상태 관리
- kube-proxy: 네트워크 트래픽 라우팅
- 컨테이너 런타임 (Docker, containerd 등)
즉, 클러스터 = 관리하는 서버 + 애플리케이션 실행 서버들의 집합
클러스터를 생성하는 이유
- 고가용성(High Availability)
- 서버 한 대가 다운되어도 다른 노드가 서비스를 계속 제공
- 즉, 장애 대비
- 확장성(Scalability)
- 트래픽이 늘어나면 노드를 추가하여 Pod 수를 늘릴 수 있음
- 클러스터 하나로 여러 서버를 묶어 수평 확장 가능
- 리소스 효율화
- 여러 애플리케이션을 하나의 클러스터에서 관리
- CPU, 메모리, 네트워크 등 자원을 효율적으로 사용
- 자동화된 관리
- 배포(Deployment), 롤백, 스케일링, 헬스 체크 등을 자동화 가능
- 사람이 일일이 서버 상태를 관리할 필요 없음
# pod-network-cidr: 파드 네트워크의 IP 주소 범위
# apiserver-advertise-address: 수신 대기 중임을 알릴 IP주소로 마스터 노드의 IP를 설정
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.127.128
# 1. 현재 로그인 사용자 확인
whoami
# - 현재 터미널에서 사용 중인 계정 이름 출력
# - 쿠버네티스 config 설정 시 어떤 계정으로 작업 중인지 확인용
# 2. 기존 kube 설정 삭제
rm -rf $HOME/.kube
# - 기존 kubeconfig 파일 및 디렉토리 삭제
# - 깨끗한 상태에서 새 클러스터 설정을 적용하기 위해 사용
# 3. kube 디렉토리 새로 생성
mkdir -p $HOME/.kube
# - kubeconfig를 저장할 디렉토리 생성
# - -p 옵션: 부모 디렉토리 없으면 자동 생성
# 4. 관리자 kubeconfig 파일 복사
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# - kubeadm으로 생성된 admin.conf를 현재 사용자 홈 디렉토리에 복사
# - -i : 덮어쓰기 시 확인 메시지 표시
# 5. kubeconfig 파일 소유자 변경
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# - 현재 사용자(uid, gid) 소유로 변경
# - root 소유일 경우 일반 사용자로 kube 명령어 실행 불가 문제 해결
# 6. 현재 컨텍스트 확인
kubectl config get-contexts
# - kubeconfig에 정의된 모든 컨텍스트 확인
# - 컨텍스트 = 클러스터/사용자/네임스페이스 설정 정보
# 7. 현재 컨텍스트 이름 변경
kubectl config rename-context $(kubectl config current-context) k8s
# - 현재 컨텍스트 이름을 "k8s"로 변경
# - 클러스터가 여러 개일 때 명확하게 구분 가능
# 8. 변경 후 컨텍스트 재확인
kubectl config get-contexts
# - 컨텍스트 이름이 "k8s"로 변경됐는지 확인
# 9. 모든 네임스페이스의 Pod 상태 확인
kubectl get pods --all-namespaces
# - 클러스터 내 모든 네임스페이스에서 실행 중인 Pod 목록 출력
# - 마스터 노드 및 초기 시스템 Pod 상태 확인용
혹시라도 쿠버네티스를 초기화하고 싶다면, 아래를 실행해주세요.
처음부터 다시 설치해야합니다 !!
$ sudo su -
$ kubeadm reset -f
$ sudo apt-get purge kubeadm kubectl kubelet kubernetes-cni kube*
$ rm -rf $HOME/.kube
클러스터 시작하기
$ whoami
ubuntu
# 기존 kube 설정 삭제
$ rm -rf $HOME/.kube
# kube 디렉토리 새로 생성
$ mkdir -p $HOME/.kube
# admin.conf를 사용자 kubeconfig로 복사
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# → kubeadm init 후 생성된 클러스터 관리용 config 복사
# kubeconfig 소유자를 현재 사용자로 변경
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
# → root 소유 문제 해결, kubectl 사용 가능
# 현재 컨텍스트 확인
$ kubectl config get-contexts
# → 클러스터, 사용자, 네임스페이스 정보 확인
# 모든 네임스페이스 Pod 상태 확인
# 마스터 관련 Pod들은 Running, coredns는 Pending 상태
$ kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-76f75df574-4nf25 0/1 Pending 0 44s
kube-system coredns-76f75df574-btd98 0/1 Pending 0 44s
kube-system etcd-k8s-master 1/1 Running 1 58s
kube-system kube-apiserver-k8s-master 1/1 Running 1 58s
kube-system kube-controller-manager-k8s-master 1/1 Running 1 58s
kube-system kube-proxy-fdsgf 1/1 Running 0 44s
kube-system kube-scheduler-k8s-master 1/1 Running 1 58s
# Flannel CNI 설치 (Pod 네트워크)
# → Pod 간 통신 및 네트워크 구성
$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# CNI 설치 후 Pod 상태 확인
# → kube-flannel Pod가 Init 단계, coredns는 아직 Pending
# etcd, kube-apiserver, controller-manager, kube-scheduler 등은 Running
$ kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-flannel kube-flannel-ds-6sb42 0/1 Init:1/2 0 6s
kube-system coredns-76f75df574-4nf25 0/1 Pending 0 66s
kube-system coredns-76f75df574-btd98 0/1 Pending 0 66s
kube-system etcd-k8s-master 1/1 Running 1 80s
kube-system kube-apiserver-k8s-master 1/1 Running 1 80s
kube-system kube-controller-manager-k8s-master 1/1 Running 1 80s
kube-system kube-proxy-fdsgf 1/1 Running 0 66s
kube-system kube-scheduler-k8s-master 1/1 Running 1 80s
- 아직 Flannel 초기화 중이어서 coredns와 kube-flannel Pod는 Pending/Init 상태
- 마스터 핵심 컴포넌트(etcd, apiserver, controller, scheduler)는 모두 정상 Running
- 시간이 조금 지나면 Flannel이 올라가면서 coredns도 Running 상태가 됩니다.
'Kubernetes' 카테고리의 다른 글
| [Kubernetes] Replicaset 레플리카셋 생성, 삭제, 정보 확인하기 (0) | 2025.09.09 |
|---|---|
| [Kubernetes] yaml 파일을 통해 pod 생성, 관리하기 (0) | 2025.09.09 |
| [Kubernetes] 쿠버네티스 파드 Pod 개념 / Pod 생성, 삭제하기 (0) | 2025.09.09 |
| [Kubernetes] 쿠버네티스 환경 구축하기 (VMware에 쿠버 설치) (1) | 2025.09.04 |
| [Kubernetes] 쿠버네티스 환경 구축하기 (VMware 사용하기) (0) | 2025.09.04 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 오리지널팬케이스하우스
- MAC
- cachedbodyhttpservletrequest
- 디비개발프로세스
- 컬럼타입변경
- httpcode
- 시청역놀곳
- 판교테크원타워맛집
- xcrunerror
- 데이터업로드
- 오리지널팬케이스하우스 판교점
- 스프링부트
- 사용자별메뉴
- csv다운로드
- csv업로드
- 권한별메뉴만들기
- 디너요리추천
- 재귀구문
- MySQL
- 논클러스터 인덱스
- 500에러관리
- menu만들기
- 신사동이자카야
- 400에러관리
- 데이터베이스
- 바디캐싱
- 유에이치스위트서울스퀘어
- springboot
- 시청역숙소
- 유에이치스위트
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
글 보관함