Azure SDK for .NET容器服务:AKS与容器实例管理指南
在云原生应用开发中,容器化部署已成为标准实践。Azure提供了两种核心容器服务:Azure Kubernetes服务(AKS)和容器实例(Container Instances)。本文将通过Azure SDK for .NET,为运营人员和开发人员提供一站式的容器服务管理指南,帮助您快速上手资源部署、扩展与监控。
核心组件与依赖安装
Azure SDK for .NET为容器服务提供了两个核心管理库,分别对应AKS和容器实例服务:
通过NuGet安装所需依赖:
dotnet add package Azure.ResourceManager.ContainerService
dotnet add package Azure.ResourceManager.ContainerInstance
核心类结构
AKS服务的核心操作类位于sdk/containerservice/Azure.ResourceManager.ContainerService/src目录,主要包括:
- 容器服务管理:
ContainerServiceManagedClusterResource- 用于AKS集群的创建与配置 - 节点池管理:
ContainerServiceAgentPoolResource- 管理Kubernetes节点池 - 维护配置:
ContainerServiceMaintenanceConfigurationResource- 配置集群维护时段
容器实例服务的核心类位于sdk/containerinstance/Azure.ResourceManager.ContainerInstance/src目录,主要包括:
- 容器组管理:
ContainerGroupResource- 管理容器实例的集合 - 配置文件:
ContainerGroupProfileResource- 定义容器部署模板
AKS集群管理实战
集群创建流程
使用ContainerServiceManagedClusterCollection的CreateOrUpdateAsync方法创建AKS集群,关键参数包括节点池配置、网络设置和认证方式:
var clusterData = new ContainerServiceManagedClusterData(Location.WestUS)
{
DnsPrefix = "myakscluster",
AgentPoolProfiles = { new ContainerServiceAgentPoolProfileData
{
Name = "agentpool",
Count = 3,
VmSize = "Standard_D2_v2"
}
}
};
var lro = await resourceGroup.GetContainerServiceManagedClusters()
.CreateOrUpdateAsync(WaitUntil.Completed, "myAKSCluster", clusterData);
var cluster = lro.Value;
节点池扩展
通过ContainerServiceAgentPoolCollection动态调整节点数量,实现弹性伸缩:
var agentPoolData = new ContainerServiceAgentPoolData
{
Count = 5, // 扩展至5个节点
VmSize = "Standard_D2_v2"
};
var agentPool = await cluster.GetContainerServiceAgentPools()
.CreateOrUpdateAsync(WaitUntil.Completed, "agentpool", agentPoolData);
容器实例快速部署
无服务器容器运行
容器实例适合快速部署短期任务,无需管理Kubernetes集群。使用ContainerGroupCollection创建单容器应用:
var containerGroupData = new ContainerGroupData(Location.WestUS)
{
Containers =
{
new ContainerInstanceContainerData("mycontainer")
{
Image = "mcr.microsoft.com/azure-app-service/php:8.0-apache_20230801.1",
Resources = new ContainerResourceRequirements
{
Cpu = 1.0,
MemoryInGB = 1.5
}
}
},
OsType = ContainerInstanceOperatingSystemType.Linux
};
var containerGroup = await resourceGroup.GetContainerGroups()
.CreateOrUpdateAsync(WaitUntil.Completed, "myContainerGroup", containerGroupData);
多容器应用编排
通过容器组(Container Group)实现多容器协同工作,共享网络和存储:
containerGroupData.Containers.Add(new ContainerInstanceContainerData("sidecar")
{
Image = "mcr.microsoft.com/azure-monitor/containerinsights/ciprod:ciprod06272023",
Resources = new ContainerResourceRequirements
{
Cpu = 0.5,
MemoryInGB = 0.5
}
});
监控与维护最佳实践
资源使用监控
利用Azure Monitor集成监控容器资源使用情况,SDK提供的ContainerGroupInstanceView可获取实时状态:
var instanceView = await containerGroup.GetInstanceViewAsync();
foreach (var containerView in instanceView.Value.Containers)
{
Console.WriteLine($"容器状态: {containerView.State}");
Console.WriteLine($"CPU使用率: {containerView.Resources.CpuUsage}");
}
相关类定义:ContainerInstanceView.cs
维护配置管理
AKS支持维护时段配置,避免更新对业务造成影响:
var maintenanceConfig = new ContainerServiceMaintenanceConfigurationData
{
TimeInWeek = { new TimeInWeek(DayOfWeek.Monday, 360) } // 每周一凌晨6点
};
await cluster.GetContainerServiceMaintenanceConfigurations()
.CreateOrUpdateAsync(WaitUntil.Completed, "myMaintenanceWindow", maintenanceConfig);
维护配置API:ContainerServiceMaintenanceConfigurationCollection.cs
常见问题与故障排除
资源部署失败排查
当调用CreateOrUpdateAsync返回错误时,可通过ArmOperation的GetRawResponse()方法获取详细错误信息:
try
{
// 部署代码
}
catch (Exception ex)
{
var error = ex.InnerException as RequestFailedException;
Console.WriteLine($"部署失败: {error.Status}: {error.Message}");
}
版本兼容性矩阵
| SDK版本 | 最低.NET版本 | 支持的AKS版本 |
|---|---|---|
| 1.0.0+ | .NET 6.0 | AKS 1.24+ |
| 1.5.0+ | .NET 7.0 | AKS 1.26+ |
版本信息来源:Directory.Build.props
总结与进阶资源
通过Azure SDK for .NET,您可以轻松实现从开发到运维的全流程容器管理。无论是需要完整Kubernetes功能的AKS,还是追求极简部署的容器实例,SDK都提供了一致的API设计和丰富的功能支持。
推荐学习资源
掌握这些工具,将帮助您在Azure云平台上构建更可靠、弹性的容器化应用。立即通过dotnet add package安装SDK,开启您的容器管理之旅吧!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



