다음을 통해 공유


CLI를 사용하여 Azure Stack Hub에서 Azure Kubernetes Service 사용

Azure Stack Hub에서 AKS(Azure Kubernetes Service) 서비스를 사용하기 시작하기 위한 가이드입니다. 이 문서에서는 Azure Stack Hub의 AKS에 익숙해지도록 하는 기본 시나리오 집합에 대해 설명합니다. Azure Stack Hub에서 사용할 수 있는 기능은 전역 Azure에서 사용할 수 있는 기능의 하위 집합 입니다.

다음 섹션에서는 다음을 수행합니다.

  1. Azure Stack Hub에서 AKS를 사용하기 위한 필수 구성 요소를 완료합니다.
  2. Azure CLI 및 Azure Stack Hub 사용자 포털을 사용하여 AKS 클러스터의 수명 주기 작업을 완료합니다.

Azure CLI 설치

머신에 대한 AKS 지원을 사용하여 Azure CLI를 설치해야 합니다. AKS 지원을 사용하여 Azure CLI의 미리 보기 버전을 설치하기 위해 클린 컴퓨터 Linux 또는 Windows 머신을 준비합니다. 다음에 설치할 Azure CLI의 미리 보기와 충돌하지 않도록 컴퓨터에 Azure CLI가 설치되어 있지 않은지 확인합니다. 아래 지침의 대부분은 Linux VM을 사용한다고 가정하지만 제품 설명서에서 Windows에서 해당 단계를 찾을 수 있습니다.

AKS 지원을 사용하여 Azure CLI를 설치한 후에는 Azure CLI를 업그레이드하지 마세요. 업그레이드를 수행하면 AKS 지원이 없는 프로덕션 준비 버전으로 대체됩니다.

Ubuntu 컴퓨터의 경우 Linux에 Azure CLI 설치의 지침을 따릅니다.

AKS 지원을 사용하여 Azure CLI를 설치한 후 다음 Azure CLI 명령을 실행하여 설치가 올바른지 확인합니다.

    az --version

Linux 컴퓨터의 출력은 다음과 같습니다.

Linux 컴퓨터의 출력

Azure CLI는 2.28.0 이상이어야 합니다.

Azure Stack Hub에 연결

  1. Azure Stack Hub 엔드포인트에 연결합니다. Azure CLI를 사용하여 연결하려는 특정 Azure Stack Hub 환경을 설정해야 합니다. Azure Stack Hub에 연결에서 지침을 찾을 수 있습니다.

  2. Azure CLI가 instance 대한 Azure Stack Hub Resource Manager 엔드포인트에 연결할 수 있도록 환경을 등록합니다. 다음 코드 조각에서 URL을 업데이트하고 다음 명령을 실행합니다.

    az cloud register \
        -n aks-preview-test \
        --endpoint-resource-manager "https://management.redmond.xbx.nxn.microsoft.com" \
        --suffix-storage-endpoint "redmond.xbx.nxn.microsoft.com" \
        --suffix-keyvault-dns ".vault.redmond.xbx.nxn.microsoft.com"
    
  3. 활성 환경을 설정합니다.

    az cloud set -n aks-preview-test
    
  4. 환경 구성을 업데이트합니다.

    az cloud update --profile 2020-09-01-hybrid
    
  5. 환경에 연결합니다.

    az login -u 'user@contoso.onmicrosoft.com' -p 'xxxxxxx' --tenant 'contoso.onmicrosoft.com'
    

    참고

    인증서 확인 실패 오류를 트리거하는 경우 Azure Resource Manager 엔드포인트에 사용되는 인증서가 클라이언트 컴퓨터에서 신뢰할 수 없는 것일 수 있습니다. 그렇다면 Azure Stack Hub 엔드포인트에서 사용되는 인증서를 내보내고 신뢰해야 합니다. Azure Stack Hub CA 루트 인증서 내보내기에서 지침을 찾을 수 있습니다.

    특히 Linux 컴퓨터의 경우 Linux의 Microsoft Entra ID를 참조하세요.

  6. Azure CLI 세션의 구독을 다음을 사용하여 기본값으로 설정합니다.

    az account set --subscription <subscription-id>
    
  7. Azure Kubernetes Service 리소스 공급자를 등록합니다. 구독에서 사용 가능한 리소스 공급자를 나열합니다.

    az provider list --query "[].{Provider:namespace, Status:registrationState}" --out table
    

    출력은 다음과 같습니다.

    출력은 다음과 같습니다.

  8. Microsoft.ContainerService 리소스 공급자를 기록한 다음 공급자를 등록합니다.

    az provider register --namespace Microsoft.ContainerService
    
  9. 7단계를 다시 실행하여 리소스 공급자 등록 상태 확인합니다. 등록을 완료하는 데 몇 분 정도 걸릴 수 있습니다.

이러한 필수 구성 요소 단계가 완료되면 다음 시나리오를 계속 테스트할 수 있습니다.

AKS 클러스터 만들기

Azure CLI를 사용하여 Azure Kubernetes Service 클러스터 배포에서 전역 Azure 지침을 찾을 수 있습니다. 이 지침은 Azure Stack Hub에서 AKS를 사용하는 제한 사항을 반영합니다. Azure CLI를 사용하여 Linux 또는 Windows 컨테이너용 AKS 클러스터를 만들 수 있습니다.

  1. 리소스 그룹 만들기:

    az group create --name myResourceGroup --location <Azure Stack Hub location>
    
  2. 구독에 클러스터를 만들 수 있는 기여자 권한이 있는 서비스 주체 ID가 준비되어 있는지 확인합니다.

    1. Microsoft Entra ID를 사용하여 SPN(서비스 주체)을 만들려면 다음 지침을 따릅니다.
    2. AD FS(Active Directory Federated Services)를 사용하여 SPN을 만들려면 다음 지침을 따릅니다.
    3. SPN에 "기여자" 역할을 할당하려면 지침을 참조하세요. "기여자" 역할을 선택해야 합니다.
  3. 세 개의 에이전트 노드로 구성된 AKS 클러스터를 만듭니다. 아래 매개 변수에 값을 입력합니다. 예제가 제공됩니다. 다음을 실행합니다.

    az aks create \
    --resource-group myResourceGroup \
    --name myakscluster \
    --dns-name-prefix myakscluster \
    --nodepool-name mynodepool \
    --admin-username azureuser \
    --service-principal xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --node-count 3 \
    --generate-ssh-keys \
    --load-balancer-sku basic \
    --vm-set-type VirtualMachineScaleSets \
    --location <Azure Stack Hub location> \
    --kubernetes-version 1.20.7
    

    이 작업의 출력은 json 형식이며 다른 속성 중에서 클러스터에 사용되는 FQDN(정규화된 도메인 이름)에서 생성된 ssh 공개 키를 포함하여 클러스터의 사양을 포함합니다. 명령은 프라이빗 키 SSH key files '/home/azureuser/.ssh/id_rsa' 의 위치를 강조 표시하는 텍스트와 같은 텍스트를 출력하고 '/home/azureuser/.ssh/id_rsa.pub' VM에 대한 SSH 액세스를 허용하기 위해 아래에 \~/.ssh 생성됩니다. 문제를 해결할 때처럼 VM에 ssh해야 하는 경우에 사용할 안전한 위치에 이러한 키를 저장합니다.

  4. 이제 확장, 앱 배포삭제에 대한 테스트를 반복할 수 있습니다.

클러스터에 연결

  1. Kubernetes 클러스터를 관리하려면 kubectl Kubernetes 명령줄 클라이언트를 사용합니다. kubectl을 로컬로 설치하려면 az aks install-cli 명령을 사용합니다(설치 권한이 있는 경우 te에서 'sudo'를 사용해야 할 수 있음).

    az aks install-cli
    
  2. Kubernetes 클러스터에 연결하도록 kubectl 을 구성하려면 명령을 사용합니다 az aks get-credentials . 이 명령은 자격 증명을 다운로드하고 Kubernetes CLI가 해당 자격 증명을 사용하도록 구성합니다.

    az aks get-credentials --resource-group myResourceGroup --name myakscluster --admin
    
  3. 클러스터에 대한 연결을 확인하려면 kubectl get 명령을 사용하여 클러스터 노드 목록을 반환합니다.

    kubectl get nodes
    

클러스터에 대한 연결 확인

클러스터 크기 조정

또 다른 클러스터 관리 작업은 클러스터 크기를 조정하는 것입니다. az aks scale 명령을 사용하여 클러스터를 만든 후 언제든지 크기를 조정할 수 있습니다. 초기 3개 노드에서 4로 클러스터 크기를 조정하려면 다음을 실행합니다.

    az aks scale --resource-group myResourceGroup --name myakscluster --node-count 4

클러스터의 크기가 성공적으로 조정되면 출력에는 다음 예제와 유사한 "agentPoolProfiles"가 포함됩니다.

    "agentPoolProfiles": [
        {
        "availabilityZones": null,
        "count": 4,
        "enableAutoScaling": null,
        "enableNodePublicIp": false,
        "maxCount": null,
        "maxPods": 110,
        "minCount": null,
        "mode": "System",
        "name": "mynodepool",
        "nodeLabels": {},
        "nodeTaints": null,
        "orchestratorVersion": "1.20.7",
        "osDiskSizeGb": 100,
        "osType": "Linux",
        "provisioningState": "Succeeded",
        "scaleSetEvictionPolicy": null,
        "scaleSetPriority": null,
        "spotMaxPrice": null,
        "tags": null,
        "type": "VirtualMachineScaleSets",
        "vmSize": " Standard_DS2_v2",
        "vnetSubnetId": null
        }
    ]

클러스터 삭제

이전 작업이 수행되면 클러스터 삭제를 계속할 수 있습니다. 다음을 실행합니다.

az aks delete --name myakscluster --resource-group myResourceGroup

사용자 지정 VNET을 사용하여 AKS 클러스터 만들기

사용자가 제공한 네트워크에 배포할 클러스터를 만드는 것이 일반적인 시나리오입니다. 네트워크 구성을 계획하려면 몇 가지 준비가 필요합니다. 또한 AKS를 사용하는 경우 AKS 엔진의 경우처럼 기본 네트워크 플러그 인은 Kubenet이 아닌 Azure CNI입니다. Azure CNI를 사용하면 모든 Pod가 서브넷에서 IP 주소를 가져오고 직접 액세스할 수 있습니다(Kubenet의 경우처럼 라우팅 테이블이 필요 없음). 이러한 IP 주소는 네트워크 공간에서 고유해야 하며 계획해야 합니다. 다음 문서에서는 사용자 지정 VNET 배포를 계획하는 프로세스를 안내합니다. 요구 사항에 맞는 다양한 네트워크 구성을 찾아 테스트할 수 있습니다. 초기 테스트의 경우 다음 두 단계로 기본 프로세스가 표시됩니다.

  1. 이 문서의 지침에 따라 Azure CNI를 사용하여 배포를 계획합니다. 예를 들어 포털을 사용하여 "myTest-rg"라는 리소스 그룹에서 서브넷 "myAKSSubnet" 및 IP 범위 10.240.0.0/16이 있는 IP 범위가 10.0.0.0/8인 "myAKSVnet"이라는 VNet을 만들 수 있습니다. 그런 다음 클러스터를 만들기 위한 다음 단계를 사용합니다.

    az network vnet create \
        --resource-group myTest-rg \
        --name myAKSVnet \
        --address-prefixes 10.0.0.0/8 \
        --subnet-name myAKSSubnet \
        --subnet-prefix 10.240.0.0/16    
    
  2. Azure 문서에 제공된 클러스터 명령은 Azure에 배포할 때 제대로 작동합니다. Azure Stack Hub에 배포하려면 다음 예제와 같이 추가 매개 변수를 지정해야 합니다. vnet 서브넷 ID는 '/subscriptions/dfdfdff-5dfdf-dfdf-dfdf-dfdfdfdfdfd/resourceGroups/myTest-rg/providers/Microsoft.Network/virtualNetworks/myAKSVnet/subnets/myAKSSubnet'과 같이 표시됩니다.

    az aks create  \ 
    --resource-group myTest-rg \
    --name aksvnet \
    --dns-name-prefix  aksvnet \
    --nodepool-name mynodepool \
    --admin-username azureuser \
    --service-principal xvxvxvxvx-ffff-ffff-xvxvxvx-8xbxbxbx8  \
    --client-secret dccbcbcbcbcbcbcbcbbcbcbcbcbcbcbc-LNX \
    --node-count 3 \
    --generate-ssh-keys \
    --load-balancer-sku basic \
    --vm-set-type VirtualMachineScaleSets \
    --network-plugin azure \
    --vnet-subnet-id '<subnet-resource-id>' \
    --skip-subnet-role-assignment \
    --docker-bridge-address 172.17.0.1/16 \
    --dns-service-ip 10.0.0.10 \
    --location redmond
    
  3. "클러스터에 연결" 섹션의 지침에 따라 Kubernetes 클러스터에 연결하고 애플리케이션을 배포합니다.

일관성 확인

Azure와 Azure Stack Hub 간의 일관성 검사

  1. 위에서 테스트한 명령, 아래의 "명령 참조" 섹션 또는 사용자 고유의 일상적인 스크립트에서 명령 조합을 선택합니다.
  2. Azure에 적용하고 나중에 Azure Stack Hub에 적용합니다. 불일치가 예상되지 않음을 확인하고 피드백을 제공합니다.

다음 단계

Azure Stack Hub의 AKS에 대해 알아보기