
欢迎关注我们,了解更多Azure技术资讯
您在使用Azure Kubernetes服务(AKS)时可能遇到过类似场景或疑问:
您可能会担心AKS集群的VM节点操作系统(OS)使用的临时磁盘会不会因为重建,出现节点数据丢失的问题?
能否使用永久性卷PV来存储,以避免数据丢失问题呢?
用户又该如何配置永久性卷呢?
本文中我们将和您一起深入研究、解析和配置AKS:
无论选择哪种OS磁盘类型,都不应将应用程序数据存储在OS盘上。
临时OS磁盘的数据确实非持久化:
临时OS磁盘仅存储在主机(VM)上。当VM节点被删除或重新分配时,临时磁盘上的所有数据会随之消失。AKS的许多操作(如升级、缩放)都可能涉及节点的替换。
托管OS磁盘并非为应用数据设计:
虽然托管OS磁盘是持久化的,但它主要用于操作系统本身。其性能和容量可能不适合存储应用程序数据,并且会影响节点的管理操作。

最佳实践:
AKS应用程序的持久数据应存储在专用的Azure存储解决方案中
(卷/Volume)例如Azure磁盘、Azure文件存储、Azure NetApp文件或Azure Blob存储。这些存储资源通过持久卷(PV) 和持久卷声明(PVC) 挂载到Pod中,与Pod的生命周期分离,从而保证数据的持久性和安全性。
进一步解析,AKS默认会使用所选节点的VM机型所提供的临时磁盘作为OS磁盘,存储类型一般为标准SSD。
如果选择的是没有临时磁盘的机型,则会使用托管磁盘创建OS盘。
如果客户不希望用临时存储,而使用永久性存储/卷,可使用命令行创建时指定使用托管磁盘作为OS盘。
如果您需要根据云环境定制具体命令,欢迎您随时提交技术支持工单。
Azure CLI
# 使用Azure CLI创建使用托管OS磁盘的AKS集群
az aks create `
--resource-group $resourceGroup`
--name $clusterName`
--node-count 3 `
--node-vm-size Standard_DS2_v2 `
--node-osdisk-type Managed
注意:
某些VM机型(如一些新一代系列)可能没有临时存储。在这种情况下,AKS会自动使用托管OS磁盘。
无论选择哪种OS磁盘类型,都建议客户自行根据需求,在上述CLI命令中附加参数设置OS磁盘大小( 磁盘最小 30 GB):以下示例 100GB
--node-osdisk-size 100
创建集群后,您可通过kubectl命令验证节点的OS磁盘类型:
powershell
# 获取节点信息(包括OS磁盘详情)
kubectl describe nodes | Select-String"Disk"
yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: azure-managed-disk-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: managed-premium
resources:
requests:
storage: 10Gi
备注:如果您需要在删除PVC时继续保留底层磁盘 (保留回收策略)
则请将上述命令中此参数设置为: storageClassName: managed-premium-retain
然后创建一个Pod来使用这个存储:
yaml
apiVersion: v1
kind: Pod
metadata:
name: mypod-with-storage
spec:
containers:
- name: myapp
image: nginx:latest
volumeMounts:
- mountPath: "/data"
name: data-volume
volumes:
- name: data-volume
persistentVolumeClaim:
claimName: azure-managed-disk-pvc
参考资料:


我们的使命
让云计算更聪明
让云服务更高效

