Devops 엔지니어 솔렐레 IT

[도커/쿠버네티스 기초] Kubernetes Ingress, Autoscaler 본문

Devops 엔지니어가 알려주는 클라우드 지식/Docker, Kubernetes

[도커/쿠버네티스 기초] Kubernetes Ingress, Autoscaler

솔렐레_ 2020. 11. 28. 09:00


1. Ingress
Ingress는 크게 두 가지의 기능을 가지고 있습니다. 첫 번째는 LoadBalancing 기능입니다. L4, L7 장비의 기능을 도와주는 오브젝트 입니다. 따라서 이를 통해 Path에 따라 원하는 Pod로 연결하도록 하여 별도의 IP LoadBalancing을 해주는 장비가 필요 없게 됩니다. 두 번째로 Canary Upgrade를 쉽게 할 수 있습니다. Ver2의 APP이 만들어졌을 경우, 일부의 사용자만 해당 버전을 사용하도록 설정이 가능하고 각각의 % 가중치를 조정할 수도 있습니다.

Ingress를 구동하기 위해서는 별도 플로그인을 설치해야 하며 이를 Ingress Controller 하며,  NGINX, Kong 등이 있습니다. Ingress Controller를 통해 Ingress를 사용하기 위한 Pod가 만들어지면 이를 외부에서 접근하기 위한 Service 오브젝트가 필요합니다. Service에 NodePort나 LoadBalancer 속성을 지정하고 User가 도메인을 통해 호출을 하게 되면 Ingress Controller Pod로 트래픽이 들어와서 Ingress 룰에 따라 지정된 Pod에 접근을 할 수 있게 됩니다. 또한 Ingress는 Https 인증서 인증을 하는 기능도 제공합니다.

 

2. Autoscaler
쿠버네티스의 Autoscaler에는 HPA, VPA, CA 이렇게 세 가지 방법이 있습니다.

1) HPA (Horizontal Pod Autoscaler): Pod의 개수 증가
Pod의 자원 상태를 모니터링하고 있다가 가용 용량을 넘어가게 될 경우 replicas를 높여주게 됩니다. 따라서 컨트롤러는 Pod를 추가 생성하여 scale out을 진행하게 됩니다. 다시 트래픽이 감소하여 리소스 사용량이 줄게 되면 Pod가 삭제되어 scale in을 하게 됩니다. 따라서 이를 통해 변동적인 서비스를 안정적으로 유지할 수 있게 됩니다. 기동이 빠른 App이나 Stateless App에서 사용을 권장합니다.

2) VPA(Verical Pod Autoscaler): Pod의 리소스 증가
Pod의 리소스 자원을 모두 사용할 경우 VPA가 리소스 상태를 감지하고 있다가 Pod를 restart라면서 리소스를 증가시켜주게 됩니다. 따라서 리소스 자원에 따라 scale up/down 을 하게 됩니다. 따라서 Stateful App에 사용을 하며 한 컨트롤러에 HPA와 VPA를 같이 사용하지 않도록 합니다.

3) CA(Cluster Autoscaler): 클러스터에 노드를 추가
클러스터에 있는 모든 노드에 자원이 없을 경우, 추가 Pod를 만들어야 할 때 이를 감지하고 CA에게 Woker Node를 생성해달라고 요청을 합니다. CA를 Cloud Provider(AWS, GCP, Azure)에 연결해놨을 때 요청이 들어왔을 때 해당 Provider에 노드를 만들어주고 스케줄러는 Pod를 배치합니다. 사용하다가 기존의 노드에서 자원이 남게 될 경우 Provider에 생성되었던 노드는 삭제가 되면서 해당 노드에 있던 Pod는 로컬 노드로 옮겨지게 됩니다.

Comments