如何通过 Azure 模板将额外的磁盘添加到 AKS 节点?
How can additional disks be added to AKS nodes via azure template?
启动 AKS 集群时,我的每个节点在 /dev/sdb
处都有一个主磁盘,在 /dev/sda
处有一个较小的临时磁盘。如何将显示为 /dev/sdc
的附加未格式化磁盘附加到模板中的每个 AKS 节点。我当前的模板如下:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"resourceGroupName": {
"type": "string",
"metadata": {
"description": "The resource group name."
}
},
"subscriptionId": {
"type": "string",
"metadata": {
"description": "The subscription id."
}
},
"region": {
"type": "string",
"metadata": {
"description": "The region of AKS resource."
}
},
"gbPerNode": {
"type": "int",
"defaultValue": 20,
"metadata": {
"description": "Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize."
},
"minValue": 1,
"maxValue": 1023
},
"numNodes": {
"type": "int",
"defaultValue": 3,
"metadata": {
"description": "The number of agent nodes for the cluster."
},
"minValue": 1,
"maxValue": 50
},
"machineType": {
"type": "string",
"defaultValue": "Standard_D2_v2",
"metadata": {
"description": "The size of the Virtual Machine."
}
},
"servicePrincipalClientId": {
"metadata": {
"description": "Client ID (used by cloudprovider)"
},
"type": "securestring"
},
"servicePrincipalClientSecret": {
"metadata": {
"description": "The Service Principal Client Secret."
},
"type": "securestring"
},
"osType": {
"type": "string",
"defaultValue": "Linux",
"allowedValues": [
"Linux"
],
"metadata": {
"description": "The type of operating system."
}
},
"kubernetesVersion": {
"type": "string",
"defaultValue": "1.11.4",
"metadata": {
"description": "The version of Kubernetes."
}
},
"maxPods": {
"type": "int",
"defaultValue": 30,
"metadata": {
"description": "Maximum number of pods that can run on a node."
}
}
},
"variables": {
"deploymentEventTopic": "deploymenteventtopic",
"resourceGroupName": "[parameters('resourceGroupName')]",
"omswsName": "[concat('omsws-', parameters('resourceGroupName'))]",
"clustername": "cluster"
},
"resources": [
{
"apiVersion": "2018-03-31",
"type": "Microsoft.ContainerService/managedClusters",
"location": "[parameters('region')]",
"name": "[variables('clustername')]",
"properties": {
"kubernetesVersion": "[parameters('kubernetesVersion')]",
"enableRBAC": true,
"dnsPrefix": "clust",
"addonProfiles": {
"httpApplicationRouting": {
"enabled": true
},
"omsagent": {
"enabled": false
}
},
"agentPoolProfiles": [
{
"name": "agentpool",
"osDiskSizeGB": "[parameters('gbPerNode')]",
"count": "[parameters('numNodes')]",
"vmSize": "[parameters('machineType')]",
"osType": "[parameters('osType')]",
"storageProfile": "ManagedDisks"
}
],
"servicePrincipalProfile": {
"ClientId": "[parameters('servicePrincipalClientId')]",
"Secret": "[parameters('servicePrincipalClientSecret')]"
},
"networkProfile": {
"networkPlugin": "kubenet"
}
}
}
]
}
很遗憾,您似乎无法将磁盘添加到模板中的 AKS 节点。查看 template of AKS 中的所有属性,没有任何属性可以做到这一点。
如果您确实要将磁盘添加到节点,也许您可以手动将磁盘附加到 AKS 群集中的 VM。参见 attach a data disk to a Linux VM。实际上,集群中的节点是 Azure VM。因此,您可以像在 Azure VM 中一样执行操作。
但在我看来,如果您需要更多磁盘 space,最好在创建 AKS 群集时为节点更改更大的大小。请参阅模板中有关 osDiskSizeGB
和 vmSize
的属性。您可以根据需要将持久卷添加到 Pod。见Manually create and use a volume with Azure disks in Azure Kubernetes Service (AKS),我觉得这样使用磁盘更灵活高效
对于具有更多磁盘的节点,模板应如下所示:
{
"name": "nodepool1",
"count": 3,
"vmSize": "Standard_B2ms",
"osType": "Linux",
"osDiskSizeGB": 64,
"diskSizesGB": [
10,
10,
10,
10
]
}
不幸的是,尽管这是 AKS 的有效资源定义 - 它尚不能工作,但至少当它开始工作时,您将只使用此代码段 ;)
启动 AKS 集群时,我的每个节点在 /dev/sdb
处都有一个主磁盘,在 /dev/sda
处有一个较小的临时磁盘。如何将显示为 /dev/sdc
的附加未格式化磁盘附加到模板中的每个 AKS 节点。我当前的模板如下:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"resourceGroupName": {
"type": "string",
"metadata": {
"description": "The resource group name."
}
},
"subscriptionId": {
"type": "string",
"metadata": {
"description": "The subscription id."
}
},
"region": {
"type": "string",
"metadata": {
"description": "The region of AKS resource."
}
},
"gbPerNode": {
"type": "int",
"defaultValue": 20,
"metadata": {
"description": "Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize."
},
"minValue": 1,
"maxValue": 1023
},
"numNodes": {
"type": "int",
"defaultValue": 3,
"metadata": {
"description": "The number of agent nodes for the cluster."
},
"minValue": 1,
"maxValue": 50
},
"machineType": {
"type": "string",
"defaultValue": "Standard_D2_v2",
"metadata": {
"description": "The size of the Virtual Machine."
}
},
"servicePrincipalClientId": {
"metadata": {
"description": "Client ID (used by cloudprovider)"
},
"type": "securestring"
},
"servicePrincipalClientSecret": {
"metadata": {
"description": "The Service Principal Client Secret."
},
"type": "securestring"
},
"osType": {
"type": "string",
"defaultValue": "Linux",
"allowedValues": [
"Linux"
],
"metadata": {
"description": "The type of operating system."
}
},
"kubernetesVersion": {
"type": "string",
"defaultValue": "1.11.4",
"metadata": {
"description": "The version of Kubernetes."
}
},
"maxPods": {
"type": "int",
"defaultValue": 30,
"metadata": {
"description": "Maximum number of pods that can run on a node."
}
}
},
"variables": {
"deploymentEventTopic": "deploymenteventtopic",
"resourceGroupName": "[parameters('resourceGroupName')]",
"omswsName": "[concat('omsws-', parameters('resourceGroupName'))]",
"clustername": "cluster"
},
"resources": [
{
"apiVersion": "2018-03-31",
"type": "Microsoft.ContainerService/managedClusters",
"location": "[parameters('region')]",
"name": "[variables('clustername')]",
"properties": {
"kubernetesVersion": "[parameters('kubernetesVersion')]",
"enableRBAC": true,
"dnsPrefix": "clust",
"addonProfiles": {
"httpApplicationRouting": {
"enabled": true
},
"omsagent": {
"enabled": false
}
},
"agentPoolProfiles": [
{
"name": "agentpool",
"osDiskSizeGB": "[parameters('gbPerNode')]",
"count": "[parameters('numNodes')]",
"vmSize": "[parameters('machineType')]",
"osType": "[parameters('osType')]",
"storageProfile": "ManagedDisks"
}
],
"servicePrincipalProfile": {
"ClientId": "[parameters('servicePrincipalClientId')]",
"Secret": "[parameters('servicePrincipalClientSecret')]"
},
"networkProfile": {
"networkPlugin": "kubenet"
}
}
}
]
}
很遗憾,您似乎无法将磁盘添加到模板中的 AKS 节点。查看 template of AKS 中的所有属性,没有任何属性可以做到这一点。
如果您确实要将磁盘添加到节点,也许您可以手动将磁盘附加到 AKS 群集中的 VM。参见 attach a data disk to a Linux VM。实际上,集群中的节点是 Azure VM。因此,您可以像在 Azure VM 中一样执行操作。
但在我看来,如果您需要更多磁盘 space,最好在创建 AKS 群集时为节点更改更大的大小。请参阅模板中有关 osDiskSizeGB
和 vmSize
的属性。您可以根据需要将持久卷添加到 Pod。见Manually create and use a volume with Azure disks in Azure Kubernetes Service (AKS),我觉得这样使用磁盘更灵活高效
对于具有更多磁盘的节点,模板应如下所示:
{
"name": "nodepool1",
"count": 3,
"vmSize": "Standard_B2ms",
"osType": "Linux",
"osDiskSizeGB": 64,
"diskSizesGB": [
10,
10,
10,
10
]
}
不幸的是,尽管这是 AKS 的有效资源定义 - 它尚不能工作,但至少当它开始工作时,您将只使用此代码段 ;)