Important
AKS 미리 보기 기능은 셀프 서비스에서 사용할 수 있습니다(옵트인 방식). 미리 보기는 "있는 그대로" 및 "사용 가능한 상태로" 제공되며 서비스 수준 계약 및 제한적 보증에서 제외됩니다. AKS 미리 보기의 일부는 고객 지원팀에서 최선을 다해 지원합니다. 따라서 이러한 기능은 프로덕션 용도로 사용할 수 없습니다. 자세한 내용은 다음 지원 문서를 참조하세요.
Flex 노드는 AKS(Azure Kubernetes Service) 클러스터를 클러스터의 Azure 관리 노드 풀 외부에서 관리하는 Linux 머신으로 확장합니다. flex 노드를 추가하기 전에 호스트가 Azure 인증하는 방법, Kubernetes API 서버에 도달하는 방법 및 AKS와 flex 노드 환경 간에 네트워크 트래픽이 이동하는 방식을 선택합니다.
이 문서는 이러한 결정을 내리고, 주소 범위를 오버오버하지 않는 계획을 세우고, 나머지 배포 문서에 대한 공유 환경 파일을 만드는 데 도움이 됩니다.
시작하기 전 주의 사항:
- AKS용 flex 노드 개요를 검토하세요.
- flex 노드에 대한 ID 및 액세스 개념을 검토합니다.
- flex 노드에 대한 네트워킹 개념을 검토합니다.
- 필요한 도구 및 네트워크 액세스 권한이 있는 Linux 호환 Bash 환경을 사용합니다. 이 배포 시리즈에서는 해당 환경을 Bash 환경이라고 합니다. 클러스터를 조인하는 별도의 컴퓨터는 flex 노드 호스트입니다.
- Azure CLI를 설치합니다. 설치되어 있는 버전을 확인하려면
az --version을 실행합니다. 설치하거나 업그레이드하려면 Azure CLI 설치를 참조하세요. - 대상 구독 및 가상 네트워크 구성을 읽을 수 있는 계정으로 Azure 로그인합니다.
- Azure 관리되는 AKS 노드에 대한 기존 Azure 가상 네트워크 및 서브넷을 준비합니다. 가상 네트워크는 AKS 클러스터와 다른 리소스 그룹에 있을 수 있습니다. 이 경우 AKS 클러스터 ID에 서브넷에 필요한 권한이 있는지 확인합니다.
배포 결정을 내리세요
리소스를 만들거나 구성하기 전에 다음 결정을 계획합니다.
| 의사 결정 | Options | 의사 결정이 제어하는 내용 |
|---|---|---|
| 호스트 ID | 관리 ID, Azure Arc 관리 ID 또는 서비스 주체 | flex 노드 에이전트가 Azure 인증하는 방법 |
| AKS API 액세스 | 공용 또는 프라이빗 AKS 클러스터 | Bash 환경 및 플렉스 노드 호스트가 Kubernetes API 서버를 확인하고 도달하는 방법 |
| Flex 노드 연결 | 계층 3 연결 또는 Unbounded-Net WireGuard 게이트웨이 | AKS 관리 노드, 플렉스 노드, Pod 및 Kubernetes 서비스가 통신하는 방법 |
이러한 결정은 배포의 여러 부분을 다룹니다. 예를 들어 공용 AKS API 엔드포인트를 선택하면 AKS 관리 노드와 flex 노드 호스트 간에 네트워크 연결이 생성되지 않습니다.
호스트 ID 선택
flex 노드에 대한 ID 및 액세스 개념의 의사 결정 테이블을 사용하여 flex 노드 에이전트가 사용하는 Azure ID를 선택합니다.
호스트 ID는 Azure 작업에 권한을 부여합니다. 호스트가 클러스터에 조인해야 하는 네트워크 연결 또는 Kubernetes 부트스트랩 구성을 대체하지는 않습니다. 공유 환경 파일에 자격 증명을 저장하지 마세요.
공용 또는 프라이빗 AKS API 액세스 선택
Kubernetes API 서버는 클러스터의 관리 엔드포인트입니다. Bash 환경과 각 flex 노드 호스트는 이 엔드포인트를 확인하고 연결할 수 있어야 합니다.
- 공용 AKS API 액세스 는 보안 공용 엔드포인트를 사용합니다. Kubernetes 인증 및 권한 부여는 여전히 클러스터에 대한 액세스를 제어합니다. 공용 API 엔드포인트는 클러스터에서 실행되는 애플리케이션을 노출하지 않습니다.
-
프라이빗 AKS API 액세스 는 AKS 가상 네트워크의 프라이빗 엔드포인트를 사용합니다. Bash 환경에서 Azure CLI
kubectl실행하고 클러스터 설치 명령을 실행합니다. 이 명령은 해당 프라이빗 네트워크에 연결된 컴퓨터에서 실행해야 합니다. 또한 flex 노드 네트워크는 클러스터의 프라이빗 DNS 이름을 확인하고 트래픽을 프라이빗 엔드포인트로 라우팅할 수 있어야 합니다.
Flex 노드 배포는 API 서버에 대한 공용 및 프라이빗 액세스를 모두 지원합니다. 프라이빗 경로에는 적용되는 위치에 호출된 추가 DNS, 라우팅 및 명령 실행 구성이 필요합니다. 일반적인 AKS 지침은 AKS에 대한 제어 평면 네트워킹 계획, 프라이빗 AKS 클러스터 만들기 및 프라이빗 AKS 클러스터에 연결을 참조하세요.
flex 노드 연결성을 선택하세요
이 배포 시리즈는 기본 제공 네트워크 플러그 인 없이 AKS 클러스터를 만들고 AKS 관리 노드와 flex 노드 모두에 Unbounded-Net 설치합니다. Unbounded-Net Pod 주소 범위를 할당하고 AKS와 flex 노드 환경 간의 라우팅을 구성합니다. 이 문서에서는 해당 워크플로에 대해 설명합니다. 다른 CNI 또는 네트워크 구성에는 다른 라우팅, 방화벽, DNS, 게이트웨이, 보안 및 수명 주기 구성이 필요할 수 있습니다. 공개 미리 보기 네트워킹 모델에 대한 설명은 flex 노드에 대한 네트워킹 개념을 참조하세요.
AKS와 flex 노드 환경 간에 기본 네트워크 연결을 제공합니다. 계층 3 연결은 두 노드 네트워크가 이미 양방향으로 서로의 노드 주소로 IP 패킷을 라우팅할 수 있음을 의미합니다. 기존 네트워크에 맞는 방법을 선택합니다.
| 연결 방법 | 사용 시기 |
|---|---|
| 가상 네트워크 피어링 | AKS 클러스터 및 flex 노드 호스트는 서로 다른 지역의 가상 네트워크를 포함하여 Azure 가상 네트워크에 있습니다. |
| VPN 게이트웨이 | flex 노드 호스트는 온-프레미스 환경 또는 암호화된 사이트 간 VPN을 통해 Azure 연결하는 다른 네트워크에 있습니다. |
| 익스프레스라우트 | 조직에서는 네트워크와 Azure 간의 전용 프라이빗 연결을 사용합니다. |
| Unbounded-Net WireGuard 게이트웨이 | AKS 및 flex 노드 네트워크에는 프라이빗 라우트된 연결이 없습니다. AKS 게이트웨이 노드 풀에서 WireGuard 터널을 구성하고 작동하며 이러한 게이트웨이 노드는 공개적으로 액세스할 수 있어야 합니다. 환경 간 Pod 트래픽은 이 풀에 의존하므로 게이트웨이 용량과 가용성을 계획하세요. Unbounded-Net WireGuard 랩이 있는 공용 AKS 클러스터를 참조하세요. |
Microsoft Learn 연습에서는 Unbounded-Net과 계층 3 연결을 사용합니다.
| AKS API | Flex 노드 연결 | 지침 |
|---|---|---|
| Public | 계층 3 연결 | 권장 구성 |
| 비공개 | 계층 3 연결 | 추가 DNS, 라우팅 및 명령 실행 구성 필요 |
| Public | 공용 WireGuard 게이트웨이 | 대체 토폴로지; AKSFlexNode 랩 참조 |
| 비공개 | 공용 WireGuard 게이트웨이 | 이 설명서에서 다루지 않음 |
메모
추가 토폴로지 예제는 WireGuard 게이트웨이가 있는 공용 AKS API 서버와 고객 관리 네트워킹이 있는 프라이빗 AKS API 서버를 사용하는 예제를 포함하여 AKSFlexNode 랩을 참조하세요. 이러한 랩은 이 문서에 설명된 구성을 보완합니다. 이러한 랩은 서로 다른 네트워킹 구성 요소를 사용하고 운영 또는 지원 책임이 다를 수 있습니다. 랩을 사용하기 전에 필수 구성 요소, 제한 사항, 적용 가능한 구성 요소 버전 및 고객 책임을 검토합니다. GitHub 랩은 Microsoft Learn에 설명된 지원 범위를 확장하지 않습니다.
표시되지 않는 토폴로지에 대한 피드백을 제공하려면 AKSFlexNode 리포지토리에서 문제를 엽니다. flex 노드 호스트 위치, AKS API 액세스 모델, 제안된 연결 방법, 제안된 CNI 및 시나리오에 필요한 네트워크 경로를 포함합니다.
필요한 네트워크 연결 계획
네트워크 관리자와 협력하여 네트워크 디자인이 다음과 같은 연결을 제공하는지 확인합니다.
| 요구 사항 | 필요한 이유 |
|---|---|
| Bash 환경은 AKS API 서버를 확인하고 연결할 수 있습니다. | 클러스터를 구성하고 관리하려면 이 연결이 필요합니다. |
| 각 플렉스 노드 호스트는 AKS API 서버를 확인하고 연결할 수 있습니다. | flex 노드 에이전트 및 kubelet은 이 연결을 사용하여 클러스터를 조인하고 Kubernetes 컨트롤 플레인과 통신합니다. |
| AKS 관리 노드 및 플렉스 노드 호스트는 서로의 개인 IP 주소에 연결할 수 있습니다. | 대부분의 연결 방법에서 Unbounded-Net 노드 네트워크를 두 환경 간의 기본 경로로 사용합니다. |
| Pod 및 Kubernetes 서비스 트래픽은 AKS 관리 노드와 flex 노드 간에 라우팅할 수 있습니다. | 워크로드에는 노드 간 통신, 클러스터 DNS 및 Kubernetes 서비스 액세스가 필요합니다. |
| AKS 컨트롤 플레인은 flex 노드에서 실행되는 kubelet에 연결할 수 있습니다. | AKS는 kubelet 작업에 이 경로(예kubectl logs: 및 kubectl execkubectl port-forward)를 사용합니다. |
라우팅, 가상 네트워크 피어링, VPN 또는 ExpressRoute 연결, 방화벽 및 네트워크 보안 그룹 규칙, DNS, 프록시 설정 및 이 시리즈에 설명된 Unbounded-Net 구성을 포함하여 외부 호스트 네트워크를 구성하고 운영합니다. 전체 책임 모델은 flex 노드에 대한 지원 정책을 참조하세요.
호스트 관리 액세스를 승인된 원본 주소로 제한합니다. Azure VM의 경우 네트워크 보안 그룹을 호스트 서브넷 또는 네트워크 인터페이스와 연결합니다. Azure 외부 호스트의 경우 해당하는 방화벽 컨트롤을 적용합니다.
az vm create를 사용하여 플렉스 노드 호스트를 만드는 경우, 명령에서 생성하는 모든 공용 IP 주소와 네트워크 보안 그룹 규칙을 검토하세요. SSH 규칙을 제한하지 않는 한 모든 공용 원본에서 TCP 포트 22에 대한 연결을 허용할 수 있습니다.
배포 값을 수집하기
나머지 문서에서는 다음 값을 다시 사용합니다.
일반적인 Azure 리소스 값
| Variable | Description | 사용되는 경우 |
|---|---|---|
SUBSCRIPTION_ID |
AKS 클러스터 및 관련 Azure 리소스를 포함하는 구독입니다. | 배포할 때마다 |
RESOURCE_GROUP |
AKS 클러스터를 포함하는 리소스 그룹입니다. | 배포할 때마다 |
CLUSTER_NAME |
AKS 클러스터의 이름입니다. | 배포할 때마다 |
FLEX_POOL_NAME |
flex 노드 풀의 이름입니다. 문자와 숫자만 사용합니다. | 배포할 때마다 |
AKS_API_ACCESS |
AKS 클러스터에 대한 API 액세스 모델입니다. 값을 설정합니다.publicprivate |
클러스터 준비 및 API 연결 유효성 검사 |
AKS_RESOURCE_ID |
AKS 클러스터의 Azure 리소스 ID. Azure 클러스터가 있는 후 이 값을 제공합니다. | 이후 문서 |
AKS 클러스터 및 가상 네트워크 값
| Variable | Description | 사용되는 경우 |
|---|---|---|
LOCATION |
AKS 클러스터의 Azure 지역입니다. 이 지역이 지역 가용성 요구 사항을 충족하는지 확인합니다. | AKS 클러스터 만들기 |
AKS_VNET_NAME |
AKS 서브넷을 포함하는 가상 네트워크의 이름입니다. | AKS 서브넷 찾기 및 유효성 검사 |
AKS_VNET_RESOURCE_GROUP |
AKS 가상 네트워크를 포함하는 리소스 그룹입니다.
RESOURCE_GROUP와 다를 수 있습니다. |
AKS 서브넷 찾기 및 유효성 검사 |
AKS_SUBNET_NAME |
Azure 관리되는 AKS 노드에서 사용하는 서브넷의 이름입니다. | AKS 서브넷 찾기 및 유효성 검사 |
AKS_SUBNET_ID |
AKS 서브넷의 Azure 리소스 ID | AKS 클러스터 만들기 |
AKS_NODE_VM_SIZE |
Azure에서 관리하는 AKS 시스템 노드 풀의 VM 크기 이 값은 flex 노드 호스트의 크기를 조정하지 않습니다. | AKS 클러스터 만들기 |
SERVICE_CIDR |
Kubernetes 서비스의 주소 범위입니다. | AKS 클러스터 네트워크 프로필 구성 |
DNS_SERVICE_IP |
Kubernetes DNS 서비스의 IP 주소입니다. | AKS 클러스터 네트워크 프로필 구성 |
환경 파일을 만들기 전에 AKS 서브넷 리소스 ID 및 주소 범위를 검색합니다.
az network vnet subnet show \
--resource-group '<virtual-network-resource-group>' \
--vnet-name '<virtual-network-name>' \
--name '<aks-subnet-name>' \
--query "{ResourceId:id,AddressPrefix:addressPrefix,AddressPrefixes:addressPrefixes}" \
--output json
AKS 및 Unbounded-Net 주소 값
AKS 클러스터 네트워크 프로필을 구성하려면 SERVICE_CIDR 및 DNS_SERVICE_IP을 사용합니다. 이 연습에서 사용하는 Unbounded-Net 사이트를 설정하도록 노드 및 Pod CIDR을 구성합니다.
AKS 노드, AKS Pod, flex 노드, flex Pod 및 Kubernetes 서비스 범위는 선택한 네트워크 디자인을 따라야 하며 가상 네트워크 피어링, VPN 또는 ExpressRoute를 통해 연결할 수 있는 네트워크 또는 서로 겹치지 않아야 합니다. 네트워크 관리자와 최종 값을 조정합니다.
다른 배포에서 예제 CIDR을 복사하지 마세요. CIDR은 라우팅 가능한 주소 공간을 식별하므로 Azure 또는 연결된 네트워크와 겹치는 예제를 다시 사용하면 트래픽이 모호해지거나 노드와 Pod가 서로 도달하지 못하게 할 수 있습니다.
| Variable | Description | 사용 대상 |
|---|---|---|
AKS_SUBNET_CIDR |
Azure 관리되는 AKS 노드에 대해 서브넷에 할당된 주소 범위입니다. | Azure 가상 네트워크 및 AKS 서브넷 유효성 검사 |
AKS_NODE_CIDR |
AKS 노드 서브넷을 포함하는 Unbounded-Net 사이트 노드 범위 | Unbounded-Net 주 클러스터 사이트 |
AKS_POD_CIDR |
Azure 관리되는 AKS 노드의 Pod에 대한 주소 풀입니다. | Unbounded-Net 주 클러스터 사이트 |
FLEX_HOST_SUBNET_CIDR |
flex 노드 호스트를 포함하는 주소 범위입니다. | Flex 노드 호스트 네트워크 유효성 검사 |
FLEX_NODE_CIDR |
Unbounded-Net flex 노드 호스트 서브넷을 포함하는 사이트 노드 범위. | 플렉스 노드용 Unbounded-Net 사이트 |
FLEX_POD_CIDR |
flex 노드의 Pod용 주소 풀입니다. | 플렉스 노드용 Unbounded-Net 사이트 |
SERVICE_CIDR |
Kubernetes 서비스의 주소 범위입니다. | AKS 클러스터 네트워크 프로필 |
DNS_SERVICE_IP |
Kubernetes DNS 서비스의 IP 주소입니다. | AKS 클러스터 네트워크 프로필 |
주소 계획에 다음 규칙을 적용합니다.
-
AKS_SUBNET_CIDR는AKS_NODE_CIDR내에 포함되어야 합니다. -
FLEX_HOST_SUBNET_CIDR는FLEX_NODE_CIDR내에 포함되어야 합니다. -
DNS_SERVICE_IP은(는)SERVICE_CIDR내부에 있어야 합니다.
이러한 8개 값은 8개의 개별 범위가 아닙니다. 5개는 겹치지 않아야 하는 독립적인 범위이고, 2개는 해당 사이트 노드 범위 내에 포함된 서브넷 범위이고, 하나는 서비스 범위 내의 단일 IP 주소입니다.
다음 값은 이 섹션의 모든 규칙을 충족합니다. 이를 기본값이 아닌 관계의 그림으로 처리합니다. 사용하기 전에 Azure 및 연결된 네트워크 주소 공간에 대해 고유한 값을 확인합니다.
| Variable | Example | Relationship |
|---|---|---|
AKS_NODE_CIDR |
10.10.0.0/16 |
독립 범위 |
AKS_SUBNET_CIDR |
10.10.1.0/24 |
AKS_NODE_CIDR에 포함됨 |
AKS_POD_CIDR |
10.244.0.0/16 |
독립 범위 |
FLEX_NODE_CIDR |
10.20.0.0/16 |
독립 범위 |
FLEX_HOST_SUBNET_CIDR |
10.20.1.0/24 |
FLEX_NODE_CIDR에 포함됨 |
FLEX_POD_CIDR |
10.245.0.0/16 |
독립 범위 |
SERVICE_CIDR |
10.96.0.0/16 |
독립 범위 |
DNS_SERVICE_IP |
10.96.0.10 |
내부 SERVICE_CIDR |
현재 Azure 가상 네트워크 주소 공간을 검토합니다.
az network vnet list \
--query "[].{ResourceGroup:resourceGroup,Name:name,AddressPrefixes:addressSpace.addressPrefixes}" \
--output table
Azure 관리하는 리소스 내에서 충돌을 식별할 수 있지만 연결된 모든 온-프레미스 또는 외부 네트워크의 주소 범위의 유효성을 검사할 수는 없습니다.
구성 요소 버전 값
Flex 노드에는 호환되는 버전의 AKS, Azure CLI 확장, Unbounded-Net 및 flex 노드 에이전트가 필요합니다. 이 문서에 나열된 버전을 사용하고 이러한 구성 요소를 독립적으로 선택하거나 업그레이드하지 마세요.
| Variable | Description |
|---|---|
AKS_VERSION |
AKS 클러스터에 대해 지원되는 Kubernetes 버전입니다. |
AKS_PREVIEW_VERSION |
aks-previewAzure CLI 확장 버전 22.0.0b8 이상 |
UNBOUNDED_VERSION |
지원되는 Unbounded-Net 버전입니다. |
AKS_FLEX_NODE_VERSION |
지원되는 flex 노드 에이전트 버전입니다. |
지역별 가용성
Flex 노드에는 클러스터를 호스트하는 지역에서 AKS 릴리스 v20260904 이상이 필요합니다. AKS는 이러한 날짜 기반 릴리스를 자동으로 적용하며, 사용자가 설정한 AKS_VERSIONKubernetes 버전과는 별개입니다.
클러스터를 만들거나 선택하기 전에 AKS 릴리스 추적기의 AKS 릴리스 탭을 열고 지역을 찾은 다음 현재 작동 중인 버전에서 버전을 확인합니다. AKS 릴리스 버전은 형식을 vYYYYMMDD 사용합니다. 지역에 이전 버전이 표시되면 릴리스가 지역에 도달할 때까지 기다리거나 배포 요구 사항이 허용되는 경우 필요한 릴리스를 사용할 수 있는 지역을 선택합니다.
로컬 작업 영역 값
| Variable | Description |
|---|---|
WORK_DIR |
나머지 아티클이 다운로드, 생성된 파일 및 클러스터 kubeconfig 파일을 저장하는 Bash 환경의 디렉터리입니다. 기본값은 ~/.local/share/aksflexnode/<deployment-name>입니다. 배포 후 제거한 임시 디렉터리 등 이러한 파일을 다른 곳에 유지하려면 환경 파일의 WORK_DIR 값을 변경합니다. |
공유 환경 파일 만들기
각 배포에 대해 하나의 환경 파일을 만듭니다. 파일은 나머지 아티클 및 터미널 세션에서 비보안 값을 일관되게 유지합니다.
액세스 토큰, 부트스트랩 데이터, kubeconfig 콘텐츠, 서비스 주체 자격 증명, 인증서, 인증서 프라이빗 키 또는 SSH 프라이빗 키를 이 파일에 저장하지 마세요.
짧은 배포 레이블을 선택하고 환경 파일에 대한 보호된 디렉터리를 만듭니다.
export FLEXNODE_DEPLOYMENT="flexnode-demo" export FLEXNODE_ENV_DIR="${HOME}/.config/aks-flexnode" export FLEXNODE_ENV_FILE="${FLEXNODE_ENV_DIR}/${FLEXNODE_DEPLOYMENT}.env" install -d -m 0700 "${FLEXNODE_ENV_DIR}"환경 파일을 만듭니다.
if [[ -e "${FLEXNODE_ENV_FILE}" ]]; then printf 'Environment file already exists: %s\n' "${FLEXNODE_ENV_FILE}" >&2 false else install -m 0600 /dev/null "${FLEXNODE_ENV_FILE}" cat > "${FLEXNODE_ENV_FILE}" <<'EOF' set_flexnode_env() { if [[ "$#" -ne 2 || ! "$1" =~ ^[A-Za-z_][A-Za-z0-9_]*$ ]]; then printf 'Usage: set_flexnode_env NAME VALUE\n' >&2 return 2 fi local name="$1" local value="$2" local temporary_file temporary_file="$(mktemp "$(dirname "${FLEXNODE_ENV_FILE}")/flexnode.env.XXXXXX")" || return 1 awk -v prefix="export ${name}=" 'index($0, prefix) != 1 { print }' \ "${FLEXNODE_ENV_FILE}" > "${temporary_file}" || { rm -f "${temporary_file}" return 1 } printf 'export %s=%q\n' "${name}" "${value}" >> "${temporary_file}" || { rm -f "${temporary_file}" return 1 } install -m 0600 "${temporary_file}" "${FLEXNODE_ENV_FILE}" || { rm -f "${temporary_file}" return 1 } rm -f "${temporary_file}" export "${name}=${value}" } # Customer inputs export SUBSCRIPTION_ID='<subscription-id>' export LOCATION='<supported-aks-region>' export RESOURCE_GROUP='<aks-resource-group>' export CLUSTER_NAME='<aks-cluster-name>' export FLEX_POOL_NAME='<flex-node-pool-name>' export AKS_API_ACCESS='<public-or-private>' # AKS virtual network export AKS_VNET_NAME='<virtual-network-name>' export AKS_VNET_RESOURCE_GROUP='<virtual-network-resource-group>' export AKS_SUBNET_NAME='<aks-subnet-name>' export AKS_SUBNET_ID='<aks-subnet-resource-id>' # Network address ranges export AKS_SUBNET_CIDR='<aks-node-subnet-cidr>' export AKS_POD_CIDR='<aks-pod-cidr>' export AKS_NODE_CIDR='<aks-site-node-cidr>' export FLEX_HOST_SUBNET_CIDR='<flex-host-subnet-cidr>' export FLEX_NODE_CIDR='<flex-site-node-cidr>' export FLEX_POD_CIDR='<flex-node-pod-cidr>' export SERVICE_CIDR='<kubernetes-service-cidr>' export DNS_SERVICE_IP='<kubernetes-dns-service-ip>' # Azure-managed AKS system node pool export AKS_NODE_VM_SIZE='<supported-and-available-aks-node-vm-size>' # Compatible component versions for flex nodes (preview) export AKS_VERSION='1.36.2' export AKS_PREVIEW_VERSION='22.0.0b8' export UNBOUNDED_VERSION='v0.8.0' export AKS_FLEX_NODE_VERSION='v0.2.0' # Local paths export WORK_DIR="${HOME}/.local/share/aksflexnode/${FLEXNODE_DEPLOYMENT}" # Values recorded by later articles export AKS_RESOURCE_ID='' export FLEXNODE_KUBECONFIG='' export FLEX_POOL_RESOURCE_ID='' export FLEX_MACHINE_NAME='' export FLEX_HOST_NAME='' export FLEX_HOST_SSH_TARGET='' export FLEX_HOST_PRIVATE_IP='' export HOST_PRINCIPAL_OBJECT_ID='' export HOST_IDENTITY_CLIENT_ID='' export SSH_PUBLIC_KEY_PATH='' export SSH_PRIVATE_KEY_PATH='' export VM_RESOURCE_GROUP='' export VM_NAME='' export VM_RESOURCE_ID='' export ARC_RESOURCE_GROUP='' export ARC_MACHINE_NAME='' export ARC_RESOURCE_ID='' export SP_TENANT_ID='' export SP_CLIENT_ID='' export SP_OBJECT_ID='' EOF fi도우미를
set_flexnode_env사용하면 나중에 문서에서 파일에 중복 정의를 추가하지 않고 Azure 생성된 값을 기록할 수 있습니다.편집기에서
${FLEXNODE_ENV_FILE}을(를) 열고 꺾쇠 괄호로 묶인 각 값을 바꿉니다. 이후 문서에서 기록한 값 아래에 값을 비워 둡니다.자리 표시자가 남아 있지 않은지 확인합니다.
if grep -n '<[^>]*>' "${FLEXNODE_ENV_FILE}"; then printf 'Replace the unresolved placeholders before you continue.\n' >&2 false else printf 'No unresolved placeholders found.\n' fi환경 파일을 로드하고, 작업 디렉터리를 만들고, 활성 Azure 구독을 설정합니다.
source "${FLEXNODE_ENV_FILE}" install -d -m 0700 "${WORK_DIR:?Load the deployment environment first.}" az account set --subscription "${SUBSCRIPTION_ID}" az account show \ --query "{Name:name,SubscriptionId:id}" \ --output table반환된 구독 ID가 일치하는지 확인합니다
SUBSCRIPTION_ID.AKS_API_ACCESS이(가) 지원되는 경로를 식별하는지 확인합니다:case "${AKS_API_ACCESS}" in public|private) printf 'AKS API access: %s\n' "${AKS_API_ACCESS}" ;; *) printf 'Set AKS_API_ACCESS to public or private.\n' >&2 false ;; esac배포 레이블을 설정하고 환경 파일을 로드하여 각 새 터미널 세션을 시작합니다.
export FLEXNODE_DEPLOYMENT="flexnode-demo" export FLEXNODE_ENV_FILE="${HOME}/.config/aks-flexnode/${FLEXNODE_DEPLOYMENT}.env" test -s "${FLEXNODE_ENV_FILE}" source "${FLEXNODE_ENV_FILE}" install -d -m 0700 "${WORK_DIR:?Load the deployment environment first.}"
계획 값의 유효성 검사
선택한 AKS 서브넷을 확인합니다.
az network vnet subnet show \
--resource-group "${AKS_VNET_RESOURCE_GROUP}" \
--vnet-name "${AKS_VNET_NAME}" \
--name "${AKS_SUBNET_NAME}" \
--query "{AddressPrefix:addressPrefix,AddressPrefixes:addressPrefixes,ResourceId:id}" \
--output json
반환된 리소스 ID 및 주소 범위가 일치하는지 AKS_SUBNET_ID 확인합니다 AKS_SUBNET_CIDR.
다음 단계
다음으로, 플렉스 노드용 AKS 클러스터를 준비합니다. 다음 문서에서는 공용 또는 프라이빗 AKS 클러스터를 만들고 클러스터 리소스 ID를 기록합니다.