- kubelet으로 컨테이너 진단
kublet
은 컨테이너의 상태를 모니터링하고 관리하기 위해 여러 종류의 프로브(probe)
를 사용함
여기서 프로브(probe)
란?
: 컨테이너가 정상적으로 동작하는지, 트래픽을 받을 준비가 되었는지, 또는 아직 초기화 중인지 애플리케이션의 상태 등을 확인하기 위해 사용되는 진단 도구
임
추가적으로 프로브 종류에는 3가지 정도 있는데 아래와 같다.
1) Liveness Probes
: 컨테이너가 실행 중인지를 판단하는데 사용됨
: HTTP GET 요청, TCP 소켓 체크, 또는 커스텀 명령 실행을 통해 수행됨
2) Readiness Probes
: 컨테이너가 트래픽을 받을 준비가 되었는지를 확인하는 데 사용됨
: 초기 데이터 로딩이나 설정 과정이 필요한 경우에 사용됨
: Liveness Probes
와 같은 방법을 사용함
: Readiness Probes
가 실패하면, k8s는 해당 컨테이너에 트래픽을 보내지 않음
3) Startup Probes
: 컨테이너 안 애플리케이션이 시작되었는지 확인하는데 사용됨
: 특히, 시작 시간이 긴 애플리케이션에 유용함
: 위와 동일한 방법을 사용할 수 있으며, 이 프로브가 성공적으로 반환될 때까지 Liveness
와 Readiness
프로브의 검사는 시작되지 않음
- k8s Service
Service
는 여러 개 파드에 접근할 수 있는 하나의 IP를 제공하고, 본질적으로 로드밸런서 역할을 함
파드는 컨트롤러가 관리하므로 한군데에 고정해서 실행되지 않고, 클러스터 안을 옮겨 다님
이 과정에서 노드를 옮기면서 실행되기도 하고 클러스터 안 파드의 IP가 변경되기도 함
Service
타입
1) ClusterIP
(기본)
: 클러스터 내부에서만 접근 가능한 내부 IP를 생성함
: 클러스터 안 노드나 파드에서는 클러스터 IP를 이용해서 서비스에 연결된 파드에 접근함
: 클러스터 외부에서는 이용할 수 없음
: 활용 사례
-> 내부 컴포넌트 간 통신, DB 접근, API 서비스, 애플리케이션 간 의존성 관리
2) NodePort
: 서비스 하나에 모든 노드의 지정된 포트를 할당함
: 노드의 포트를 사용하므로 클러스터 안 뿐만 아니라 클러스터 외부에서도 접근할 수 있음
: 활용 사례
-> 개발 및 테스트 환경, 작은 규모의 운영 환경, 내부 네트워크에서의 접근
3) LoadBalancer
: 퍼블릭, 프라이빗 클라우드, 쿠버네티스를 지원하는 로드밸런서를 장비에서 서비스를 외부에 노출하기 위해 사용함
: 클라우드에서 제공하는 로드밸런서와 파드를 연결한 후 해당 로드밸런서의 IP를 이용해 클러스터 외부에서 파드에 접근할 수 있도록 해줌
: 활용 사례
-> 인터넷에 노출된 애플리케이션, 자동 스케일링, 간편한 트래픽 관리, 고가용성 및 장애 복구
Service
사용 방법
# 1. yaml 파일 생성
# 2. service 클러스터에 적용
k apply -f yaml파일명
# 3. deployment로 서비스에 연결한 pod 생성
k create deployment nginx-for-svc --image=nginx --replicas=2 --port=80
# 4. service 생성 확인
k get svc
# 5. 현재 실행중인 파드 IP 확인
k get pods -o wide
- Ingress 컨트롤러
Ingress
는 주로 클러스터 외부에서 내부 파드에 접근할 때 사용하는 방법임
HTTP/HTTPS 경로를 관리함
외부 요청을 서비스로 라우팅하며, 보통 호스트나 URL 경로, 다른 조건에 따라 라우팅을 구분함
Ingress
기능: URL 기반 라우팅, 가상 호스팅, SSL/TLS 종료
Ingress
사용 방법
# 1. Ingress 컨트롤러 활성화
minikube addons enable ingress
# 2. Ingress yaml 파일 설정
# 3. 생성한 ingress 템플릿 클러스터에 적용
k apply -f yaml파일명
Ingress Controller
: Ingress 리소스에 정의된 규칙을 실제로 구현하는 컴포넌트임
: Ingress는 설정일 뿐이고, 설정 내용대로 동작하는 실제 주체는 Ingress Controller
임
: Ingress 리소스를 감시하고, 그 설정대로 외부 트래픽을 클러스터 내 서비스로 전달하는 게 주요 역할임
: 쿠버네티스가 공식적으로 제공하는 것은 ingress-nginx
임
네임스페이스(Namespace)
k8s에서 네임스페이스는 클러스터 내의 자원을 분리하여 관리할 수 있는 방법을 제공함
네임스페이스 주요 기능
1) 리소스 분리
2) 액세스 제어
3) 리소스 할당
4) 네임스페이스 별 설정
기본 제공 네임스페이스
1) default
: 특별한 네임스페이스를 지정하지 않을 때 사용되는 기본 네임스페이스임
2) kube-system
: k8s 시스템 자체가 생성한 리소스(ex) API 서비스, 스케줄러 등)와 사용하는 네임스페이스임
3) kube-public
: 클러스터 내 모든 사용자가 읽을 수 있는 공개적인 데이터를 저장하는 데 사용되는 네임스페이스임
4) kube-node-lease
: 각 노드의 가용성 정보를 관리하기 위해 사용되며, 노드가 살아 있음을 증명하는 리스 정보를 담고 있음
추가 자료) 쿠버네티스 공식문서