도커를 어느 정도 공부하고서 드디어 쿠버네티스 공부를 시작했다! 저번에 기초 개념 없이 쿠버네티스에 뛰어들었다가 멸망한 적이 있어서 이번에야말로 성공해야겠다고 생각하고서 기초부터 공부를 시작하기로 했다!
그래서 이번 포스팅은 쿠버네티스를 공부하면서 중간중간 기록을 해보려 한다.
Q & A 형식으로 포스팅할 것이다! 말 그대로 내가 공부하면서 직접 마주한 궁금증들을 기록하려 한다!!
A. Pod는 도커 위의 컨테이너들을 묶어놓은 단위(?)이다. 쿠버네티스는 pod 단위로 관리한다.
Ex)
apiVersion: v1 # 쿠버네티스 API 버전
kind: Pod # 이 객체가 Pod임을 나타냄
metadata:
name: my-webapp-pod # Pod의 이름을 지정
labels:
app: my-webapp # Pod에 대한 레이블을 정의, Service에서 이 레이블을 사용해 Pod을 선택함
spec:
containers:
- name: my-webapp-container # 컨테이너의 이름을 지정
image: nginx:latest # 컨테이너에서 사용할 도커 이미지를 지정 (여기서는 Nginx 웹 서버)
ports:
- containerPort: 80 # 컨테이너가 외부와 통신할 때 사용할 포트를 지정 (Nginx 기본 포트 80)
A. 각각 다른 서버들(A, B, C)은 Kubelet과 네트워크 플러그인을 사용해 하나의 클러스터로 묶인다. 이 클러스터 내에서는 모든 서버가 같은 네트워크에 있는 것처럼 서로 통신할 수 있으며, Pod들이 분산된 서버 간에서도 원활히 협력할 수 있다.
결론적으로, 쿠버네티스는 네트워크 플러그인과 Kubelet을 사용해 물리적으로 다른 서버들을 하나의 클러스터로 묶고, 이 클러스터 내에서 각 서버의 Pod들이 마치 같은 서버에 있는 것처럼 서로 통신하고 협력할 수 있게 만든다!
A. 특정 애플리케이션을 이미지로 만들어서 도커 허브에 올리면 쿠버네티스가 설치된 서버에서 그 이미지를 다운로드 받아서 그 애플리케이션의 컨테이너를 받고 컨테이너를 필요에 따라 Pod로 묶어서 관리하는 것이다.
A. Service는 쿠버네티스에서 Pod들을 외부에 노출시키거나, Pod들 간의 통신을 안정적으로 관리하기 위해 사용되는 객체이다.
결론적으로, Pod는 컨테이너를 실행하고 관리하는 단위이고, Service는 이 Pod들을 네트워크 상에서 어떻게 접근할지 관리하는 역할을 한다. Pod를 구동시켜 컨테이너를 실행한 후, 필요에 따라 Service를 설정해 외부나 다른 Pod와의 통신을 관리할 수 있다.
Ex)
apiVersion: v1 # 쿠버네티스 API 버전
kind: Service # 이 객체가 Service임을 나타냄
metadata:
name: my-webapp-service # Service의 이름을 지정
spec:
selector:
app: my-webapp # 이 레이블을 가진 Pod을 선택 (Pod의 레이블과 매칭)
ports:
- protocol: TCP # 사용할 네트워크 프로토콜을 지정 (기본값은 TCP)
port: 80 # 서비스가 외부에 노출할 포트 (사용자들이 접속할 포트)
targetPort: 80 # Pod 내에서 실제로 컨테이너가 사용 중인 포트 (Pod의 80번 포트로 트래픽 전달)
type: LoadBalancer # 클러스터 외부에 노출하는 서비스 타입 (외부 IP를 통해 접근 가능)

이 사진은 내가 보기엔 중요한 것 같아서 설명해보겠다!!
쿠버네티스 클러스터는 크게 Object와 Controller로 나눌 수 있다.
Object는 쿠버네티스에서 관리되는 리소스들을 말한다.
Controller는 리소스들을 자동으로 관리하고 유지하는 다양한 컨트롤러이다.
A. 리소스는 애플리케이션이 실행되기 위해 사용하는 모든 자원을 의미한다. 여기에는 CPU, 메모리, 스토리지, 네트워크 대역폭 등이 포함된다. 쿠버네티스에서는 이러한 리소스를 관리하고 분배하여 애플리케이션이 원활하게 실행되도록 한다.
A. 무중단 배포는 쿠버네티스의 주요 기능 중 하나이다. 이를 통해 애플리케이션을 업데이트하면서도 서비스 중단 없이 사용자가 계속 애플리케이션을 사용할 수 있도록 보장한다!!!!! 쿠버네티스 대단하다.
쿠버네티스는 롤링 업데이트, 자동 롤백, 로드 밸런싱, 헬스 체크와 같은 기능을 통해 무중단 배포를 실현한다.