다음을 통해 공유


Chaos Mesh 오류를 사용하여 Azure Portal에서 AKS Pod를 종료하는 카오스 실험 만들기

카오스 실험을 사용하여 제어된 환경에서 이러한 오류를 발생시켜 애플리케이션이 오류에 대해 복원력이 있는지 확인할 수 있습니다. 이 문서에서는 카오스 실험 및 Azure Chaos Studio를 사용하여 네임스페이스에서 주기적인 AKS(Azure Kubernetes Service) Pod 오류를 발생시킵니다. 이 실험을 실행하면 산발적인 오류가 있을 때 서비스를 사용하지 못하게 되는 일을 방지할 수 있습니다.

Chaos Studio는 Kubernetes용 무료 오픈 소스 카오스 엔지니어링 플랫폼인 Chaos Mesh를 사용하여 AKS 클러스터에 오류를 주입합니다. Chaos Mesh 오류는 AKS 클러스터에 Chaos Mesh를 설치해야 하는 서비스 직접 오류입니다. 이와 동일한 단계를 사용하여 AKS Chaos Mesh 오류에 대한 실험을 설정하고 실행할 수 있습니다.

필수 구성 요소

제한 사항

AKS 클러스터에서 Chaos Mesh 설정

Chaos Studio에서 Chaos Mesh 오류를 실행하려면 먼저 AKS 클러스터에 Chaos Mesh를 설치해야 합니다.

  1. 활성 구독이 AKS 클러스터가 배포된 구독으로 설정된 Azure Cloud Shell 창에서 다음 명령을 실행합니다. MyManagedClusterMyResourceGroup을 클러스터 및 리소스 그룹의 이름으로 바꿉니다.

    az aks get-credentials --admin --name MyManagedCluster --resource-group MyResourceGroup
    
    helm repo add chaos-mesh https://charts.chaos-mesh.org
    helm repo update
    kubectl create ns chaos-testing
    helm install chaos-mesh chaos-mesh/chaos-mesh --namespace=chaos-testing --set chaosDaemon.runtime=containerd --set chaosDaemon.socketPath=/run/containerd/containerd.sock
    
  2. 다음 명령을 실행하여 Chaos Mesh Pod가 설치되어 있는지 확인합니다.

    kubectl get po -n chaos-testing
    

    다음 예제와 유사한 출력이 표시됩니다(chaos-controller-manager 및 하나 이상의 chaos-daemons).

    NAME                                        READY   STATUS    RESTARTS   AGE
    chaos-controller-manager-69fd5c46c8-xlqpc   1/1     Running   0          2d5h
    chaos-daemon-jb8xh                          1/1     Running   0          2d5h
    chaos-dashboard-98c4c5f97-tx5ds             1/1     Running   0          2d5h
    

Chaos Mesh 웹 사이트의 설치 지침을 사용할 수도 있습니다.

AKS 클러스터에서 Chaos Studio 사용

Chaos Studio는 리소스가 먼저 Chaos Studio에 추가되지 않는 한 리소스에 대해 오류를 주입할 수 없습니다. 리소스에 대상과 기능을 만들어 리소스를 Chaos Studio에 추가합니다. AKS 클러스터에는 하나의 대상 유형(서비스 직접)만 있지만 다른 리소스에는 최대 두 개의 대상 유형이 있을 수 있습니다. 한 가지 대상 유형은 서비스 직접 오류에 대한 것입니다. 또 다른 대상 유형은 에이전트 기반 오류에 대한 것입니다. 각 유형의 Chaos Mesh 오류는 PodChaos, NetworkChaos 및 IOChaos와 같은 기능으로 표시됩니다.

  1. Azure Portal을 엽니다.

  2. 검색 창에서 Chaos Studio를 검색합니다.

  3. 대상을 선택하고 AKS 클러스터로 이동합니다.

    Azure Portal의 대상 보기를 보여 주는 스크린샷.

  4. AKS 클러스터 옆에 있는 확인란을 선택합니다. 대상 사용을 선택한 다음, 드롭다운 메뉴에서 서비스 직접 대상 사용을 선택합니다.

    Azure Portal에서 대상 사용하도록 설정을 보여 주는 스크린샷.

  5. 원하는 리소스가 나열되어 있는지 확인합니다. 검토 + 사용을 선택한 다음, 사용을 선택합니다.

  6. 선택한 리소스가 성공적으로 사용하도록 설정되었음을 나타내는 알림이 나타납니다.

    대상이 성공적으로 사용하도록 설정되었음을 표시하는 알림을 보여 주는 스크린샷.

이제 AKS 클러스터를 Chaos Studio에 성공적으로 추가했습니다. 대상 보기에서 이 리소스에 대해 사용하도록 설정된 기능을 관리할 수도 있습니다. 리소스 옆에 있는 작업 관리 링크를 선택하여 해당 리소스에 대해 사용하도록 설정된 기능을 표시합니다.

실험 만들기

이제 실험을 만들 수 있습니다. 카오스 실험은 대상 리소스에 대해 수행하려는 작업을 정의합니다. 작업은 순차적 단계로 구성되고 실행됩니다. 카오스 실험은 병렬로 실행되는 분기에 대해 수행하려는 작업도 정의합니다.

  1. Chaos Studio에서 실험 탭을 선택합니다. 이 보기에서는 모든 카오스 실험을 보고 관리할 수 있습니다. 만들기>새 실험을 선택합니다.

    Azure Portal의 실험 보기를 보여 주는 스크린샷.

  2. 카오스 실험을 배포하려는 구독, 리소스 그룹위치를 입력합니다. 실험에 이름을 지정합니다. 다음: 실험 디자이너를 선택합니다.

    기본 실험 세부 정보 추가를 보여 주는 스크린샷.

  3. 이제 Chaos Studio 실험 디자이너에 있습니다. 실험 디자이너를 사용하면 단계, 분기 및 오류를 추가하여 실험을 빌드할 수 있습니다. 단계분기에 식별 이름을 지정한 다음, 작업 추가 > 오류 추가를 선택합니다.

    실험 디자이너를 보여 주는 스크린샷.

  4. 드롭다운 목록에서 AKS Chaos Mesh Pod Chaos를 선택합니다. 기간에 오류가 지속되기를 원하는 시간(분)을 입력하고 jsonSpec에 다음 정보를 입력합니다.

    Chaos Mesh jsonSpec을 공식화하려면 다음을 수행합니다.

    1. 오류 형식(예: PodChaos 형식)은 Chaos Mesh 설명서를 참조하세요.

    2. Chaos Mesh 설명서를 사용하여 해당 오류 형식에 대한 YAML 구성을 수식화합니다.

      apiVersion: chaos-mesh.org/v1alpha1
      kind: PodChaos
      metadata:
        name: pod-failure-example
        namespace: chaos-testing
      spec:
        action: pod-failure
        mode: all
        duration: '600s'
        selector:
          namespaces:
            - default
      
    3. spec 외부의 YAML(사양 속성 이름 포함)을 제거하고 사양 세부 정보의 들여쓰기를 제거합니다. duration 매개 변수는 필요하지 않지만 제공된 경우 사용됩니다. 이 경우 제거합니다.

      action: pod-failure
      mode: all
      selector:
        namespaces:
          - default
      
    4. 이와 같은 YAML-JSON 변환기를 사용하여 Chaos Mesh YAML을 JSON으로 변환하고 최소화합니다.

      {"action":"pod-failure","mode":"all","selector":{"namespaces":["default"]}}
      
    5. 최소화된 JSON을 포털의 jsonSpec 필드에 붙여넣습니다.

  5. 다음: 대상 리소스를 선택합니다.

    오류 속성을 보여 주는 스크린샷.

  6. AKS 클러스터를 선택하고 다음을 선택합니다.

    대상 추가를 보여 주는 스크린샷.

  7. 실험이 올바른지 확인한 다음, 검토 + 만들기>만들기를 차례로 클릭합니다.

    실험 검토 및 만들기를 보여 주는 스크린샷.

AKS 클러스터에 실험 권한 부여

카오스 실험을 만들 때 Chaos Studio는 대상 리소스에 대해 오류를 실행하는 시스템이 할당한 관리 ID를 만듭니다. 실험을 성공적으로 실행하려면 이 ID에 대상 리소스에 대한 적절한 권한을 부여해야 합니다.

  1. AKS 클러스터로 이동하여 액세스 제어(IAM)를 선택합니다.

    AKS 개요 페이지를 보여 주는 스크린샷.

  2. 추가>역할 할당 추가를 선택합니다.

    액세스 제어(IAM) 개요를 보여 주는 스크린샷.

  3. Azure Kubernetes Service 클러스터 관리 역할을 검색하고 역할을 선택합니다. 다음을 선택합니다.

    AKS 클러스터 관리자 역할 할당을 보여 주는 스크린샷.

  4. 멤버 선택을 선택하고 실험 이름을 검색합니다. 실험을 선택하고 선택을 선택합니다. 이름이 같은 여러 실험이 동일한 테넌트에 있는 경우 실험 이름은 임의 문자가 추가되어 잘립니다.

    역할에 실험을 추가하는 것을 보여 주는 스크린샷.

  5. 검토 + 할당>검토 + 할당을 선택합니다.

실험 실행

이제 실험을 실행할 준비가 되었습니다. 영향을 확인하려면 AKS 클러스터 개요를 열고 별도의 브라우저 탭에서 Insights로 이동하는 것이 좋습니다. 활성 Pod 수에 대한 라이브 데이터는 실험 실행의 효과를 보여 줍니다.

  1. 실험 보기에서 실험을 선택합니다. 시작>확인을 선택합니다.

    실험 시작을 보여 주는 스크린샷.

  2. 상태실행 중으로 변경되면 기록에서 최신 실행에 대한 세부 정보를 선택하여 실행 중인 실험에 대한 세부 정보를 확인합니다.

다음 단계

이제 AKS Chaos Mesh 서비스 직접 실험을 실행했으므로 다음을 수행할 준비가 되었습니다.