簡體   English   中英

如何為基於Windows Server Smalldisk的VMSS或Service Fabric群集擴展OS磁盤?

[英]How can I extend OS disks for Windows Server smalldisk based VMSS or Service Fabric clusters?

當我們使用-smalldisk映像部署Service Fabric群集VMSS時,例如

ARM模板參數:

"vmImageOffer": {
  "value": "WindowsServerSemiAnnual"
},
"vmImageSku": {
  "value": "Datacenter-Core-1803-with-Containers-smalldisk"
},
"vmImageVersion": {
  "value": "1803.0.20180613"
}

ARM模板:

"storageProfile": {
  "imageReference": {
    "publisher": "[parameters('vmImagePublisher')]",
    "offer": "[parameters('vmImageOffer')]",
    "sku": "[parameters('vmImageSku')]",
    "version": "[parameters('vmImageVersion')]"
},

沒有足夠的空間(<30GB)來在SF群集上托管容器映像。

如何在部署時增加磁盤大小(使用ARM模板)?

向Service Fabric / VMSS ARM模板添加了3個參數:

...
"scriptLocation": {
  "type": "string",
  "metadata": {
    "description": "Location of custom extension scripts on storage account container"
  }
},
"scriptStorageAccount": {
  "type": "string",
  "metadata": {
    "description": "Name of custom extension scripts storage account"
  }
},
"scriptStorageAccountKey": {
  "type": "string",
  "metadata": {
    "description": "Key to custom extension scripts storage account"
  }
},
...

在上載自定義擴展腳本文件並調用New-AzureRmResourceGroupDeployment的PowerShell腳本中填充了這些參數。

...
$StorageAccountName = "mydeploymentstorage"
$StorageContainerName = "ext"
$ArtifactStagingDirectory = ".\ExtensionScripts"
...
# transfer Extension script to Storage    $StorageAccount = (Get-AzureRmStorageAccount | Where-Object{$_.StorageAccountName -eq $StorageAccountName})
$StorageAccountContext = $StorageAccount.Context
New-AzureStorageContainer -Name $StorageContainerName -Context $StorageAccountContext -Permission Container -ErrorAction SilentlyContinue *>&1
$ArtifactFilePaths = Get-ChildItem $ArtifactStagingDirectory -Recurse -File | ForEach-Object -Process {$_.FullName}
foreach ($SourcePath in $ArtifactFilePaths) {
    Write-Host "transfering" $SourcePath
    $BlobName = $SourcePath.Substring($SourcePath.LastIndexOf("\")+1)
    Set-AzureStorageBlobContent -File $SourcePath -Blob $BlobName -Container $StorageContainerName -Context $StorageAccountContext -Force -ErrorAction Stop
}

# prepare and pass script parameters
$DynamicParameters = New-Object -TypeName Hashtable
$DynamicParameters["scriptLocation"] = $StorageAccountContext.BlobEndPoint + $StorageContainerName
$DynamicParameters["scriptStorageAccount"] = $StorageAccountName
$DynamicParameters["scriptStorageAccountKey"] = ($StorageAccount | Get-AzureRmStorageAccountKey).Value[0]
...
# start deployment
New-AzureRmResourceGroupDeployment -Name ((Get-ChildItem $TemplateFile).BaseName + '-' + ((Get-Date).ToUniversalTime()).ToString('MMdd-HHmm')) ` `
    -ResourceGroupName $ResourceGroupName `
    -TemplateFile $TemplateFile `
    -TemplateParameterFile $TemplateParametersFile `
    @DynamicParameters `
    -Verbose

增加了storageProfile的磁盤大小:

...
      "storageProfile": {
        "imageReference": {
          "publisher": "[parameters('vmImagePublisher')]",
          "offer": "[parameters('vmImageOffer')]",
          "sku": "[parameters('vmImageSku')]",
          "version": "[parameters('vmImageVersion')]"
        },
        "osDisk": {
          "caching": "ReadWrite",
          "createOption": "FromImage",
          "diskSizeGB": 128,
          "managedDisk": {
            "storageAccountType": "[parameters('storageAccountType')]"
          }
        }
      }
...

在VMSS extensionProfile添加了自定義腳本extensionProfile

...
    "virtualMachineProfile": {
      "extensionProfile": {
        "extensions": [
...
          {
            "name": "[concat(parameters('vmNodeType0Name'),'_SetupNode')]",
            "properties": {
              "publisher": "Microsoft.Compute",
              "type": "CustomScriptExtension",
              "typeHandlerVersion": "1.9",
              "autoUpgradeMinorVersion": true,
              "settings": {
                "fileUris": [
                  "[concat(parameters('scriptLocation'),'/setupNode.ps1')]"
                ]
              },
              "protectedSettings": {
                "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File CreateDisk.ps1",
                "storageAccountName": "[parameters('scriptStorageAccount')]",
                "storageAccountKey": "[parameters('scriptStorageAccountKey')]"
              }
            }
          }
        ]
...

創建了腳本setupNode.PS1來調整OS磁盤分區的大小

# resize Partition
$size = (Get-PartitionSupportedSize -DiskNumber 0 -PartitionNumber 1) 
Resize-Partition -DiskNumber 0 -PartitionNumber 1 -Size $size.SizeMax 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM