[Udemy] Service
Service
쿠버네티스에서는 다양한 Service를 제공
- NodePort: 각 노드의 특정 포트를 통해 외부에서 접근할 수 있도록 합니다.
- LoadBalancer: 클라우드 제공업체의 로드 밸런서를 사용하여 외부에서 접근할 수 있도록 합니다.
- Ingress : 클러스터 외부에서 내부 서비스로의 HTTP 및 HTTPS 트래픽을 관리하는 API 객체입니다. 이를 통해 URL 경로 기반 라우팅, SSL 종료, 호스트 기반 라우팅 등을 설정할 수 있습니다.
- ClusterIP : 클러스터 내부에서만 접근 가능한 기본 서비스 유형입니다.
- ExternalName : 외부 서비스에 대한 DNS 이름을 제공합니다. ex) AWS RDS Database
즉, 일반적으로 AKS에서는 클러스터 외부에서 Pod 내 애플리케이션에 접근하기 위해 Load Balancer를 사용한다.
이러한 LoadBalancer는 AKS 생성 시 기본 인프라로 생성된다.
# Pod 생성
# Create a Pod
kubectl run <desired-pod-name> --image <Container-Image>
kubectl run my-first-pod --image stacksimplify/kubenginx:1.0.0
# 생성된 Pod를 service(type : LoadBalancer)를 통해 외부에 노출
# Expose Pod as a Service
kubectl expose pod <Pod-Name> --type=LoadBalancer --port=80 --name=<Service-Name>
kubectl expose pod my-first-pod --type=LoadBalancer --port=80 --name=my-first-service
my-first-pod라는 pod를,
my-first-service라는 로드밸런서 타입의 Service를 통해
port 80번으로 외부에 노출시킨다.
# Service 확인
# Get Service Info
kubectl get service
kubectl get svc
---
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 83m
my-first-service LoadBalancer 10.0.58.115 20.249.195.85 80:30633/TCP 9s
my-first-service라는 LoadBalnacer 타입의 service가 생성되었다.
# 해당 Service의 External IP로 접근
해당 Service의 외부 IP로 접근 시, my-first-pod의 애플리케이션으로 접근되는 것을 확인 가능
Portal에서도 자동으로 새 프런트 엔드 IP도 생성되었고
부하 분산 규칙이 생성된 것을 확인 가능하다.
expose 명령 하나만으로도 이렇게 가능하다는 점이 aks의 장점이당
[참고 영상]
Udemy - Azure Kubernetes Service with Azure DevOps and Terraform
섹션 4 : Kubernetes Fundamentals with kubectl - Imperative Approach
23. Step-06: Load Balancer Service Introduction
24. Step-07: Create Pod and LoadBalancer Service and Test
[참고 문서]