워크로드 배포 모니터링

이 문서는 시리즈의 일부입니다. 개요부터 시작합니다.

Kubernetes 워크로드의 상태 및 성능을 모니터링하여 최적으로 실행되도록 하는 것이 중요합니다. AKS(Azure Kubernetes Service)에는 배포, DaemonSet 기능 및 서비스의 상태 및 성능을 검사 데 사용할 수 있는 몇 가지 도구가 있습니다.

도구

모든 배포 및 DaemonSet 기능이 실행 중인지 여부를 확인하는 것이 중요합니다. 이 문서에서는 다음을 사용하여 준비 상태와 사용 가능한 상태의 복제본(replica) 예상 복제본(replica) 개수와 일치하는지 여부를 확인하는 방법을 설명합니다.

  • Azure Portal.
  • Azure Monitor의 컨테이너 인사이트 기능입니다.
  • kubectl 명령줄 도구입니다.
  • 프로메테우스와 그라파나.

Azure Portal

Azure Portal을 사용하여 워크로드에서 다음 구성 요소의 상태를 확인할 수 있습니다. 자세한 내용은 Azure Portal에서 Kubernetes 리소스에 액세스하세요.

배포, ReplicaSet, StatefulSetDaemonSet

준비 상태에 있는 복제본(replica) 수가 원하는 복제본(replica) 수와 일치하는지 확인합니다. 포털에는 다음이 표시됩니다.

  • 현재 사용 가능하고 트래픽을 처리할 준비가 된 복제본(replica) 수입니다. 이러한 복제본(replica) 작업자 노드에 성공적으로 예약되고, 시작 프로세스를 완료하고, 준비 검사 전달했습니다.

  • 배포에 대해 지정된 원하는 복제본(replica) 수 또는 배포가 기본 목표로 하는 복제본(replica) 수입니다. Kubernetes 배포 컨트롤러는 배포 상태를 지속적으로 모니터링하고 실제 복제본(replica) 수가 원하는 수와 일치하는지 확인합니다.

서비스 및 수신

모든 서비스 및 수신에 대해 상태 정상인지 확인합니다.

스토리지

상태 모든 영구 볼륨 클레임 및 영구 볼륨에 바인딩되어 있는지 확인합니다.

컨테이너 인사이트

컨테이너 인사이트는 AKS에 배포되거나 Azure Arc 지원 Kubernetes에서 관리하는 컨테이너 워크로드에 대한 모니터링 기능을 제공하는 모니터의 기능입니다. 이 기능은 컨트롤러, 노드 및 컨테이너에서 메모리 및 프로세서 메트릭과 같은 성능 및 상태 정보를 수집합니다. 또한 분석을 위해 컨테이너 로그를 캡처합니다.

다양한 보기 및 미리 빌드된 통합 문서를 사용하여 수집된 데이터를 분석할 수 있습니다. 클러스터 내의 다양한 구성 요소의 성능 및 동작을 검사합니다. 컨테이너 인사이트를 사용하면 컨테이너 워크로드의 전체 상태에 대한 인사이트를 얻을 수 있으므로 성능을 최적화하고 문제를 해결하기 위해 정보에 입각한 결정을 내릴 수 있습니다.

컨테이너 인사이트를 사용하여 다음을 수행할 수 있습니다.

  • 각 노드에서 실행되는 컨테이너와 해당 프로세서 및 메모리 사용량을 식별하여 리소스 병목 상태를 식별합니다.

  • 컨테이너 인스턴스에서 호스트되는 컨테이너 그룹 및 컨테이너의 프로세서 및 메모리 사용량을 식별합니다.

  • 컨트롤러 또는 Pod에서 컨테이너가 있는 위치를 식별하여 컨트롤러 또는 Pod의 전반적인 성능을 확인합니다.

  • 호스트에서 실행되고 Pod를 지원하는 표준 프로세스와 관련이 없는 워크로드의 리소스 사용을 검토합니다.

  • 용량 요구 사항을 식별하고 클러스터가 유지할 수 있는 최대 부하를 결정할 수 있도록 평균 부하 및 부하가 많은 클러스터의 동작을 이해합니다.

  • 실시간으로 문제를 해결할 수 있도록 컨테이너 엔진에서 생성하는 라이브 컨테이너 로그 및 메트릭에 액세스합니다.

  • 노드 또는 컨테이너의 CPU 및 메모리 사용량이 임계값을 초과하거나 인프라 또는 노드 상태 롤업의 클러스터에서 상태 변경이 발생하는 경우 사전에 알리거나 기록하도록 경고를 구성합니다.

Azure Portal에서 컨테이너 인사이트는 AKS 클러스터의 상태 및 성능을 모니터링하고 분석하는 데 도움이 되는 몇 가지 도구를 제공합니다.

  • 클러스터: 이 기능은 CPU 및 메모리 사용량, Pod 및 노드 수, 네트워크 트래픽과 같은 주요 메트릭을 포함하여 AKS 클러스터의 개요를 제공합니다. 클러스터의 전반적인 상태 및 리소스 사용에 대한 인사이트를 얻을 수 있습니다.

  • 보고서: 이 기능은 리소스 사용량, Pod 상태 및 컨테이너 인사이트와 같은 클러스터 성능의 다양한 측면을 시각화하고 분석하는 데 사용할 수 있는 미리 빌드된 보고서를 제공합니다. 이 데이터는 컨테이너 및 워크로드의 동작과 성능을 이해하는 데 도움이 됩니다.

  • 노드: 이 기능은 클러스터의 노드에 대한 자세한 정보를 제공합니다. CPU 및 메모리 사용량, 디스크 및 네트워크 I/O, 각 노드의 조건 및 상태 대한 메트릭을 보여 줍니다. 이 데이터를 사용하여 개별 노드 성능을 모니터링하고, 잠재적인 병목 상태를 식별하고, 효율적인 리소스 할당을 보장할 수 있습니다.

  • 컨트롤러: 이 기능은 AKS 클러스터의 Kubernetes 컨트롤러에 대한 가시성을 제공합니다. 컨트롤러 인스턴스 수, 현재 상태 및 컨트롤러 작업의 상태 같은 정보를 보여 줍니다. 워크로드 배포, 서비스 및 기타 리소스를 관리하는 컨트롤러의 상태 및 성능을 모니터링할 수 있습니다.

  • 컨테이너: 이 기능은 AKS 클러스터에서 실행되는 컨테이너에 대한 인사이트를 제공합니다. 리소스 사용, 다시 시작 및 각 컨테이너의 수명 주기 이벤트와 관련된 정보를 제공합니다. 이 데이터를 사용하여 워크로드의 컨테이너를 모니터링하고 문제를 해결할 수 있습니다.

  • 라이브 로그: 라이브 로그 기능은 실행 중인 컨테이너에서 로그 이벤트의 라이브 스트림을 제공하므로 컨테이너 로그를 실시간으로 볼 수 있습니다. 이 데이터를 사용하여 애플리케이션을 효과적으로 모니터링하고 문제를 해결하고 컨테이너의 문제를 신속하게 식별하고 해결할 수 있습니다.

자세한 내용은 다음 리소스를 참조하세요.

명령줄 도구

워크로드의 상태 검사 위해 kubectl 명령줄 도구를 사용하여 Kubernetes API를 통해 Kubernetes 클러스터의 제어 평면과 통신할 수 있습니다.

Pod

모든 네임스페이스에서 실행되는 Pod를 나열하려면 다음 명령을 실행합니다.

kubectl get pod -A

명령 의 출력에서 READY 열은 Pod 컨테이너의 준비 상태에 대한 중요한 정보를 제공합니다.

첫 번째 숫자는 현재 준비 상태인 컨테이너 수를 의미합니다. 이러한 컨테이너는 준비 상태 프로브를 통과했으며 들어오는 트래픽을 처리할 준비가 되어 있습니다. 두 번째 숫자는 준비 상태에 관계없이 Pod 내에 정의된 컨테이너의 총 수를 나타냅니다. 여기에는 준비된 컨테이너와 아직 초기화 중이거나 문제가 발생하는 컨테이너가 포함됩니다.

첫 번째 숫자(준비 컨테이너)가 Pod의 두 번째 숫자(총 컨테이너)와 일치하는지 확인합니다. 다른 경우 일부 컨테이너가 준비되지 않았거나 준비 상태에 도달하지 못하는 문제가 있을 수 있습니다.

배포, StatefulSet, DaemonSetStatefulSet

다음 명령을 실행하여 모든 네임스페이 스에서 배포를 검색합니다.

kubectl get deploy -A

명령의 kubectl get deploy 출력에서 READY 열의 숫자는 배포에서 복제본(replica) 현재 준비 상태를 나타냅니다.

첫 번째 숫자는 트래픽을 처리할 준비가 되어 있고 사용할 수 있는 복제본(replica) 수를 나타냅니다. 이러한 복제본(replica) 성공적으로 시작되어 준비 검사 통과했습니다. 두 번째 숫자는 배포 구성에 지정된 원하는 복제본(replica) 수를 나타냅니다. 배포에서 기본 목표로 하는 대상 복제본(replica) 수입니다.

첫 번째 숫자가 두 번째 숫자와 일치하는지 확인하는 것이 중요합니다. 원하는 수의 복제본(replica) 실행 중이며 준비되었음을 나타냅니다. 두 숫자 간의 불일치는 해결해야 하는 크기 조정 또는 준비 문제를 나타낼 수 있습니다.

다음 명령을 실행하여 모든 네임스페이 스에서 StatefulSet 기능을 검색합니다.

kubectl get statefulset -A

다음 명령을 실행하여 모든 네임스페이 스에서 DaemonSet 기능을 검색합니다.

kubectl get ds -A

명령을 실행 kubectl get ds 하여 예상대로 실행 중인지 DaemonSet 확인할 수 있습니다. 예를 들어 다음 명령을 실행하여 컨테이너 인사이트 에이전트가 성공적으로 배포되었는지 확인할 수 있습니다.

kubectl get ds ama-logs --namespace=kube-system

마찬가지로 관리되는 Prometheus용 Monitor에서 Prometheus 메트릭을 수집하도록 AKS 클러스터를 구성하는 경우 다음 명령을 실행하여 Linux 노드 풀에 올바르게 배포되었는지 확인할 DaemonSet 수 있습니다.

kubectl get ds ama-metrics-node --namespace=kube-system

이 출력은 클러스터의 DaemonSet 기능에 대한 정보를 제공합니다. 출력을 검사하여 준비됨, 현재원하는 상태의 Pod 수가 동일한지 확인합니다. 동일한 경우 구성에 DaemonSet 지정된 원하는 Pod 수는 현재 실행되고 준비된 Pod 수와 같습니다.

ReplicaSet 기능에 대해 동일한 검사 수행하는 것이 좋습니다. 다음 명령을 사용하여 모든 네임스페이 ReplicaSet 스의 기능을 검색할 수 있습니다.

kubectl get rs -A

의도한 수의 Pod 또는 복제본(replica) 예상대로 실행되도록 이 출력의 숫자가 각 상태에 대해 동일한지 확인합니다. 불일치는 다음 명령 중 하나를 사용하여 추가 조사 또는 문제 해결이 필요하다는 것을 나타낼 수 있습니다.

kubectl describe: kubectl describe 명령을 사용하여 Pod, 배포 및 서비스와 같은 Kubernetes 리소스에 대한 자세한 정보를 가져올 수 있습니다. 현재 상태, 이벤트, 조건 및 관련 메타데이터를 포함하여 지정된 리소스에 대한 포괄적인 개요를 얻을 수 있습니다. 이 정보는 Kubernetes API 서버에서 검색됩니다. 이 명령은 리소스의 상태 문제 해결 및 이해에 유용합니다.

실행 kubectl describe pod <pod-name> 하여 현재 상태, 이벤트, 레이블 및 연결된 컨테이너를 포함하여 특정 Pod에 대한 자세한 정보를 가져올 수 있습니다. 출력에는 Pod 상태, 이벤트, 볼륨 및 조건과 같은 정보가 표시됩니다.

kubectl 로그: kubectl 로그 명령을 사용하여 Pod 내의 컨테이너에서 생성된 로그를 검색할 수 있습니다. 이 명령은 디버깅 및 문제 해결에 유용합니다. 실시간으로 로그를 보거나 컨테이너에서 기록 로그를 검색할 수 있습니다.

컨테이너 로그를 보려면 명령을 kubectl logs <pod-name> -c <container-name>사용할 수 있습니다. Pod의 이름으로 바꿉 <pod-name> 습니다. 로그를 가져올 컨테이너의 이름으로 바꿉 <container-name> 니다. Pod에 컨테이너가 하나만 있는 경우 컨테이너 이름을 지정할 필요가 없습니다. 플래그 kubectl logs-f 사용하여 실시간으로 로그를 따를 수도 있습니다. 이 플래그는 Linux 명령과 tail -f 유사합니다.

kubectl 이벤트: kubectl 이벤트 명령을 사용하여 배포, DaemonSetReplicaSet또는 Pod가 시작 중에 시작되지 않거나 문제가 발생하는 경우 문제를 해결할 수 있습니다. 이 명령은 지정된 리소스와 연결된 이벤트의 시간순 목록을 제공합니다. 문제의 원인에 대한 인사이트를 얻을 수 있습니다.

사용 kubectl events하려면 명령을 kubectl events 실행한 다음 특정 리소스 이름을 실행할 수 있습니다. 또는 선택기를 사용하여 레이블, 네임스페이스 또는 기타 조건에 따라 이벤트를 필터링할 수 있습니다.

예를 들어 특정 Pod와 관련된 이벤트를 검색하려면 실행할 kubectl events --field-selector involvedObject.name=<pod-name> --field-selector involvedObject.kind=Pod수 있습니다. 조사하려는 Pod의 이름으로 바꿉 <pod-name> 습니다. 명령의 kubectl events 출력에는 이벤트 유형(일반 또는 경고), 이벤트 메시지, 이벤트 이유 및 이벤트가 발생한 타임스탬프를 비롯한 정보가 표시됩니다. 이 정보를 사용하여 시작하는 동안 오류 또는 문제의 원인을 확인할 수 있습니다.

배포 DaemonSet와 같은 특정 리소스 또는 ReplicaSet 문제가 발생하는 것으로 의심되는 경우 선택기를 사용하여 이벤트를 필터링할 수 있습니다. 예를 들어 kubectl events --field-selector involvedObject.name=<deployment-name> --field-selector involvedObject.kind=Deployment 특정 배포와 관련된 이벤트를 보여 줍니다. 잠재적 오류, 오류 또는 리소스가 제대로 시작되지 않았을 수 있는 기타 이벤트에 대한 중요한 세부 정보를 수집할 수 있도록 이벤트를 검사합니다. 이 데이터를 사용하여 리소스에 영향을 주는 문제를 해결하고 해결할 수 있습니다.

Prometheus 및 Grafana를 사용하여 클러스터 내 모니터링

AKS 클러스터에 Prometheus 및 Grafana를 배포하는 경우 K8 클러스터 세부 정보 대시보드를 사용하여 인사이트를 얻을 수 있습니다. 이 대시보드는 CPU 및 메모리 사용량, 네트워크 활동 및 파일 시스템 사용량과 같은 Prometheus 클러스터 메트릭에서 수집된 정보를 제공합니다. 또한 개별 Pod, 컨테이너 및 시스템 서비스에 대한 자세한 통계를 보여 줍니다.

배포, 작업, Pod 및 컨테이너의 상태 및 성능을 보장하기 위해 대시보드의 기능을 사용할 수 있습니다. 배포를 선택하여 각 배포에 대한 복제본(replica) 수와 총 복제본(replica) 수를 확인합니다. 컨테이너를 선택하여 실행 중, 보류 중, 실패 및 성공한 컨테이너를 보여 주는 차트를 봅니다.

Prometheus 및 Azure Managed Grafana에 대한 관리되는 서비스 모니터링

미리 빌드된 대시보드를 사용하여 Prometheus 메트릭을 시각화하고 분석할 수 있습니다. 이렇게 하려면 Prometheus용 Monitor 관리 서비스에서 Prometheus 메트릭을 수집하고 Monitor 작업 영역을 Azure Managed Grafana 작업 영역에 연결하도록 AKS 클러스터를 설정해야 합니다.

미리 빌드된 대시보드를 설치하여 Kubernetes 클러스터의 성능 및 상태를 포괄적으로 볼 수 있습니다. 자세한 설치 지침은 Kubernetes에 대한 Prometheus 모니터링 믹신을 참조 하세요. 대시보드는 Managed Prometheus 폴더의 지정된 Azure Managed Grafana 인스턴스에 프로비전됩니다. 일부 대시보드에는 다음이 포함됩니다.

  • Kubernetes / Compute 리소스 / 클러스터
  • Kubernetes / Compute 리소스 / 네임스페이스(Pod)
  • Kubernetes / Compute 리소스 / 노드(Pod)
  • Kubernetes / Compute 리소스 / Pod
  • Kubernetes / Compute 리소스 / 네임스페이스(워크로드)
  • Kubernetes / Compute 리소스 / 워크로드
  • Kubernetes / Kubelet
  • 노드 내보내기 / USE 메서드 / 노드
  • 노드 내보내기/노드
  • Kubernetes / Compute 리소스 / 클러스터(Windows)
  • Kubernetes / Compute 리소스 / 네임스페이스(Windows)
  • Kubernetes / Compute 리소스 / Pod(Windows)
  • Kubernetes / USE 메서드 / 클러스터 (Windows)
  • Kubernetes / USE 메서드 / 노드 (Windows)

이러한 기본 제공 대시보드는 Prometheus 및 Grafana를 사용하여 Kubernetes 클러스터를 모니터링하기 위해 오픈 소스 커뮤니티에서 널리 사용됩니다. 이러한 대시보드를 사용하여 리소스 사용량, Pod 상태 및 네트워크 활동과 같은 메트릭을 볼 수 있습니다. 모니터링 요구 사항에 맞게 조정된 사용자 지정 대시보드를 만들 수도 있습니다. 대시보드를 사용하면 AKS 클러스터에서 Prometheus 메트릭을 효과적으로 모니터링하고 분석할 수 있으므로 성능을 최적화하고 문제를 해결하며 Kubernetes 워크로드의 원활한 작업을 보장할 수 있습니다.

Kubernetes/Compute 리소스/노드(Pod) 대시보드를 사용하여 Linux 에이전트 노드에 대한 메트릭을 볼 수 있습니다. 각 Pod에 대한 CPU 사용량, CPU 할당량, 메모리 사용량 및 메모리 할당량을 시각화할 수 있습니다.

Kubernetes /Compute Resources / Pod Grafana 대시보드는 선택한 클러스터, 네임스페이스 및 Pod의 리소스 사용량 및 성능 메트릭에 대한 인사이트를 제공합니다. 이 대시보드를 사용하여 CPU 사용량, CPU 제한, CPU 할당량, 메모리 사용량, 메모리 할당량, 네트워킹 메트릭 및 스토리지 메트릭과 관련된 메트릭을 가져올 수 있습니다. 대시보드에서 선택한 네임스페이스 내에서 AKS 클러스터, 네임스페이스 및 Pod를 선택하여 다음 세부 정보를 확인합니다.

  • CPU 사용량: 이 차트는 선택한 Pod에 대한 시간에 따른 CPU 사용량을 표시합니다. CPU 사용 패턴을 검토하고 잠재적인 급증 또는 이상을 식별할 수 있습니다.

  • CPU 제한: 이 차트는 Pod가 CPU 리소스 제한을 초과할 때 발생하는 CPU 제한에 대한 인사이트를 제공합니다. 이 메트릭을 모니터링하여 CPU 제한으로 인해 Pod의 성능이 제한된 영역을 식별할 수 있습니다.

  • CPU 할당량: 이 차트는 선택한 Pod에 할당된 CPU 할당량을 표시합니다. Pod가 할당된 CPU 할당량을 초과하면 리소스 조정이 필요할 수 있습니다.

  • 메모리 사용량: 이 차트는 선택한 Pod의 메모리 사용량을 표시합니다. 메모리 사용 패턴을 모니터링하고 메모리 관련 문제를 식별합니다.

  • 메모리 할당량: 이 차트는 Pod에 할당된 메모리 할당량을 표시합니다. Pod가 할당된 메모리 할당량을 초과하면 리소스 최적화가 필요함을 나타낼 수 있습니다.

  • 네트워킹 메트릭: 이러한 차트는 수신 및 전송된 대역폭과 수신 및 전송 패킷의 속도를 보여 줍니다. 이러한 메트릭은 네트워크 사용량을 모니터링하고 잠재적인 네트워킹 병목 상태 또는 변칙을 검색하는 데 도움이 됩니다.

  • 스토리지 메트릭: 이 섹션에서는 IOPS(초당 I/O 작업) 및 처리량과 같은 스토리지 관련 메트릭에 대한 정보를 제공합니다. 이러한 메트릭을 모니터링하여 Pod 스토리지의 성능과 효율성을 측정합니다.

Kubernetes /Compute Resources/ Pod Grafana 대시보드를 사용하여 Kubernetes 클러스터에서 Pod의 리소스 사용량, 성능 및 동작에 대한 인사이트를 얻을 수 있습니다. 이 정보를 사용하여 리소스 할당을 최적화하고, 성능 문제를 해결하고, 정보에 입각한 결정을 내려 컨테이너화된 워크로드의 원활한 작동을 보장합니다.

참가자

Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.

보안 주체 작성자:

기타 기여자:

비공개 LinkedIn 프로필을 보려면 LinkedIn에 로그인합니다.

다음 단계