Azure SDK for .NET容器服务:AKS与容器实例管理指南

Azure SDK for .NET容器服务:AKS与容器实例管理指南

【免费下载链接】azure-sdk-for-net 此代码库用于积极开发Azure SDK for .NET。对于SDK的用户,我们推荐访问我们的公共开发者文档 https://learn.microsoft.com/dotnet/azure/ 或我们版本化的开发者文档 https://azure.github.io/azure-sdk-for-net。 【免费下载链接】azure-sdk-for-net 项目地址: https://gitcode.com/GitHub_Trending/az/azure-sdk-for-net

在云原生应用开发中,容器化部署已成为标准实践。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集群管理实战

集群创建流程

使用ContainerServiceManagedClusterCollectionCreateOrUpdateAsync方法创建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;

代码示例来源:ContainerServiceManagedClusterCollection.cs

节点池扩展

通过ContainerServiceAgentPoolCollection动态调整节点数量,实现弹性伸缩:

var agentPoolData = new ContainerServiceAgentPoolData 
{ 
    Count = 5, // 扩展至5个节点
    VmSize = "Standard_D2_v2" 
};

var agentPool = await cluster.GetContainerServiceAgentPools()
    .CreateOrUpdateAsync(WaitUntil.Completed, "agentpool", agentPoolData);

详细实现见:ContainerServiceAgentPoolCollection.cs

容器实例快速部署

无服务器容器运行

容器实例适合快速部署短期任务,无需管理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);

代码示例参考:ContainerGroupOperationTests.cs

多容器应用编排

通过容器组(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返回错误时,可通过ArmOperationGetRawResponse()方法获取详细错误信息:

try
{
    // 部署代码
}
catch (Exception ex)
{
    var error = ex.InnerException as RequestFailedException;
    Console.WriteLine($"部署失败: {error.Status}: {error.Message}");
}

版本兼容性矩阵

SDK版本最低.NET版本支持的AKS版本
1.0.0+.NET 6.0AKS 1.24+
1.5.0+.NET 7.0AKS 1.26+

版本信息来源:Directory.Build.props

总结与进阶资源

通过Azure SDK for .NET,您可以轻松实现从开发到运维的全流程容器管理。无论是需要完整Kubernetes功能的AKS,还是追求极简部署的容器实例,SDK都提供了一致的API设计和丰富的功能支持。

推荐学习资源

掌握这些工具,将帮助您在Azure云平台上构建更可靠、弹性的容器化应用。立即通过dotnet add package安装SDK,开启您的容器管理之旅吧!

【免费下载链接】azure-sdk-for-net 此代码库用于积极开发Azure SDK for .NET。对于SDK的用户,我们推荐访问我们的公共开发者文档 https://learn.microsoft.com/dotnet/azure/ 或我们版本化的开发者文档 https://azure.github.io/azure-sdk-for-net。 【免费下载链接】azure-sdk-for-net 项目地址: https://gitcode.com/GitHub_Trending/az/azure-sdk-for-net

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值