| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 자바 입출력 스트림
- java
- 쿠버네티스
- SQL
- 자바
- 함수형 인터페이스
- 도커 엔진
- Java IO
- 멀티 쓰레드
- lambda
- 알고리즘
- Kubernetes
- 컨테이너
- 자료구조
- mysql
- 김영한
- 인프런
- 시작하세요 도커 & 쿠버네티스
- 데이터베이스
- 람다
- Docker
- Thread
- 스레드
- 동시성
- db
- RDB
- 쓰레드
- 도커
- 실전 자바 고급 1편
- container
- Today
- Total
쌩로그
[Kubernetes] 쿠버네티스 어나더 클래스-Sprint 1. 쿠버네티스 무게감 있게 설치하기 본문
목록
- 포스팅 개요
- 본론
2-1. 빠르고 쉽게 설치하는 방법
2-2. 무게감 있게 설치하는 방법 1/3 - Virtualbox, Vagrant(🖥️실습포함)
2-3. 무게감 있게 설치하는 방법 2/3 - Virtualbox, Vagrant(🖥️실습포함)
2-4. 무게감 있게 설치하는 방법 3/3 - 최종 정리 - 요약
1. 포스팅 개요
해당 포스팅은 인프런의 일프로님의 쿠버네티스 어나더 클래스-Spring 1,2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD) 중 Sprint1의 쿠버네티스 무게감 있게 설치하기 를 학습하며 정리한 글이다.
2. 본론
2-1. 빠르고 쉽게 설치하는 방법
이 부분은 원래 듣고 있던 일프로님 강의인 대세는 쿠버네티스 (초급~중급편) 의 설치방법과 거의 같고(아니 그냥 같다. 다만 XShell을 사용하는데, 나는 MobaXterm이 편해서 선택했는데, 이번에 듣는 강의와 우연인지 같은 툴을 쓰게 되었다., 이미 글을 남겨서 해당 포스팅 URL 로 대체한다.
https://ssangsu.tistory.com/406
2-2. 무게감 있게 설치하는 방법 1/3 - Virtualbox, Vagrant(🖥️실습포함)
이미지 출처 - 인프런-쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
해당 파트는 VirtualBox 에서 Rocky 리눅스를 생성하는 파트다.
우측의 스크립트 중 박싱 처리된 부분에 대한 이야기다
숫자가 2,3 으로 나눠져있지만, 강의에서 설명하는 순서대로 적는다는 점 참고바람.
- 3-1 : OS는 Rokcy Linux V8임을 알 수 있다.
- 왼쪽 그림의 RockyLinux 로고에 표시를 참고하자.
- 2-1 : 버추얼 박스의 VM에 이름을 붙인 부분이다.
- 현재 나온 스크립트는 master-node에 대해 이름을 붙이고 있다.
- 왼쪽의 그림상 분홍색 계층의
VM name을 보면된다.
- 3-2 : hostname 을 지정한 부분이다.
- 리눅스 OS 에서 'hostname' 명령어를 통해 알 수 있다.
- 왼쪽 그림의 진한 초록생 줄을 보면된다.
- 2-3 : 버추얼 박스의 네트워크 방식을 지정하는 부분이다.
- private_network인데, Host-Only Network 로써 PC에서만 사용할 수 있는 네트워크 망을 만들어준다.
- 3-4 : 네트워크 방식을 지정한 후 IP를 할당하고 있다.
- 왼쪽 그림의 초록색 계층의 eth1을 보면 된다.
- 내 PC에서 해당 IP로 원격 접속을 하여 Linux에 들어갈 수 있다.
- 브라우저를 통해서 대시보드를 들어갈 수 있다.
- 3-5 : 메모리와 cpu를 할당하는 부분이다.
- memory는 4GB
- CPU는 4 Core
- 참고로 VM에 할당한 부분이다.
- CPU가 모자르다고 느낄 수 있지만, CPU는 필요할 때 나눠쓴다. 호스트 PC에서 쓰는 것과 VM에서 쓰는 부분을 각각 나눠가지게 되고, VM의 작업이 많으면 CPU 처리가 분산되기 때문에 처리 속도에 영향은 있지만, 문제는 안 생긴다.
- 일프로님께서 4 Core를 할당했는데, 쿠버네티스를 사용할 때는 다른 작업을 하지않고, 오직 VM위주로 CPU를 사용하기 위해서 4Core를 할당했다고 하신다. 개인의 성향차이인 거 같다..!!
- 설치 문서에서 권고하는 CPU는 2코어 이상이다.
스크립트에 없는 내용
이미지 출처 - 인프런-쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
참고로 위의 그림과 같다.
- 3-3
- 스크립트에 넣지 않아도 Vagrant가 만들어주는 네트워크가 있다.
- NAT 방식으로 네트워크를 형성하고, 알아서 IP를 할당해준다.
- NAT는 VM을 외부 인터넷과 연결 시켜준다.
- 이후 쿠버네티스 설치에 필요한 패키지들을 받는데 사용할 것이다.
- 2-4
- Host Only 네트워크를 사용함으로써 생성된 네트워크 대역이다.
- 192.168.56.0/24 대역대를 할당받는다.
- 참고로 공유기가 할당하는 대역대와는 달라야한다.
2-3. 무게감 있게 설치하는 방법 2/3 - Virtualbox, Vagrant(🖥️실습포함)
이제 쿠버네티스를 설치하는 방법을 보자!
이미지 출처 - 인프런-쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
쿠버네티스 설치 내용은 위의 그림 중 표시한 script에서 찾아볼 수 있다.
master_script 는 마스터 노드 전용 설치 명령어를 모아둔 것이고,
default_script 는 노드별 기본 설치 명령어다.
스크립트 실행 순서는 default_script -> master_script 순으로 진행된다.
쿠버네티스 설치
쿠버네티스 설치는 쿠버네티스 문서를 보는 것이 좋다.
설치하고 싶은 버전이 있는데, 블로그에서 다른 버전 혹은 최신 버전 설치를 보면 미묘하게 잘 안 되는 부분이 있다.
그래서 그 원인을 찾는데 시간을 더 쓸 수도 있다.
이는 내부적인 변경사항이 많이 발생하기 때문이다.
그리고 쿠버네티스 문서는 한글화가 잘 되어있다.
아래 그림을 보자.
이미지 출처 - 인프런-쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
참고로 강의에서 설명하는 순서에 맞게 설명하니, 위의 그림에서 할당된 번호와 순서가 다를 수 있다.
사전 작업
Kubeadm으로 클러스터 설치하기
참고로 강의 중에는 1.27을 사용한다.
참고로 위의 사진은 쿠버네티스 문서를 구글 크롬의 번역 기능을 이용하여, 영어를 한국어로 바꾼 내용이다.
- 레드햇 배포판에서 kubeadm을 설치하는 방법을 가이드하고 있다.
- 메모리는 2GB / CPU는 Core 2개가 필요하다.
- 여러 워커노드를 만들 때 서로 네트워크가 연결되어 있어야 한다.
- 각 노드마다 호스트 이름, MAC 주소 및 product_uuid는 고유해야 한다.
- VM을 복사하더라도 위의 3 요소는 겹치면 안 된다.
- 쿠버네티스 요소들끼리 필요로 하는 포트가 있는데 강의에서 주어진 환경은 방화벽을 다 내리기 때문에, 어떤 포트도 막히지 않는다.
- 또한 스왑을 사용하지 않도록 해야한다.
그래서 현재 이 단계에서 할 일은 다음과 같다.
- 방화벽 해제
- 스왑 비활성화
컨테이너 런타임 설치
컨테이너 런타임 설치 부분이다.
참고를 보면, 컨테이너 한 방 정리에서 봤던 것처럼 도커 엔진이 CRI를 구현(만족)하지않고, 1.24부터는 cri-dockerd를 사용한다고 되어있다.
그리고 참고하라는 컨테이너 런타임을 확인해보자.
표시한 컨테이너 런타임들은 컨테이너 한 방 정리 에서 설명한 것들이다.
참고로 컨테이너는 컨테이너가 아니라, containerd이다.
그리고 해당 문서 아래애 네트워크 설정에 대한 문서가 있는데,
왼쪽은 한글문서이고, 오른쪽은 영어 문서를 한국어로 번역한 내용이다.
현재 강의 중에는 왼쪽 내용을 설명하신다.
따라서 iptables 를 세팅하면 된다.
그리고 좀 더 내리면 cgroup 에 대한 내용이 있다.
컨테이너 한 방 정리 에서 자원을 격리하는 역할 중에 CPU나 메모리 할당에 대한 얘기를 했었는데, 거기서 나오는 내용이다.
다소 딥한 내용이지만, 결론만 말하면 다음과 같다.
쿠버네티스와 컨테이너 런타임을 설치할 때 cgroup에는 두 가지 기술이 있는데,
쿠버네티스에서 systemd로 설정했으면, 컨테이너 런타임도 systemd로 설정을 해줘야 한다는 내용이다.
참고로 cgroupfs 에 대한 내용은 별로 안 나온다(일프로님 왈)
왜냐하면, 쿠버네티스와 containerd의 default가 cgourpfs이기 때문에 systemd로 변경하는 방법만 있는 것이다.
참고
- 쿠버네티스 문서에 Kubelet의 Cgroup의 Default가 cgroupfs라고 했는데, 레드햇 계열 리눅스의 경우 systemd를 메인으로 프로세스를 실행시키는 시스템이기 때문에, 쿠버네티스 설치시 Default로 systemd가 세팅된다.
- 이 경우 containerd도 systemd로 변경하여 모두 systemd를 쓰는게 Core 사용에 부담이 없다.
그래서 이 내용은 설치 스크립트에 반영되었다.
containerd 설치
좀 더 아래로 내려가면, containerd 설치 방법이 나온다.
별도의 설치 지침을 따르라는 링크만 있고, 설치 후 /etc/containerd/config.toml 파일이 있는지 확인을 하라고 한다.
이제 containerd 시작하기 페이지로 넘어가야 한다.
페이지를 이동하면 아래와 같이 깃허브 페이지로 들어간다.
위의 그림은 공식 바이너리를 받아서 설치하는 방법에 대한 설명이다
- Option 1: From the official binaries : 공식 바이너리를 받아서 설치하는 방법.
- 아래에 네모박스친
container...처럼 나오는 것 처럼 파일만 받으면 좋겠지만,runc와CNI plugins는 별도로 설치해야 한다고 한다.- 참고로 runc 는 위에서 설명했다.
이번 Option 2에서는 Docker에서 제공하는 containerd.io를 사용하라고 나온다.
또한 Rokcy 리눅스를 사용할 것이기 때문에, CentOS 로 들어가면 된다.
이렇게 타고타고 와서 도커 설치페이지까지 오게된다.
참고로 강의를 찍은 시점이 언젠진 모르겠지만, 현재 페이지에서는 CentOS 페이지는 CentOS Stream 버전에 대한 지원여부가 명시되어있다.
Rocky Linux 버전 지원을 보려면, RHEL 쪽에서 확인하면 되는데, RHEL 는 8 9 10 을 지원하므로 Rocky Linux 8 버전도 당연히 지원된다.
https://docs.docker.com/engine/install/rhel/ 로 오게 되면, 조금만 아래로 가보면 다음과 같이 나온다.
우리는 containerd.io 만 필요하므로, 다른 것 말고 저것만 설치하면 된다.
그런데, 저 명렁어를 그대로 가져다 쓰면, 최신버전의 containerd 를 설치하게 되는데,
실무에서는 OS 버전이 제각각이므로, 최신 버전이 아니라 버전을 확인하고, 설치해야 한다.
가장 먼저 봐야될 우선순위로는 설치할 쿠버네티스 버전과의 호환성이다.
버전 확인은 아래에서 확인 가능하다.
버전 확인
우리는 1.27 을 사용하기 때문에, 해당 사이트의 Deprecated containerd and kubernetes versions 쪽을 확인하면 된다.
해당 목차의 위는 현재 지원되고 있는 버전이다.
1.26+ 을 보면, Containerd Version 이 1.6.15 와 1.7.0 이상의 containerd를 설치해야한다고 나온다.
그럼 둘 중에 하나를 선택하면 되는데, 1.7.0이 비교적 최신이라고 그것을 바로 선택하면 안 된다.
메인 버전과 마이너 버전을 잘 봐야한다.
메인 버전은 소수점 앞의 버전을
마이너 버전은 소수점 뒤의 버전을 가리킨다.
그리고 EOL(End Of Life)이라 하여 릴리즈 버전의 만료기간이 있다.
그러나 다 빼고 status 에서 LTS를 사용하면 된다.
참고로 강의에서는 1.6.21 을 사용한다.
이제 다시 쿠버네티스 문서를 보자.
systemd로 cgroup 을 설정하는 법이 있지만, default를 사용하기 때문에 넘어가면 되는데,
만약 패키지를 통해서 설치했다면, CRI가 비활성화 되어있을 것이기 때문에 config 파일 안에서 disabled_plugins 목록에 포함되지 않도록 주의하고, 변경되었다면, containerd를 재시작하라고 한다.
참고로 CRI는 활성화 해야한다.
위의 과정을 다 끝내고 아래로 내려오면, 쿠버네티스 패키지 설치가 나온다.
참고로 최신 버전인 1,34 버전에 대한 설치 링크이지만, 강의에서 사용하는 1.27 버전 설치는 여기를 클릭 하면 된다.
첫 부분은 패키지를 다운 받을 Repository를 설정하는 부분이고,
그 아래 SELinux는 보안에 관한 설정이다. 넘어간 후,
가장 아래의 kubelet kubeadm kubectl 설치가 있다.
참고로 containerd와 마찬가지로 그냥 받으면 최신 버전으로 설치되므로 버전을 알아보고 지정해야한다.
이제까지 kubeadm을 설치하는 과정이었지만, 이제 kubernetes cluster를 생성하는 방법을 알아본다.
참고로 이 단계에서 할 일은 다음과 같다.
- 클러스터 초기화
- kubectl 사용 설정
- CNI Plugin 설치(calico)
- Master에 Pod를 생성할 수 있도록 설정
2-4. 무게감 있게 설치하는 방법 3/3 - 최종 정리
이미지 출처 - 인프런-쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
Calico
CNI 는 Container Network Interface 의 약자이다.
CRI가 쿠버네티스와 런타임간의 인터페이스라면,
CNI는 컨테이너들 간의 통신을 관리하는 부분에 대한 쿠버네티스와 네트워크 간의 인터페이스이다.
Calico는 네트워크를 제공하는 여러 솔루션 중에 하나다.
iptables 세팅(참고)
리눅스 OS에 할당된 네트워크(IP)가 있는데, 이 네트워크가 쿠버네티스의 파드 네트워크로 연결되려면 iptables를 통과해야 한다.
3. 마무리
위의 과정이 아래 링크에 정말 잘 정리되어있다.
https://cafe.naver.com/f-e/cafes/30725715/articles/24?boardtype=L&menuid=13&referrerAllArticles=false
https://cafe.naver.com/f-e/cafes/30725715/articles/28?boardtype=L&menuid=13&referrerAllArticles=false
그리고 장표로 마무리한다.
이미지 출처 - 인프런-쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
'Deploy > Kubernetes' 카테고리의 다른 글
| [Kubernetes] 쿠버네티스 어나더 클래스-Sprint 1. 실무에서 느껴 본 쿠버네티스가 정말 편한 이유 (0) | 2026.03.27 |
|---|---|
| [Kubernetes] 쿠버네티스 어나더 클래스-Sprint 1. 컨테이너 한방정리 (0) | 2025.09.26 |
| [Kubernetes] 대세는 쿠버네티스 (초급~중급편) Ch02. [기초편] 다지기 (0) | 2025.08.13 |
| [Kubernetes] 쿠버네티스 서비스(Service) (0) | 2025.03.05 |
| [Kubernetes] 쿠버네티스 디플로이먼트(Deployment) (0) | 2025.03.04 |