AKS Periscope는 AKS(Azure Kubernetes Service) 노드 및 Pod에서 로그 및 진단 정보를 수집하는 오픈 소스 진단 도구입니다. Periscope를 배포하고 진단을 수집하려면 클러스터 및 Azure 스토리지 계정을 실행하고 az aks kollect 지정합니다. Visual Studio Code, Kustomize또는Azure Copilot AKS 확장을 사용하여 Periscope를 배포할 수도 있습니다.
Periscope는 기본적으로 다음 정보를 수집합니다.
- 네임스페이
kube-system스의 컨테이너 로그입니다. - Kubelet 및 컨테이너 런타임 시스템 서비스 로그.
- 아웃바운드 연결은 인터넷, API 서버, 터널, Azure Container Registry 및 Microsoft Container Registry를 확인합니다.
- 노드 iptables 데이터, 프로비저닝 로그, cloud-init 로그 및 DNS 설정.
- 네임스페이스의 Pod, 서비스 및 배포에 대한
kube-system설명입니다. - Kubelet 명령 인수 및 노드 및 Pod 리소스 사용.
사전 요구 사항
- Linux 또는 Windows 노드가 있는 기존 AKS 클러스터가 필요합니다. Periscope는 두 운영 체제를 모두 지원하지만 수집된 정보는 다릅니다. 자세한 내용은 Windows 및 Linux 기능 차이를 참조하세요.
- Azure CLI 또는 Kustomize를 사용하여 Periscope를 배포하려면 Azure CLI 설치하고 다음을 사용하여
az login로그인합니다. - Azure CLI, Visual Studio Code 또는 Kustomize를 사용하여 Periscope를 배포하려면 버전 1.21 이상을 설치
kubectl합니다. - 수집된 진단에 대한 Azure 스토리지 계정을 만들거나 식별합니다.
- 클러스터가 MICROSOFT MCR(Container Registry)에서 이미지를 끌어올 수 있는지 확인합니다.
Important
Periscope는 에이전트 풀 노드에서 실행되며 VM(가상 머신) 및 컨테이너 수준 데이터를 수집합니다. Periscope를 배포하기 전에 클러스터 소유자가 이 정보의 수집 및 공유를 이해하고 동의하는지 확인합니다. 자세한 내용은 Microsoft 지원 진단 정보 수집을 참조하세요.
Azure CLI 사용하여 Periscope 배포
이 az aks kollect 명령은 Periscope를 배포하고, 진단 정보를 수집하고, 결과를 Azure Blob Storage 업로드합니다.
확장을 설치하거나 업데이트합니다
aks-preview.az extension add --name aks-preview --upgradeAKS 클러스터에 대한 환경 변수를 설정합니다.
RESOURCE_GROUP=<resource-group-name> AKS_CLUSTER=<aks-cluster-name>Periscope를 배포하고 다음 스토리지 계정 옵션 중 하나를 사용하여 진단을 수집합니다.
AKS 진단 설정에서 스토리지 계정을 이미 지정한 경우 다음 명령을 실행합니다.
az aks kollect \ --resource-group $RESOURCE_GROUP \ --name $AKS_CLUSTER소유한 스토리지 계정을 사용하려면 해당 리소스 ID를 지정합니다.
STORAGE_ACCOUNT_ID=<storage-account-resource-id> az aks kollect \ --resource-group $RESOURCE_GROUP \ --name $AKS_CLUSTER \ --storage-account $STORAGE_ACCOUNT_ID스토리지 계정 이름 및 SAS(공유 액세스 서명) 토큰을 사용하려면 쓰기 권한이 있는 SAS 토큰을 지정합니다.
STORAGE_ACCOUNT=<storage-account-name> SAS_TOKEN=<sas-token> az aks kollect \ --resource-group $RESOURCE_GROUP \ --name $AKS_CLUSTER \ --storage-account $STORAGE_ACCOUNT \ --sas-token "$SAS_TOKEN"
Caution
SAS 토큰은 스토리지 계정에 대한 액세스 권한을 부여합니다. 암호처럼 보호하고, 소스 제어에 커밋하지 말고, 더 이상 필요하지 않은 경우 해지하거나 회전합니다.
컬렉션이 완료되면 Periscope는 클러스터 API 서버 FQDN(정규화된 도메인 이름)의 이름을 따서 명명된 Blob 컨테이너에 결과를 저장합니다. 컨테이너에는 분석을 위해 다운로드하거나 Microsoft 지원 공유할 수 있는 ZIP 파일도 포함되어 있습니다.
수집된 진단 사용자 지정
기본적으로 Periscope는 네임스페이스에서 로그 및 Kubernetes 개체를 kube-system 수집합니다. 선택적 az aks kollect 매개 변수를 사용하여 다른 리소스를 대상으로 합니다.
네임스페이스 또는 특정 컨테이너의 모든 컨테이너 로그를 수집합니다.
az aks kollect \ --resource-group $RESOURCE_GROUP \ --name $AKS_CLUSTER \ --container-logs "<namespace> <namespace>/<container-name>"네임스페이스 또는 특정 개체에 있는 리소스 형식의 모든 개체를 설명합니다.
az aks kollect \ --resource-group $RESOURCE_GROUP \ --name $AKS_CLUSTER \ --kube-objects "<namespace>/<resource-type> <namespace>/<resource-type>/<resource-name>"특정 Linux 노드 로그 파일을 수집합니다.
az aks kollect \ --resource-group $RESOURCE_GROUP \ --name $AKS_CLUSTER \ --node-logs "/var/log/azure-vnet.log /var/log/azure-vnet-ipam.log"특정 Windows 노드 로그 파일을 수집합니다.
az aks kollect \ --resource-group $RESOURCE_GROUP \ --name $AKS_CLUSTER \ --node-logs-windows 'C:\AzureData\CustomDataSetupScript.log'
이러한 매개 변수를 Azure CLI 사용하여 Periscope 배포의 스토리지 계정 옵션과 결합할 수 있습니다. 전체 명령 참조는 .를 참조하세요 az aks kollect.
Visual Studio Code 사용하여 Periscope 배포
Visual Studio Code AKS 확장은 Periscope를 배포하고 결과를 다운로드하기 위한 그래픽 워크플로를 제공합니다.
- Visual Studio Code Azure Kubernetes Service 확장을 설치합니다.
- 로그인하여 Visual Studio Code Azure.
- AKS 클러스터 진단 설정이 스토리지 계정을 지정하는지 확인합니다. 구성해야 하는 경우 다음 단계를 완료합니다.
- AKS 확장에서 클러스터를 마우스 오른쪽 단추로 클릭하고 Azure Portal 표시를 선택합니다.
- Azure 포털에서진단 설정모니터링> 진단 설정 >추가를 선택합니다.
- 진단 설정의 이름을 입력하고 스토리지 계정에 보관을 선택한 다음 스토리지 계정을 선택합니다.
- 사용하도록 설정할 로그를 선택한 다음 저장을 선택합니다.
- AKS 확장에서 클러스터를 마우스 오른쪽 단추로 클릭하고 AKS Periscope 실행을 선택합니다.
- 클러스터의 진단 설정에 둘 이상의 스토리지 계정이 있는 경우 결과를 저장할 계정을 선택합니다.
- 컬렉션이 완료되면 링크 생성 을 선택하여 다운로드 가능한 링크 또는 7일 후에 만료되는 공유 가능한 링크를 만듭니다. 결과에 모든 노드가 포함되지 않은 경우 나머지 업로드를 기다린 다음 링크 생성 을 다시 선택합니다.
자세한 내용은 Visual Studio Code AKS 도구 및 진단을 참조하세요.
Kustomize를 사용하여 Periscope 배포
Kubernetes 리소스를 검사하거나 재정의하거나, 특정 Periscope 릴리스를 선택하거나, 수집기를 사용자 지정해야 하는 경우 Kustomize를 사용합니다. 이 메서드를 사용하려면 스토리지 자격 증명 및 매니페스트를 직접 관리해야 합니다.
Periscope 구성에 대한 디렉터리를 만든 다음 해당 디렉터리에 파일을 만듭니
kustomization.yaml다.다음 설정을 사용하여 계정 SAS를 만듭니다. 가장 짧은 실제 만료 시간을 사용합니다.
-
서비스: Blob(
ss=b). -
리소스 종류: 서비스, 컨테이너 및 개체(
srt=sco). -
사용 권한: 읽기, 나열, 추가, 만들기 및 쓰기(
sp=rlacw). - 허용되는 프로토콜: HTTPS에만 해당합니다.
-
서비스: Blob(
Periscope 기본 릴리스, 이미지 태그, 스토리지 대상, SAS 키를 추가하고 실행 ID를 파일에 추가합니다. 모든 자리 표시자를 값으로 바꿉 있습니다. SAS 키는 선행 물음표(
?)를 포함해야 합니다.apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - https://github.com/Azure/aks-periscope//deployment/base?ref=<release-tag> images: - name: periscope-linux newName: mcr.microsoft.com/aks/periscope newTag: <image-tag> - name: periscope-windows newName: mcr.microsoft.com/aks/periscope newTag: <image-tag> secretGenerator: - name: azureblob-secret behavior: replace literals: - AZURE_BLOB_ACCOUNT_NAME=<storage-account-name> - AZURE_BLOB_CONTAINER_NAME=<container-name> - AZURE_BLOB_SAS_KEY=?<sas-token> configMapGenerator: - name: diagnostic-config behavior: merge literals: - DIAGNOSTIC_RUN_ID=<YYYY-MM-DDThh-mm-ssZ>Caution
파일에는
kustomization.yaml일반 텍스트로 된 SAS 토큰이 포함되어 있습니다. 파일을 소스 제어에 커밋하지 마세요. 계정 키처럼 SAS를 보호하고 더 이상 필요하지 않은 경우 SAS를 해지하거나 회전합니다.AKS 클러스터에 연결
kubectl합니다.az aks get-credentials \ --resource-group <resource-group-name> \ --name <aks-cluster-name>Periscope를 배포합니다.
kubectl apply -k <path-to-kustomize-directory>Periscope Pod가 실행 중인지 확인합니다.
kubectl get pods --namespace aks-periscope
사용 가능한 모든 구성 값, 선택적 Windows 구성 요소 및 다른 컬렉션을 실행하는 지침은 AKS Periscope Kustomize 배포 가이드를 참조하세요.
Azure Copilot 사용하여 Periscope 배포
Azure Copilot 사용하여 AKS 클러스터에 Periscope를 배포합니다. Azure Copilot 현재 컨텍스트에서 클러스터를 확인할 수 없는 경우 클러스터를 선택하라는 메시지가 표시됩니다. 클러스터를 선택한 후 Azure Copilot Periscope를 배포하기 전에 배포 세부 정보를 확인하도록 요청할 수 있습니다.
샘플 프롬프트는 다음과 같습니다.
- "AKS 클러스터에 Periscope를 배포해 줄래?"
- "내 클러스터에 Periscope를 배포해 줘."
- "내 클러스터에 Periscope를 추가해 줘."
- "내 클러스터에 Periscope 로깅을 추가해 줘."
- "AKS 클러스터에서 진단 로그를 수집해 줄래?"