AKS(Azure Managed Kubernetes)에서 모든 컴퓨팅 중지
나는 Azure에 관리되는 Kubernetes 클러스터를 만들었지만, 이 클러스터는 학습 목적으로만 사용하기 때문에 실제로 사용하는 동안만 컴퓨팅 비용을 지불하고 싶다.
VM, 가용성 세트 및 로드 밸런서를 정상적으로 종료하고 시작하는 쉬운 방법이 있습니까?
모든 AKS 리소스 중 VM만 비용이 듭니다(VHD도 마찬가지입니다만, 이러한 리소스를 중단할 수는 없습니다). 그래서 당신은 그것들만 처리하면 됩니다. 편집: 퍼블릭 Ips도 비용이 들지만, 당신은 그것들을 막을 수 없다.
AKS 클러스터의 경우 포털을 사용하고 stop\deallocate 명령을 실행합니다. 그리고 필요할 때 다시 시작하십시오(모든 것이 잘 작동하는 것 같습니다).
REST API\powershell\cli\다양한 SKD를 사용하여 자동화된 방식으로 동일한 결과를 얻을 수 있습니다.
다음 작업을 수행할 수 있습니다:
az aks stop --name myAksCluster --resource-group myResourceGroup
그리고 그것을 다시 시작하라
az aks start --name myAksCluster --resource-group myResourceGroup
이 기능 이전에는 Powershell을 통해 가상 시스템을 중지할 수 있었습니다:
az vm deallocate --ids $(az vm list -g MC_my_resourcegroup_westeurope --query "[].id" -o tsv)
VM을 포함하는 리소스 그룹의 이름으로 대체합니다.
VM을 다시 시작하려면 다음을 실행합니다:
az vm start --ids $(az vm list -g MC_my_resourcegroup_westeurope --query "[].id" -o tsv)
AKS 클러스터에서 속성으로 이동하여 리소스 그룹 이름을 찾습니다. 리소스 그룹을 검색하면 리소스 그룹을 선택하면 가상 시스템이 나열됩니다. 각 가상 시스템에 대해 작업 > 자동 종료 옵션을 선택하고 전원을 켭니다. 이렇게 하면 VM을 사용할 수 없게 되어 개발하지 않을 때 비용을 절약할 수 있습니다! 다시 켜려면 이전 답변 또는 답변에 대한 조언을 따라야 합니다
위의 방법()은 더 이상 작동하지 않는 것 같습니다.
먼저 VM 스케일 세트를 나열하고 이를 사용하여 할당 해제/시작함으로써 해결됩니다:
$ResourceGroup = "MyResourceGroup"
$ClusterName = "MyAKSCluster"
$Location = "westeurope"
$vmssResourceGroup="MC_${ResourceGroup}_${ClusterName}_${Location}"
# List all VM scale sets
$vmssNames=(az vmss list --resource-group $vmssResourceGroup --query "[].id" -o tsv | Split-Path -Leaf)
# Deallocate first instance for each VM scale set
$vmssNames | ForEach-Object { az vmss deallocate --resource-group $vmssResourceGroup --name $_ --instance-ids 0}
# Start first instance for each VM scale set
$vmssNames | ForEach-Object { az vmss start --resource-group $vmssResourceGroup --name $_ --instance-ids 0}
AKS에 방금 추가된 새로운 기능이 있습니다:
AKS Stop/Start 클러스터 기능은 공개 미리 보기에서 AKS 고객이 AKS 클러스터를 완전히 일시 중지하고 버튼 스위치를 통해 나중에 중단한 위치에서 픽업할 수 있으므로 시간과 비용을 절약할 수 있습니다. 이전에는 고객이 클러스터를 중지하거나 시작하기 위해 여러 단계를 수행해야 했기 때문에 운영 시간이 늘어나고 컴퓨팅 리소스가 낭비되었습니다. Stop/Start 기능은 클러스터 구성을 그대로 유지하며, 고객은 클러스터를 재구성하지 않고도 중단했던 부분을 선택할 수 있습니다.
https://learn.microsoft.com/en-gb/azure/aks/start-stop-cluster
예, 이렇게 할 수 있습니다. 가능하면 자동화를 통해 하룻밤 사이에 낮은 환경 클러스터를 해제할 수 있으며 주말에는 비용이 많이 절감됩니다.
다음은 Azure Pipeline을 사용하여 매주 오전 7시 및 오후 7시에 클러스터를 껐다가 켜는 예입니다.
pool:
vmImage: ubuntu-22.04
pr: none
trigger: none
schedules:
- cron: '0 07,19 * * 1,2,3,4,5' # run on weekdays only at 7AM & 7PM.
displayName: Weekday Start & Stop AKS
branches:
include:
- main
always: true
variables:
- name: serviceConnection
value: <SERVICE CONNECTION>
- name: aksResourceGroup
value: <AKS RESOURCE GROUP>
- name: aksCluster
value: <AKS CLUSTER NAME>
jobs:
- job: StartStopAKS
displayName: Start/Stop AKS
steps:
- task: AzureCLI@2
displayName: Get AKS Power Status
inputs:
azureSubscription: ${{ variables.serviceConnection }}
scriptType: pscore
scriptLocation: inlineScript
inlineScript: |
$aksResourceGroup = "$(aksResourceGroup)"
$aksCluster = "$(aksCluster)"
$status = $(az aks show --resource-group $aksResourceGroup --name $aksCluster --query agentPoolProfiles[0].powerState.code -o tsv)
Write-Host "##[warning]AKS Cluster $aksCluster is $status"
Write-Host "##vso[task.setvariable variable=aksStatus;]$status"
- task: AzureCLI@2
displayName: Power On/Off AKS
inputs:
azureSubscription: ${{ variables.serviceConnection }}
scriptType: pscore
scriptLocation: inlineScript
inlineScript: |
$aksResourceGroup = "$(aksResourceGroup)"
$aksCluster = "$(aksCluster)"
$status = "$(aksStatus)"
if ($status -eq "Stopped") {
Write-Host "##[warning]Cluster Status is $status, Starting Cluster..."
az aks start --resource-group $aksResourceGroup --name $aksCluster --verbose
}
else {
echo "##[warning]Cluster Status is $status, Stopping Cluster..."
az aks stop --resource-group $aksResourceGroup --name $aksCluster --verbose
}
참조:
'개발하자' 카테고리의 다른 글
파이썬 스크립트의 테라폼 출력 (0) | 2023.04.28 |
---|---|
Kubernetes 및 JVM 메모리 설정 (0) | 2023.04.27 |
URL을 경로 매개 변수로 Fast에 전달하는 방법API 경로? (1) | 2023.04.26 |
Conda env의 주피터 서버에서 러스트 커널에 연결할 수 없음 (0) | 2023.04.26 |
ModuleNotFoundError: 'fastapi'라는 이름의 모듈이 없습니다 (0) | 2023.04.25 |