티스토리 뷰
1. k8s-master, k8s-worker1~3 에 ssh 접속을 합니다.
2. 아래 경로처럼 디렉토리를 만듭니다.
3. 쿠버네티스를 clone 받습니다.
4. hostname을 설정합니다.
$ ssh ubuntu@192.168.127.131
$ mkdir -p ~/dev/workspace/devops
$ cd ~/dev/workspace/devops
$ git clone https://github.com/kshelp/kubernetes
$ sudo hostnamectl set-hostname k8s-worker3
$ sudo vi /etc/hosts
#Kubernetes host - Jin Yu 250904
192.168.127.128 k8s-master
192.168.127.129 k8s-worker1
192.168.127.130 k8s-worker2
192.168.127.131 k8s-worker3


다음,
쿠버가 제대로 작동하려면 아래의 이유때문에 swap 메모리를 비활성화해야합니다!
1. 리소스 관리의 일관성 문제
- 쿠버네티스는 cgroup을 이용해서 컨테이너별로 CPU, 메모리 리소스를 제한합니다.
- 메모리 제한은 OOM(Out Of Memory) 이벤트를 기준으로 동작하는데, 만약 스왑이 켜져 있다면 실제로는 물리 메모리 초과 상황에서도 스왑으로 밀려나면서 "쿠버네티스가 예상한 동작"과 달라집니다.
→ 즉, Pod이 제대로 종료되지 않고 계속 버티거나, 다른 Pod이 영향을 받을 수 있음.
2. 성능 저하 및 예측 불가 동작
- 스왑은 디스크 기반이라 RAM에 비해 속도가 수백~수천 배 느림.
- 어떤 Pod이 메모리를 많이 잡아먹을 경우, 스왑으로 밀려난 프로세스들이 급격히 느려짐 → 다른 Pod 전체가 영향을 받음.
- 쿠버네티스 스케줄러가 "노드에 리소스가 충분하다"고 판단하고 Pod을 배치했는데, 실제로는 스왑 때문에 성능이 급락하는 문제가 발생.
3. 노드 안정성 확보
- 스왑 활성화 상태에서 메모리 부족이 발생하면, 노드가 전체적으로 느려지거나 커널 OOM Killer가 임의의 프로세스를 종료시킬 수 있음.
- 쿠버네티스는 Pod 단위에서 책임지고 자원을 관리해야 하는데, 스왑이 켜져 있으면 운영체제가 개입해버리므로 제어권을 잃음.
그렇기 때문에 모든 노드에서 swap 메모리를 비활성화해줍시다.
$ sudo swapoff -a
$ sudo sed -i '/ swap / s/^/#/' /etc/fstab
$ sudo vi /etc/fstab
#/swap.img none swap sw 0 0
다음은, docker를 설치해줄겁니다.
docker를 설치하고 hello-world 이미지가 잘 실행이 되는지 run 해줍시다 ㅎㅎ (생략)
자, 실행이 잘 된다면!!
cgroup 드라이버를 설정합니다.
# cgroup 드라이버 설정
# - 쿠버네티스에서는 도커의 cgroup 관리를 위해 systemd를 사용하도록 변경해야 한다.
# - 변경하지 않으면 클러스터 설치 과정에서 오류가 발생할 수 있다.
$ sudo docker info | grep Cgroup
WARNING: No swap limit support
Cgroup Driver: cgroupfs #systemd 라고 되어있어야함
Cgroup Version: 1
# cgroup driver가 systemd가 아닌 경우에만 아래와 같이 실행한다.
$ sudo vi /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
다음 단계는 서비스를 재시작하는겁니다.
$ sudo mkdir -p /etc/systemd/system/docker.service.d
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
$ sudo docker info
....
Cgroup Driver: systemd
Cgroup Version: 1

위와 같이 Cgroup Driver: systemd 로 변경이 되어있어야해요 !!
Kubernetes 설치
자 이제 모든 설정은 끝났으니, 모든 노드에 쿠버네티스를 설치합니다.
총 6단계입니다.
- 1~4 단계: Kubernetes 공식 apt 저장소 추가 및 서명키 등록
- 5 단계: apt 목록 업데이트
- 6 단계: kubelet, kubeadm, kubectl 설치
# 1. Kubernetes 설치를 위해 필요한 패키지 설치
$ sudo apt-get install -y apt-transport-https ca-certificates curl gpg
# - apt-transport-https : HTTPS를 통해 apt 리포지토리를 접근 가능하게 함
# - ca-certificates : HTTPS 인증서 확인용 루트 인증서 설치
# - curl : URL에서 파일 다운로드용 툴
# - gpg : 패키지 서명 검증용 GNU Privacy Guard 도구
# - -y 옵션 : 설치 시 사용자 확인 없이 자동 Yes
# 2. Kubernetes GPG 키를 저장할 디렉토리 생성
$ sudo mkdir -p -m 755 /etc/apt/keyrings
# - -p : 부모 디렉토리 없으면 생성
# - -m 755 : 디렉토리 권한 설정 (소유자 읽기/쓰기/실행, 그룹/타인 읽기/실행)
# 3. Kubernetes 패키지 서명키 다운로드 및 GPG 형식으로 저장
$ curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
# - curl -fsSL : 실패 시 에러 메시지 없이 다운로드, 리다이렉션 허용
# - sudo gpg --dearmor : ASCII 형식의 GPG 키를 바이너리 형식(.gpg)으로 변환
# - -o : 출력 파일 지정
# 4. Kubernetes APT 저장소를 sources.list.d에 등록
$ echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
# - deb : apt 저장소를 의미
# - [signed-by=...] : 지정한 GPG 키로 패키지 서명 검증
# - https://pkgs.k8s.io/... : Kubernetes 공식 stable v1.29 패키지 URL
# - tee : 관리자 권한으로 파일 생성/덮어쓰기
# 5. 새 저장소 정보로 패키지 목록 업데이트
$ sudo apt-get update
# - apt 패키지 목록을 최신화하여 새 저장소 패키지를 인식
# 6. Kubernetes 핵심 구성 요소 설치
$ sudo apt-get install -y kubelet kubeadm kubectl
# - kubelet : 각 노드에서 Pod을 관리하는 에이전트
# - kubeadm : 클러스터 초기화 및 관리 도구
# - kubectl : 클러스터 제어 및 관리용 CLI
# - -y 옵션 : 설치 시 사용자 확인 없이 자동 Yes
'Kubernetes' 카테고리의 다른 글
| [Kubernetes] Replicaset 레플리카셋 생성, 삭제, 정보 확인하기 (0) | 2025.09.09 |
|---|---|
| [Kubernetes] yaml 파일을 통해 pod 생성, 관리하기 (0) | 2025.09.09 |
| [Kubernetes] 쿠버네티스 파드 Pod 개념 / Pod 생성, 삭제하기 (0) | 2025.09.09 |
| [Kubernetes] 쿠버네티스 개발 환경 구축하기 (클러스터 생성) (0) | 2025.09.04 |
| [Kubernetes] 쿠버네티스 환경 구축하기 (VMware 사용하기) (0) | 2025.09.04 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- httpcode
- 신사동이자카야
- 유에이치스위트서울스퀘어
- 컬럼타입변경
- csv업로드
- 디너요리추천
- xcrunerror
- csv다운로드
- 권한별메뉴만들기
- 유에이치스위트
- 판교테크원타워맛집
- 디비개발프로세스
- 오리지널팬케이스하우스 판교점
- 데이터베이스
- 시청역놀곳
- 오리지널팬케이스하우스
- MAC
- menu만들기
- 재귀구문
- 스프링부트
- 400에러관리
- 사용자별메뉴
- 시청역숙소
- 500에러관리
- MySQL
- 논클러스터 인덱스
- springboot
- 바디캐싱
- 데이터업로드
- cachedbodyhttpservletrequest
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
글 보관함