AKS(Azure Kubernetes Service) 클러스터에 Periscope 배포

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 업로드합니다.

  1. 확장을 설치하거나 업데이트합니다 aks-preview .

    az extension add --name aks-preview --upgrade
    
  2. AKS 클러스터에 대한 환경 변수를 설정합니다.

    RESOURCE_GROUP=<resource-group-name>
    AKS_CLUSTER=<aks-cluster-name>
    
  3. 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를 배포하고 결과를 다운로드하기 위한 그래픽 워크플로를 제공합니다.

  1. Visual Studio Code Azure Kubernetes Service 확장을 설치합니다.
  2. 로그인하여 Visual Studio Code Azure.
  3. AKS 클러스터 진단 설정이 스토리지 계정을 지정하는지 확인합니다. 구성해야 하는 경우 다음 단계를 완료합니다.
    1. AKS 확장에서 클러스터를 마우스 오른쪽 단추로 클릭하고 Azure Portal 표시를 선택합니다.
    2. Azure 포털에서진단 설정모니터링> 진단 설정 >추가를 선택합니다.
    3. 진단 설정의 이름을 입력하고 스토리지 계정에 보관을 선택한 다음 스토리지 계정을 선택합니다.
    4. 사용하도록 설정할 로그를 선택한 다음 저장을 선택합니다.
  4. AKS 확장에서 클러스터를 마우스 오른쪽 단추로 클릭하고 AKS Periscope 실행을 선택합니다.
  5. 클러스터의 진단 설정에 둘 이상의 스토리지 계정이 있는 경우 결과를 저장할 계정을 선택합니다.
  6. 컬렉션이 완료되면 링크 생성 을 선택하여 다운로드 가능한 링크 또는 7일 후에 만료되는 공유 가능한 링크를 만듭니다. 결과에 모든 노드가 포함되지 않은 경우 나머지 업로드를 기다린 다음 링크 생성 을 다시 선택합니다.

자세한 내용은 Visual Studio Code AKS 도구 및 진단을 참조하세요.

Kustomize를 사용하여 Periscope 배포

Kubernetes 리소스를 검사하거나 재정의하거나, 특정 Periscope 릴리스를 선택하거나, 수집기를 사용자 지정해야 하는 경우 Kustomize를 사용합니다. 이 메서드를 사용하려면 스토리지 자격 증명 및 매니페스트를 직접 관리해야 합니다.

  1. Periscope 구성에 대한 디렉터리를 만든 다음 해당 디렉터리에 파일을 만듭니 kustomization.yaml 다.

  2. 다음 설정을 사용하여 계정 SAS를 만듭니다. 가장 짧은 실제 만료 시간을 사용합니다.

    • 서비스: Blob(ss=b).
    • 리소스 종류: 서비스, 컨테이너 및 개체(srt=sco).
    • 사용 권한: 읽기, 나열, 추가, 만들기 및 쓰기(sp=rlacw).
    • 허용되는 프로토콜: HTTPS에만 해당합니다.
  3. 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를 해지하거나 회전합니다.

  4. AKS 클러스터에 연결 kubectl 합니다.

    az aks get-credentials \
        --resource-group <resource-group-name> \
        --name <aks-cluster-name>
    
  5. Periscope를 배포합니다.

    kubectl apply -k <path-to-kustomize-directory>
    
  6. 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 클러스터에서 진단 로그를 수집해 줄래?"