독립 실행형 Windows Docker 호스트용 컨테이너 네트워킹 배포
Azure CNI 플러그 인은 독립 실행형 Docker 호스트와 Kubernetes 클러스터에 대해 컨테이너/Pod당 네트워킹을 사용하도록 설정합니다. 이 문서에서는 독립 실행형 Windows Docker 호스트에 대한 CNI 플러그 인을 설치하고 구성하는 방법을 알아봅니다.
필수 조건
- 활성 구독이 있는 Azure 계정. 체험 계정을 만듭니다.
가상 네트워크 및 Azure 베스천 호스트 만들기
다음 프로시저에서는 리소스 서브넷, Azure Bastion 서브넷 및 베스천 호스트가 포함된 가상 네트워크를 만듭니다.
포털에서 가상 네트워크를 검색하여 선택합니다.
가상 네트워크 페이지에서 + 만들기를 선택합니다.
가상 네트워크 만들기의 기본 사항 탭에서 다음 정보를 입력하거나 선택합니다.
설정 값 프로젝트 세부 정보 Subscription 구독을 선택합니다. Resource group 새로 만들기를 선택합니다.
이름으로 test-rg를 입력합니다.
확인을 선택합니다.인스턴스 세부 정보 Name vnet-1을 입력합니다. 지역 미국 동부 2를 선택합니다. 다음을 선택하여 보안 탭으로 이동합니다.
Azure Bastion 섹션에서 Azure Bastion 사용을 선택합니다.
Bastion은 브라우저를 사용하여 개인 IP 주소를 사용하여 SSH(보안 셸) 또는 RDP(원격 데스크톱 프로토콜)를 통해 가상 네트워크의 VM에 연결합니다. VM에는 공용 IP 주소, 클라이언트 소프트웨어 또는 특수 구성이 필요하지 않습니다. 자세한 내용은 Azure Bastion이란?을 참조하세요.
Azure Bastion에서 다음 정보를 입력하거나 선택합니다.
설정 값 Azure Bastion 호스트 이름 bastion을 입력합니다. Azure Bastion 공용 IP 주소 공용 IP 주소 만들기를 선택합니다.
이름에 public-ip-bastion을 입력합니다.
확인을 선택합니다.다음을 선택하여 IP 주소 탭으로 이동합니다.
서브넷의 주소 공간 입력란에서 기본 서브넷을 선택합니다.
서브넷 편집에서 다음 정보를 입력하거나 선택합니다.
설정 값 서브넷 목적 기본값인 기본값을 그대로 둡니다. 속성 subnet-1을 입력합니다. IPv4 IPv4 주소 범위 기본값인 10.0.0.0/16은 그대로 둡니다. 시작 주소 기본값인 10.0.0.0을 그대로 둡니다. 크기 기본값인 /24(256개 주소)를 그대로 둡니다. 저장을 선택합니다.
창 하단에서 검토 + 만들기를 선택합니다. 유효성 검사를 통과하면 만들기를 선택합니다.
네트워크 및 Bastion 호스트를 배포하는 데 몇 분 정도 걸릴 수 있습니다. 배포가 완료되거나 가상 네트워크 만들기가 완료되면 다음 단계를 계속 진행합니다.
테스트 가상 머신 만들기
다음 절차에서는 가상 네트워크에 vm-1이라는 테스트 VM(가상 머신)을 만듭니다.
포털에서 가상 머신을 검색하여 선택합니다.
가상 머신에서 + 만들기를 선택한 다음, +Azure 가상 머신을 선택합니다.
가상 머신 만들기의 기본 탭에서 다음 정보를 입력하거나 선택합니다.
설정 값 프로젝트 세부 정보 Subscription 구독을 선택합니다. Resource group test-rg를 선택합니다. 인스턴스 세부 정보 가상 머신 이름 vm-1을 입력합니다. 지역 미국 동부 2를 선택합니다. 가용성 옵션 인프라 중복이 필요하지 않습니다.를 선택합니다. 보안 유형 기본값인 표준을 그대로 둡니다. 이미지 Windows Server 2022 Datacente - x64 Gen2를 선택합니다. VM 아키텍처 x64(기본값)를 그대로 둡니다. 크기 크기를 선택합니다. 관리자 계정 인증 유형 암호를 선택합니다. 사용자 이름 azureuser를 입력합니다. 암호 암호를 입력합니다. 암호 확인 암호를 다시 입력합니다. 인바운드 포트 규칙 공용 인바운드 포트 없음을 선택합니다. 페이지 위쪽에 있는 네트워킹 탭을 선택합니다.
네트워킹 탭에서 다음 정보를 입력하거나 선택합니다.
설정 값 네트워크 인터페이스 가상 네트워크 vnet-1을 선택합니다. 서브넷 subnet-1(10.0.0.0/24)을 선택합니다. 공용 IP 없음을 선택합니다. NIC 네트워크 보안 그룹 추가 고급을 선택합니다. 네트워크 보안 그룹 구성 새로 만들기를 선택합니다.
이름으로 nsg-1을 입력합니다.
나머지는 기본값으로 두고 확인을 선택합니다.나머지 설정은 기본값으로 두고 검토 + 만들기를 선택합니다.
설정을 검토하고 생성를 선택합니다.
참고 항목
베스천 호스트가 있는 가상 네트워크의 가상 머신에는 공용 IP 주소가 필요하지 않습니다. Bastion은 공용 IP를 제공하고 VM은 개인 IP를 사용하여 네트워크 내에서 통신합니다. 베스천 호스트된 가상 네트워크의 모든 VM에서 공용 IP를 제거할 수 있습니다. 자세한 내용은 Azure VM에서 공용 IP 주소 연결 해제를 참조하세요.
참고 항목
Azure는 공용 IP 주소가 할당되지 않았거나 내부 기본 Azure Load Balancer의 백 엔드 풀에 있는 VM에 대한 기본 아웃바운드 액세스 IP를 제공합니다. 기본 아웃바운드 액세스 IP 메커니즘은 구성할 수 없는 아웃바운드 IP 주소를 제공합니다.
다음 이벤트 중 하나가 발생하면 기본 아웃바운드 액세스 IP가 사용하지 않도록 설정됩니다.
- 공용 IP 주소가 VM에 할당됩니다.
- VM은 아웃바운드 규칙 유무에 관계없이 표준 Load Balancer의 백 엔드 풀에 배치됩니다.
- Azure NAT Gateway 리소스는 VM의 서브넷에 할당됩니다.
유연한 오케스트레이션 모드에서 가상 머신 확장 집합을 사용하여 만드는 VM에는 기본 아웃바운드 액세스 권한이 없습니다.
Azure의 아웃바운드 연결에 대한 자세한 내용은 Azure의 기본 아웃바운드 액세스 및 아웃바운드 연결에 SNAT(원본 네트워크 주소 변환) 사용을 참조하세요.
IP 구성 추가
Azure CNI 플러그 인은 가상 머신의 가상 네트워크 인터페이스에서 만든 IP 주소 풀을 기반으로 컨테이너에 IP 주소를 할당합니다. 호스트의 모든 컨테이너에 대해 가상 네트워크 인터페이스에 IP 구성이 있어야 합니다. 서버의 컨테이너 수가 가상 네트워크 인터페이스의 IP 구성보다 많은 경우 컨테이너가 시작되지만 IP 주소는 없습니다.
이 섹션에서는 이전에 만든 가상 머신의 가상 네트워크 인터페이스에 IP 구성을 추가합니다.
포털 맨 위에 있는 검색 상자에 가상 머신을 입력합니다. 검색 결과에서 가상 머신을 선택합니다.
vm-1을 선택합니다.
설정에서 네트워킹을 선택합니다.
네트워크 인터페이스 옆에 있는 네트워크 인터페이스 이름을 선택합니다. 네트워크 인터페이스의 이름은 난수로 vm-1입니다.
네트워크 인터페이스의 설정에서 IP 구성을 선택합니다.
IP 구성의 이름에서 ipconfig1을 선택합니다.
ipconfig1 설정에서 개인 IP 주소의 할당을 동적에서 정적으로 변경합니다.
저장을 선택합니다.
IP 구성으로 돌아갑니다.
+ 추가를 선택합니다.
IP 구성 추가에서 다음 정보를 입력하거나 선택합니다.
설정 값 속성 ipconfig-2를 입력합니다. 개인 IP 주소 설정 할당 고정을 선택합니다. IP 주소 '10.0.0.5'를 입력합니다. 확인을 선택합니다.
ipconfig2가 보조 IP 구성으로 추가되었는지 확인합니다.
1~13단계를 반복하여 컨테이너 호스트에 배포하려는 컨테이너만큼 많은 구성을 추가합니다.
Windows에서 IP 주소 구성
Windows 가상 머신에 여러 IP 주소를 할당하려면 Windows의 네트워크 인터페이스에 IP 주소를 추가해야 합니다. 이 섹션에서는 가상 머신에 로그인하고 이전 섹션에서 만든 IP 구성을 설정합니다.
포털 맨 위에 있는 검색 상자에 가상 머신을 입력합니다. 검색 결과에서 가상 머신을 선택합니다.
vm-1을 선택합니다.
vm-1의 개요에서 연결을 선택한 다음, Bastion을 선택합니다.
이전 단계에서 가상 머신을 배포할 때 만든 사용자 이름과 암호를 입력합니다.
연결을 선택합니다.
가상 머신에서 네트워크 연결 구성을 엽니다. 시작 ->실행을 선택하고
ncpa.cpl
를 입력합니다.확인을 선택합니다.
가상 머신의 네트워크 인터페이스를 선택한 다음, 속성을 선택합니다.
이더넷 속성에서 인터넷 프로토콜 버전 4(TCP/IPv4)를 선택한 다음, 속성을 선택합니다.
일반 탭에서 다음 정보를 입력하거나 선택합니다.
설정 값 다음 IP 주소 사용을 선택합니다. IP 주소: 10.0.0.4를 입력합니다. 서브넷 마스크: 255.255.255.0 입력 기본 게이트웨이 10.0.0.1을 입력합니다. 다음 DNS 서버 주소 사용을 선택합니다. 기본 설정 DNS 서버: 168.63.129.16을 입력합니다. 이 IP는 기본 Azure DNS에 대한 DHCP 할당 IP 주소입니다. 고급...을 선택합니다.
IP 주소에서 추가...를 선택합니다.
다음 정보를 입력하거나 선택합니다.
설정 값 TCP/IP 주소 IP 주소: 10.0.0.5를 입력합니다. 서브넷 마스크: 255.255.255.0 입력 추가를 선택합니다.
이전에 만든 추가 IP 구성에 해당하는 IP 주소를 더 추가하려면 추가를 선택합니다.
확인을 선택합니다.
확인을 선택합니다.
확인을 선택합니다.
네트워크 구성이 적용되면 Bastion 연결이 몇 초 동안 끊어집니다. 몇 초 정도 기다린 다음, 다시 연결을 시도합니다. 성공적으로 다시 연결되면 계속합니다.
Docker 설치
이전에 만든 가상 머신에 Docker 컨테이너 엔진을 설치하고 구성해야 합니다.
가상 네트워크를 사용하여 배포한 Azure Bastion 호스트를 사용하여 이전에 만든 가상 머신에 로그인합니다.
포털 맨 위에 있는 검색 상자에 가상 머신을 입력합니다. 검색 결과에서 가상 머신을 선택합니다.
vm-1을 선택합니다.
vm-1의 개요에서 연결을 선택한 다음, Bastion을 선택합니다.
이전 단계에서 가상 머신을 배포할 때 만든 사용자 이름과 암호를 입력합니다.
연결을 선택합니다.
vm-1에서 Windows PowerShell을 엽니다.
다음 예제에서는 Docker CE/Moby를 설치합니다.
Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/Windows-Containers/Main/helpful_tools/Install-DockerCE/install-docker-ce.ps1" -o install-docker-ce.ps1 .\install-docker-ce.ps1
가상 머신이 다시 부팅되어 Windows에 컨테이너 지원을 설치합니다. 가상 머신에 다시 연결하면 Docker 설치가 계속됩니다.
Windows 컨테이너에 대한 자세한 내용은 시작: 컨테이너용 Windows 준비를 참조하세요.
가상 머신에 Docker를 설치한 후 이 문서의 단계를 계속 진행합니다.
CNI 플러그 인 및 jq 설치
Azure CNI 플러그 인은 GitHub 프로젝트로 유지 관리되며 프로젝트의 GitHub 페이지에서 다운로드할 수 있습니다. 이 문서에서는 가상 머신 내에서 CNI 플러그 인 리포지토리를 다운로드한 다음, 플러그 인을 설치하고 구성합니다.
Azure CNI 플러그 인에 대한 자세한 내용은 Microsoft Azure Container Networking을 참조하세요.
포털 맨 위에 있는 검색 상자에 가상 머신을 입력합니다. 검색 결과에서 가상 머신을 선택합니다.
vm-1을 선택합니다.
vm-1의 개요에서 연결을 선택한 다음, Bastion을 선택합니다.
이전 단계에서 가상 머신을 배포할 때 만든 사용자 이름과 암호를 입력합니다.
연결을 선택합니다.
다음 예제를 사용하여 가상 머신의 임시 폴더에 CNI 플러그 인을 다운로드하고 추출합니다.
Invoke-WebRequest -Uri https://github.com/Azure/azure-container-networking/archive/refs/heads/master.zip -OutFile azure-container-networking.zip Expand-Archive azure-container-networking.zip -DestinationPath azure-container-networking
CNI 플러그 인을 설치하려면 이전 단계에서 다운로드한 CNI 플러그 인 폴더의 스크립트 디렉터리로 변경합니다. 설치 스크립트 명령에는 CNI 플러그 인에 대한 버전 번호가 필요합니다. 이 문서를 작성할 때 최신 버전은
v1.4.39
입니다. 플러그 인 또는 이전 버전의 최신 버전 번호를 가져오려면 릴리스를 참조하세요.cd .\azure-container-networking\azure-container-networking-master\scripts\ .\Install-CniPlugin.ps1 v1.4.39
CNI 플러그 인에는 플러그 인에 대한 기본 제공 네트워크 구성 파일이 함께 제공됩니다. 다음 예제를 사용하여 파일을 네트워크 구성 디렉터리에 복사합니다.
Copy-Item -Path "c:\k\azurecni\bin\10-azure.conflist" -Destination "c:\k\azurecni\netconf"
jq 설치
Azure CNI 플러그 인을 사용하여 컨테이너를 만드는 스크립트에는 애플리케이션 jq가 필요합니다. 자세한 내용 및 다운로드 위치는 jq 다운로드를 참조하세요.
가상 머신에서 웹 브라우저를 열고 jq 애플리케이션을 다운로드합니다.
다운로드는 애플리케이션에 대한 자체 포함 실행 파일입니다. 실행 파일
jq-win64.exe
를C:\Windows
디렉터리에 복사합니다.
테스트 컨테이너 만들기
CNI 플러그 인을 사용하여 컨테이너를 시작하려면 플러그 인과 함께 제공되는 특수 스크립트를 사용하여 컨테이너를 만들고 시작해야 합니다. 다음 예제에서는 CNI 플러그 인 스크립트를 사용하여 Windows Server 컨테이너를 만듭니다.
cd .\azure-container-networking\azure-container-networking-master\scripts\ .\docker-exec.ps1 vnetdocker1 default mcr.microsoft.com/windows/servercore/iis add
컨테이너의 이미지를 처음 다운로드하는 데 몇 분 정도 걸릴 수 있습니다. 컨테이너가 네트워크를 시작하고 초기화하면 Bastion 연결이 끊어집니다. 몇 초 정도 기다리면 연결이 다시 설정됩니다.
컨테이너가 이전에 구성한 IP 주소를 받았는지 확인하려면 컨테이너에 연결하고 IP를 확인합니다.
docker exec -it vnetdocker1 powershell
다음 예제의
ipconfig
명령을 사용하여 IP 주소가 컨테이너에 할당되었는지 확인합니다.ipconfig
컨테이너를 종료하고 vm-1에 대한 Bastion 연결을 닫습니다.
만든 리소스 사용을 마치면 리소스 그룹과 해당 리소스를 모두 삭제할 수 있습니다.
Azure Portal에서 리소스 그룹을 검색하고 선택합니다.
리소스 그룹 페이지에서 test-rg 리소스 그룹을 선택합니다.
test-rg 페이지에서 리소스 그룹 삭제를 선택합니다.
삭제 확인을 위한 리소스 그룹 이름 입력에 test-rg를 입력한 다음 삭제를 선택합니다.
다음 단계
이 문서에서는 Azure CNI 플러그 인을 설치하고 테스트 컨테이너를 만드는 방법을 알아보았습니다.
Azure 컨테이너 네트워킹과 Azure Kubernetes 서비스에 대한 자세한 내용은 다음을 참조하세요.