작은 클러스터에서 부가기능 리소스 사용량 줄이기

이 페이지에서는 클러스터 부가기능이 사용하는 리소스를 줄이는 방법을 설명합니다. 노드가 3개 이하인 클러스터나 리소스가 제한된 머신 유형을 사용하는 클러스터 같은 작은 클러스터에서 이러한 방법을 사용하세요.

개요

클러스터 노드는 워크로드 외에도 노드를 클러스터 마스터와 통합하고 기타 기능을 제공하는 몇 가지 부가기능을 실행합니다. 따라서 노드의 전체 리소스와 작업 부하에 사용할 수 있는 리소스는 차이가 있습니다. 자세한 내용은 클러스터 아키텍처 문서를 참조하세요.

이러한 부가기능의 기본 구성은 일반적인 클러스터에 적합하지만 특정 클러스터 구성에 따라 부가기능의 리소스 사용량을 세부 조정할 수 있습니다. 또한 사용 사례에 필요하지 않은 일부 부가기능은 사용 중지할 수 있습니다.

세부 조정은 예를 들어 노드가 하나이거나 아주 적은 클러스터 또는 저비용 머신 유형에서 실행되는 클러스터와 같이 컴퓨팅 리소스가 제한된 클러스터에 특히 유용합니다. 작은 클러스터를 사용하여 GKE를 시험 사용하거나 새 기능을 실험할 수 있습니다. 첫 번째 클러스터 템플릿을 사용하여 만든 클러스터도 세부 조정이 도움이 될 수 있습니다.

부가기능 구성

각 개별 부가기능을 구성하여 노드 리소스에 미치는 영향을 줄일 수 있습니다.

부가기능은 클러스터의 가시성과 디버깅을 제공합니다. 예를 들어 프로덕션 작업 부하를 실행하는 클러스터에서 모니터링을 사용 중지하면 문제를 디버깅하기가 더 어려워집니다.

Stackdriver Logging

Stackdriver Logging은 컨테이너 및 시스템 로그를 자동으로 수집, 처리, 저장합니다.

Stackdriver Logging을 완전히 사용 중지하거나 사용 설정 상태로 두되 Fluentd 부가기능을 세부 조정하여 리소스 사용량을 제한할 수 있습니다.

Stackdriver Logging이 사용 중지된 경우 로그 보기

Stackdriver Logging이 사용 중지되어도 최근 로그 항목을 볼 수 있습니다. 특정 Pod의 로그를 확인하려면 다음을 실행합니다.

kubectl logs -f [POD_NAME]

여기서 -f 옵션은 로그를 스트리밍합니다.

선택기와 일치하는 모든 Pod의 로그를 확인하려면 다음을 실행합니다.

kubectl logs -l [SELECTOR]

여기서 SELECTOR는 배포 선택기입니다(예 : 'app=frontend).'

Fluentd 미세 조정

앞의 설명처럼 로깅을 사용 중지하지 않기로 하는 경우 Fluentd를 세부 조정하여 로깅이 사용하는 리소스를 제한할 수 있습니다.

Fluentd는 노드에서 로그를 수집하여 Stackdriver로 보냅니다. Fluentd 에이전트는 DaemonSet를 사용하여 클러스터에 배포되므로 에이전트의 인스턴스가 클러스터의 각 노드에서 실행됩니다. 로깅 데이터를 대량으로 작성하는 애플리케이션의 경우 Fluentd를 위해 추가 리소스가 필요할 수 있습니다.

요구사항에 맞는 확장 정책을 만들어 Fluentd의 리소스 할당을 미세 조정할 수 있습니다. 확장 정책은 포드의 리소스 요청과 한도를 정의합니다. Kubernetes 스케줄러가 리소스 요청과 한도를 처리하는 방법에 대해 알아보려면 컨테이너 컴퓨팅 리소스 관리를 참조하세요. 리소스 요청과 한도가 서비스 품질(QoS)에 미치는 영향에 대한 자세한 내용은 Kubernetes의 리소스 서비스 품질을 참조하세요.

Fluentd의 리소스 사용량을 측정하고 이러한 값을 사용하여 커스텀 확장 정책을 작성하는 방법에 대한 안내를 보려면 다음 섹션을 펼치세요.

Stackdriver Monitoring

Stackdriver Monitoring을 사용하는 것이 좋습니다. 다만 일부 리소스를 다시 확보하기 위해 모니터링을 사용 중지할 수 있습니다.

Stackdriver Monitoring에 대한 자세한 내용은 GKE 모니터링 개요를 참조하세요.

Stackdriver Monitoring에서 커스텀 측정항목과 함께 수평형 Pod 자동 확장 처리 부가기능을 사용하는 경우 클러스터에서 수평형 Pod 자동 확장 처리(HPA)를 사용 중지해야 Stackdriver Monitoring을 완전히 사용 중지할 수 있습니다.

Stackdriver Kubernetes Monitoring

클러스터에서 Stackdriver Kubernetes Monitoring을 사용 설정 또는 사용 중지하려면 Kubernetes 콘솔을 사용합니다. 이 링크를 클릭하여 콘솔로 이동하세요.

수평형 Pod 자동 확장

수평형 Pod 자동 확장(HPA)은 CPU 사용량이나 메모리 같은 측정항목을 기반으로 배포의 복제본을 확장합니다. HPA가 필요 없고 이미 Stackdriver Monitoring을 사용 중지했다면 HPA도 사용 중지할 수 있습니다.

HPA를 사용 중지하려면 다음을 실행합니다.

gcloud container clusters update [CLUSTER_NAME] --update-addons=HorizontalPodAutoscaling=DISABLED

HPA를 사용 설정하려면 다음을 실행합니다.

gcloud container clusters update [CLUSTER_NAME] --update-addons=HorizontalPodAutoscaling=ENABLED

Kubernetes 대시보드

클러스터 리소스를 보존하기 위해 Kubernetes 대시보드 부가기능을 사용 중지할 수 있습니다. 대시보드는 Google Cloud Platform Console에서 사용할 수 있는 [GKE 대시 보드] [GKE 대시 보드]와 중복되므로 대시보드를 사용하지 않는 것이 좋습니다.

대시보드를 사용 중지하려면 다음을 사용하세요.

gcloud container clusters update [CLUSTER_NAME] 
--update-addons=KubernetesDashboard=DISABLED

대시보드를 사용 설정하려면 다음을 실행합니다.

gcloud container clusters update [CLUSTER_NAME] 
--update-addons=KubernetesDashboard=ENABLED

Kube DNS

Kube DNS는 클러스터에서 DNS 배포와 서비스를 예약하고, 클러스터의 Pod는 Kube DNS 서비스를 사용하여 DNS 이름을 서비스, Pod, 노드의 IP 주소와 공개 IP 주소로 확인합니다. Kube DNS는 example.com과 같은 공개 도메인 이름을 확인하고 servicename.namespace.svc.cluster.local과 같은 서비스 이름을 확인합니다. DNS 기반 서비스 검색에 대한 자세한 내용은 서비스 및 Pod의 DNS를 참조하세요.

기본적으로 고가용성을 유지하기 위해 몇몇 Kube DNS 복제본이 실행됩니다. 가용성이 뛰어난 DNS 확인이 필요하지 않다면 Kube DNS 복제본의 수를 하나로 줄여 클러스터 리소스를 보존할 수 있습니다. DNS 이름 확인이 전혀 필요하지 않다면 Kube DNS를 완전히 사용 중지할 수 있습니다.

Kube DNS 복제 줄이기

클러스터에 가용성이 뛰어난 DNS 확인이 필요하지 않은 경우, Kube DNS 수평형 자동 확장을 사용 중지하고 복제본의 수를 하나로 줄여 클러스터 리소스를 보존할 수 있습니다.

kube-dns 자동 확장 처리를 사용 중지하고 kube-dns를 단일 복제본으로 줄이려면 다음을 실행합니다.

kubectl scale --replicas=0 deployment/kube-dns-autoscaler --namespace=kube-system
kubectl scale --replicas=1 deployment/kube-dns --namespace=kube-system

자동 확장을 사용 설정하려면 다음을 실행합니다.

kubectl scale --replicas=1 deployment/kube-dns-autoscaler --namespace=kube-system

자동 확장을 더욱 정밀하게 제어하기 위해 자동 확장 매개변수를 미세 조정할 수 있습니다.

Kube DNS 사용 중지

Kube DNS를 완전히 사용 중지할 수 있습니다. Kube DNS는 종속 서비스의 DNS 이름을 확인하는 워크로드에 필요합니다. 여기에는 공개 도메인 이름과 클러스터 서비스의 이름이 포함됩니다.

Kube DNS를 사용 중지하려면 다음을 실행합니다.

kubectl scale --replicas=0 deployment/kube-dns-autoscaler --namespace=kube-system
kubectl scale --replicas=0 deployment/kube-dns --namespace=kube-system

Kube DNS를 사용 설정하려면 다음을 실행합니다.

kubectl scale --replicas=1 deployment/kube-dns --namespace=kube-system

여기서 --replicas=1은 원하는 복제본 수입니다.

Kube DNS 자동 확장을 사용 설정하려면 다음을 실행합니다.

kubectl scale --replicas=1 deployment/kube-dns-autoscaler --namespace=kube-system
Kube DNS 없이 DNS 조회

원하는 DNS 서비스로 외부 도메인 이름 확인을 사용하도록 Pod를 구성할 수 있습니다. 다음 예시는 외부 이름 조회에 Google Public DNS를 사용하는 Pod를 보여 줍니다.

apiVersion: v1
kind: Pod
metadata:
  namespace: default
  name: dns-example
spec:
  containers:
    - name: test
      image: nginx
  dnsPolicy: "None"
  dnsConfig:
    nameservers:
      - 8.8.8.8
      - 8.8.4.4
Kube DNS 없이 서비스 검색

DNS 기반 서비스 검색의 대안으로 서비스 환경 변수를 사용할 수 있습니다. 포드가 만들어지면 포드와 동일한 네임스페이스에 있는 모든 서비스의 서비스 환경 변수가 자동으로 생성됩니다. 환경 변수는 포드를 만들기 전에 생성된 서비스에 대해서만 생성되기 때문에 이 방법은 Kube DNS보다 제한이 많습니다.

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Kubernetes Engine 문서