빠른 시작: Azure Stack HCI에서 Azure Kubernetes Service 호스트 설정 및 PowerShell을 사용하여 워크로드 클러스터 배포

적용 대상: Azure Stack HCI, 버전 21H2 및 20H2; Windows Server 2022 Datacenter, Windows Server 2019 Datacenter

이 빠른 시작에서는 AKS(Azure Kubernetes Service) 호스트에 대한 설정을 알아봅니다. PowerShell을 사용하여 Azure Stack HCI 클러스터에 AKS를 만듭니다. 대신 Windows Admin Center 사용하려면 Windows Admin Center 사용하여 설정을 참조하세요.

참고

시작하기 전에

  • 시스템 요구 사항 페이지의 모든 필수 구성 요소를 충족했는지 확인합니다.
  • Azure 계정을 사용하여 청구를 위해 AKS 호스트를 등록합니다. 자세한 내용은 Azure 요구 사항을 참조하세요.
  • Azure Stack HCI의 AKS에 사용하는 Azure 구독에 대한 다음 액세스 수준 중 하나 이상이 있는지 확인합니다.
    • 기본 제공 소유자 역할이 있는 사용자 계정입니다. 구독으로 이동하여 Azure Portal 왼쪽에 있는 "액세스 제어(IAM)"를 클릭한 다음 "내 액세스 보기"를 클릭하여 액세스 수준을 확인할 수 있습니다.
    • 기본 제공 Kubernetes 클러스터 - Azure Arc 온보딩 역할(최소), 기본 제공 기여자 역할 또는 기본 제공 소유자 역할이 있는 서비스 주체입니다.
    • 구독은 위에서 언급한 구독에서 등록 전에 사용할 수 있는 오스트레일리아 동부, 미국 동부, 동남 아시아 또는 서유럽 Azure 지역에 Azure 리소스 그룹을 지정해야 합니다.
  • 다음 중 하나 이상을 사용합니다.
    • Azure Stack HCI 클러스터
    • Windows Server 2019/2022 Datacenter 장애 조치(failover) 클러스터

    참고

    Azure Stack HCI 클러스터를 사용하는 것이 좋습니다. 위의 항목이 없는 경우 Azure Stack HCI 등록 페이지의 지침을 따르세요.

AksHci PowerShell 모듈 설치

AksHci PowerShell 모듈을 설치하지 않은 경우 다음 명령을 실행하여 모듈을 설치합니다.

중요

기존 PowerShell 창을 모두 닫고 새 관리 세션을 열어 필수 PowerShell 패키지 및 모듈을 설치해야 합니다.

Install-Module -Name Az.Accounts -Repository PSGallery -RequiredVersion 2.2.4
Install-Module -Name Az.Resources -Repository PSGallery -RequiredVersion 3.2.0
Install-Module -Name AzureAD -Repository PSGallery -RequiredVersion 2.0.2.128
Install-Module -Name AksHci -Repository PSGallery
Import-Module Az.Accounts
Import-Module Az.Resources
Import-Module AzureAD
Import-Module AksHci

원격 PowerShell을 사용하는 경우 CredSSP를 사용해야 합니다.

중요

로드된 모듈이 새로 고쳐지도록 기존 PowerShell 창을 모두 다시 닫아야 합니다. 모든 PowerShell 창을 닫을 때까지 다음 단계로 계속 진행하지 마세요.

설치의 유효성을 검사합니다.

중요

모든 PowerShell 창을 닫 고 새 관리 세션을 다시 열어 최신 버전의 PowerShell 모듈이 있는지 확인합니다.

Get-Command -Module AksHci

AksHci PowerShell 명령의 전체 목록을 보려면 AksHci PowerShell을 참조하세요.

Azure Stack HCI 클러스터의 모든 노드에서

Azure Stack HCI 클러스터의 모든 노드에서 다음 명령을 실행합니다.

Install-PackageProvider -Name NuGet -Force 
Install-Module -Name PowershellGet -Force -Confirm:$false -SkipPublisherCheck

Azure Stack HCI 클러스터의 모든 노드에서 다음 명령을 실행하여 AKS-HCI PowerShell 모듈을 설치합니다.

Install-Module -Name AksHci -Repository PSGallery

구독에 리소스 공급자 등록

등록 프로세스 전에 Azure Stack HCI 등록의 AKS에 대해 Azure에서 적절한 리소스 공급자를 사용하도록 설정해야 합니다. 이렇게 하려면 다음 PowerShell 명령을 실행합니다.

Azure에 로그인하려면 커넥트-AzAccount PowerShell 명령을 실행합니다.

Connect-AzAccount

다른 구독으로 전환하려면 Set-AzContext PowerShell 명령을 실행합니다.

Set-AzContext -Subscription "xxxx-xxxx-xxxx-xxxx"

다음 명령을 실행하여 Azure Arc 지원 Kubernetes 리소스 공급자에 Azure 구독을 등록합니다. 이 등록 프로세스는 최대 10분이 걸릴 수 있지만 특정 구독에서 한 번만 수행해야 합니다.

Register-AzResourceProvider -ProviderNamespace Microsoft.Kubernetes
Register-AzResourceProvider -ProviderNamespace Microsoft.KubernetesConfiguration

등록 프로세스의 유효성을 검사하려면 다음 PowerShell 명령을 실행합니다.

Get-AzResourceProvider -ProviderNamespace Microsoft.Kubernetes
Get-AzResourceProvider -ProviderNamespace Microsoft.KubernetesConfiguration

1단계: 배포를 위해 머신 준비

모든 물리적 노드에서 검사를 실행하여 Azure Stack HCI에 AKS를 설치하기 위해 모든 요구 사항이 충족되는지 확인합니다. 관리자 권한으로 PowerShell을 열고 다음 Initialize-AksHciNode 명령을 실행합니다. Azure Stack HCI 클러스터의 모든 노드에서 다음 명령을 실행합니다.

Initialize-AksHciNode

2단계: 가상 네트워크 만들기

Azure Stack HCI 클러스터의 한 노드에서 2단계에서 다음 명령을 실행합니다.

사용 가능한 스위치의 이름을 얻으려면 다음 명령을 실행합니다. VM 스위치가 SwitchType "외부"인지 확인합니다.

Get-VMSwitch

예제 출력:

Name        SwitchType     NetAdapterInterfaceDescription
----        ----------     ------------------------------
extSwitch   External       Mellanox ConnectX-3 Pro Ethernet Adapter

배포에서 사용할 노드에 대한 가상 네트워크를 만들려면 New-AksHciNetworkSetting PowerShell 명령을 사용하여 환경 변수를 만듭니다. 나중에 고정 IP를 사용하는 배포를 구성하는 데 사용됩니다. DHCP를 사용하여 AKS 배포를 구성하려면 New-AksHciNetworkSetting 을 참조하세요. 일부 네트워킹 노드 개념을 검토할 수도 있습니다.

#static IP
$vnet = New-AksHciNetworkSetting -name myvnet -vSwitchName "extSwitch" -k8sNodeIpPoolStart "172.16.10.1" -k8sNodeIpPoolEnd "172.16.10.255" -vipPoolStart "172.16.255.0" -vipPoolEnd "172.16.255.254" -ipAddressPrefix "172.16.0.0/16" -gateway "172.16.0.1" -dnsServers "172.16.0.1" -vlanId 9

참고

이 예제 명령에 지정된 값은 사용자 환경에 맞게 사용자 지정해야 합니다.

3단계: 배포 구성

Azure Stack HCI 클러스터의 한 노드에서 3단계에서 다음 명령을 실행합니다.

AKS 호스트에 대한 구성 설정을 만들려면 Set-AksHciConfig 명령을 사용합니다. 및 workingDircloudConfigLocation 매개 변수를 imageDir지정해야 합니다. 구성 세부 정보를 다시 설정하려면 새 매개 변수를 사용하여 명령을 다시 실행합니다.

다음 명령을 사용하여 배포를 구성합니다.

Set-AksHciConfig -imageDir c:\clusterstorage\volume1\Images -workingDir c:\ClusterStorage\Volume1\ImageStore -cloudConfigLocation c:\clusterstorage\volume1\Config -vnet $vnet -cloudservicecidr "172.16.10.10/16"

참고

이 예제 명령에 지정된 값은 사용자 환경에 맞게 사용자 지정해야 합니다.

4단계: Azure에 로그인하고 등록 설정 구성

구독 및 리소스 그룹 이름으로 다음 Set-AksHciRegistration PowerShell 명령을 실행하여 Azure에 로그인합니다. 계속하려면 Azure 구독과 오스트레일리아 동부, 미국 동부, 동남 아시아 또는 서유럽 Azure 지역에 기존 Azure 리소스 그룹이 있어야 합니다.

Set-AksHciRegistration -subscriptionId "<subscriptionId>" -resourceGroupName "<resourceGroupName>"

5단계: 새 배포 시작

Azure Stack HCI 클러스터의 한 노드에서 5단계에서 다음 명령을 실행합니다.

배포를 구성한 후 Azure Stack HCI 에이전트/서비스 및 AKS 호스트에 AKS를 설치하려면 먼저 시작해야 합니다. 배포를 시작하려면 다음 명령을 실행합니다.

설치하는 동안 추가 상태 세부 정보를 보려면 계속하기 전에 설정합니다 $VerbosePreference = "Continue" .

Install-AksHci

경고

Azure Kuberenetes 서비스 호스트를 설치하는 동안 등록 중에 설정된 리소스 그룹에 Kubernetes - Azure Arc 리소스 종류가 만들어집니다. 이 리소스는 Azure Kuberenetes 서비스 호스트를 나타내기 때문에 삭제하지 마세요. 해당 배포 필드에 값 aks_management이 있는지 확인하여 리소스를 식별할 수 있습니다. 이 리소스를 삭제하면 정책 외 배포가 발생합니다.

6단계: Kubernetes 클러스터 만들기

AKS 호스트를 설치한 후 Kubernetes 클러스터를 배포할 준비가 된 것입니다. 관리자 권한으로 PowerShell을 열고 다음 New-AksHciCluster 명령을 실행합니다. 이 예제 명령은 노드 수가 1인 Linuxnodepool이라는 하나의 Linux 노드 풀이 있는 새 Kubernetes 클러스터를 만듭니다. 노드 풀에 대한 자세한 내용을 보려면 Azure Stack HCI의 AKS에서 노드 풀 사용을 방문하세요.

New-AksHciCluster -name mycluster -nodePoolName linuxnodepool -nodeCount 1 -osType Linux

배포된 클러스터 확인

배포된 Kubernetes 클러스터 목록을 얻으려면 다음 Get-AksHciCluster PowerShell 명령을 실행합니다.

Get-AksHciCluster

출력

ProvisioningState     : provisioned
KubernetesVersion     : v1.20.7
NodePools             : linuxnodepool
WindowsNodeCount      : 0
LinuxNodeCount        : 0
ControlPlaneNodeCount : 1
Name                  : mycluster

클러스터의 노드 풀 목록을 얻으려면 다음 Get-AksHciNodePool PowerShell 명령을 실행합니다.

Get-AksHciNodePool -clusterName mycluster
ClusterName  : mycluster
NodePoolName : linuxnodepool
Version      : v1.20.7
OsType       : Linux
NodeCount    : 1
VmSize       : Standard_K8S3_v1
Phase        : Deployed

7단계: 클러스터를 Arc 지원 Kubernetes에 커넥트

Enable-AksHciArcConnection 명령을 실행하여 클러스터를 Arc 지원 Kubernetes에 커넥트. 아래 예제에서는 명령에서 전달한 구독 및 리소스 그룹 세부 정보를 사용하여 Azure Stack HCI 클러스터의 AKS를 Arc에 Set-AksHciRegistration 연결합니다.

Connect-AzAccount
Enable-AksHciArcConnection -name mycluster

참고

설치 프로세스 중에 문제 또는 오류 메시지가 발생하는 경우 자세한 내용은 알려진 설치 문제 및 오류를 참조하세요.

Kubernetes 클러스터 크기 조정

클러스터를 확장 또는 축소해야 하는 경우 Set-AksHciCluster 명령을 사용하여 컨트롤 플레인 노드 수를 변경하고 Set-AksHciNodePool 명령을 사용하여 노드 풀의 Linux 또는 Windows 작업자 노드 수를 변경할 수 있습니다.

컨트롤 플레인 노드의 크기를 조정하려면 다음 명령을 실행합니다.

Set-AksHciCluster -name mycluster -controlPlaneNodeCount 3

노드 풀에서 작업자 노드의 크기를 조정하려면 다음 명령을 실행합니다.

Set-AksHciNodePool -clusterName mycluster -name linuxnodepool -count 3

참고

Azure Stack HCI의 이전 버전의 AKS에서 Set-AksHciCluster 명령은 작업자 노드 크기를 조정하는 데도 사용되었습니다. Azure Stack HCI의 AKS는 현재 워크로드 클러스터에 노드 풀을 도입하고 있으므로 이 명령은 New-AksHciCluster에 설정된 이전 매개 변수를 사용하여 클러스터를 만든 경우에만 작업자 노드의 크기를 조정하는 데 사용할 수 있습니다. 노드 풀에서 작업자 노드의 크기를 조정하려면 Set-AksHciNodePool 명령을 사용합니다.

kubectl을 사용하여 클러스터에 액세스

kubectl을 사용하여 Kubernetes 클러스터에 액세스하려면 Get-AksHciCredential PowerShell 명령을 실행합니다. 지정된 클러스터의 kubeconfig 파일을 kubectl의 기본 kubeconfig 파일로 사용합니다. kubectl을 사용하여 Helm을 사용하여 애플리케이션을 배포할 수도 있습니다.

Get-AksHciCredential -name mycluster

Kubernetes 클러스터 삭제

Kubernetes 클러스터를 삭제해야 하는 경우 다음 명령을 실행합니다.

Remove-AksHciCluster -name mycluster

참고

Hyper-V 관리자에서 기존 VM을 확인하여 클러스터가 삭제되었는지 확인합니다. 삭제되지 않은 경우 VM을 수동으로 삭제할 수 있습니다. 그런 다음 명령을 실행합니다 Restart-Service wssdagent. 장애 조치(failover) 클러스터의 각 노드에서 이 작업을 수행해야 합니다.

로그 가져오기

모든 Pod에서 로그를 얻으려면 Get-AksHciLogs 명령을 실행합니다. 이 명령은 작업 디렉터리에 호출 akshcilogs.zip 된 출력 압축 폴더를 만듭니다. 폴더의 akshcilogs.zip 전체 경로는 아래 명령을 실행한 후 출력됩니다.

Get-AksHciLogs

이 빠른 시작에서는 PowerShell을 사용하여 AKS 호스트를 설정하고 Azure Stack HCI 클러스터에서 AKS를 만드는 방법을 알아보았습니다. 또한 PowerShell을 사용하여 Kubernetes 클러스터의 크기를 조정하고 .를 사용하여 클러스터에 kubectl액세스하는 방법도 알아보았습니다.

다음 단계