# Azure中如何部署Kubernetes ## 目录 1. [Kubernetes与Azure Kubernetes Service概述](#kubernetes与azure-kubernetes-service概述) 2. [部署前的准备工作](#部署前的准备工作) 3. [通过Azure Portal部署AKS](#通过azure-portal部署aks) 4. [通过Azure CLI部署AKS](#通过azure-cli部署aks) 5. [通过Terraform实现基础设施即代码部署](#通过terraform实现基础设施即代码部署) 6. [部署后的基本配置与验证](#部署后的基本配置与验证) 7. [监控与运维建议](#监控与运维建议) 8. [成本优化策略](#成本优化策略) 9. [常见问题与故障排除](#常见问题与故障排除) --- ## Kubernetes与Azure Kubernetes Service概述 ### 什么是Kubernetes? Kubernetes(简称K8s)是Google开源的容器编排系统,用于自动化容器化应用的部署、扩展和管理。它提供了: - 自动化容器编排 - 服务发现与负载均衡 - 存储编排 - 自动修复 - 密钥与配置管理 ### 为什么选择Azure Kubernetes Service(AKS)? Azure Kubernetes Service是微软提供的托管Kubernetes服务,具有以下优势: - **简化管理**:托管控制平面(Master节点由Azure管理) - **集成Azure生态**:与Azure Monitor、Azure AD、Azure Policy无缝集成 - **成本效益**:只需支付工作节点费用 - **合规认证**:符合ISO、SOC、PCI DSS等标准 - **混合云支持**:通过Azure Arc管理跨云集群 --- ## 部署前的准备工作 ### 1. Azure账户与订阅 - 有效的Azure账户([免费试用账户](https://azure.microsoft.com/free/)) - 确保订阅有足够配额(至少6-8个vCPU) ### 2. 工具安装 ```bash # Azure CLI安装(跨平台) curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash # kubectl安装 sudo az aks install-cli # 验证安装 az --version kubectl version --client
资源类型 | 建议配置 |
---|---|
节点大小 | Standard_DS2_v2 (2vCPU, 7GB内存) |
节点数量 | 开发环境:2-3个,生产环境:至少3个 |
网络模型 | Azure CNI(需要精细IP管理时) |
区域选择 | 靠近用户的Azure区域 |
登录Azure门户 → 点击”创建资源”
搜索”Kubernetes服务” → 点击”创建”
基础配置:
节点池配置: “`markdown
”`
网络配置:
点击”查看+创建” → 验证通过后点击”创建”
部署时间通常为5-10分钟,可通过通知中心查看进度。
# 登录Azure az login # 创建资源组 az group create --name myAKSResourceGroup --location eastus2 # 部署AKS集群 az aks create \ --resource-group myAKSResourceGroup \ --name myAKSCluster \ --node-count 3 \ --enable-addons monitoring \ --generate-ssh-keys \ --node-vm-size Standard_DS2_v2 \ --network-plugin azure # 获取访问凭证 az aks get-credentials --resource-group myAKSResourceGroup --name myAKSCluster
# 启用自动缩放(1-5个节点) az aks create \ --enable-cluster-autoscaler \ --min-count 1 \ --max-count 5 # 使用托管身份(推荐) az aks create --assign-identity /subscriptions/.../resourcegroups/.../providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity
provider "azurerm" { features {} } resource "azurerm_resource_group" "aks_rg" { name = "aks-resources" location = "East US 2" } resource "azurerm_kubernetes_cluster" "aks" { name = "aks-cluster" location = azurerm_resource_group.aks_rg.location resource_group_name = azurerm_resource_group.aks_rg.name dns_prefix = "akscluster" default_node_pool { name = "default" node_count = 3 vm_size = "Standard_DS2_v2" } identity { type = "SystemAssigned" } }
执行步骤:
terraform init terraform plan terraform apply
kubectl get nodes # 应返回3个节点状态为Ready kubectl cluster-info # 显示集群控制平面和核心服务状态
# nginx-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80
应用部署:
kubectl apply -f nginx-deployment.yaml kubectl get pods -w # 观察Pod状态
Azure Monitor for Containers
az aks enable-addons -a monitoring -n myAKSCluster -g myAKSResourceGroup
Prometheus集成
az aks update --enable-azure-monitor-metrics -n myAKSCluster -g myAKSResourceGroup
az aks nodepool update --enable-auto-upgrade \ --resource-group myAKSResourceGroup \ --cluster-name myAKSCluster \ --name nodepool1
az aks nodepool add \ --name spotpool \ --priority Spot \ --eviction-policy Delete \ --spot-max-price -1 \ --cluster-name myAKSCluster \ --resource-group myAKSResourceGroup
缩放类型 | 适用场景 | 配置方法 |
---|---|---|
集群自动缩放 | 节点数量动态调整 | --enable-cluster-autoscaler |
Pod水平缩放 | 应用副本数调整 | 配置HPA(Horizontal Pod Autoscaler) |
垂直Pod缩放 | 单个Pod资源调整(预览功能) | 安装VPA插件 |
journalctl -u kubelet -n 100
kubectl describe pod <pod-name> # 查看事件记录 kubectl get events --sort-by=.metadata.creationTimestamp
kubectl get pods -n kube-system -l k8s-app=azure-cni
az network nsg list --resource-group MC_myAKSResourceGroup_myAKSCluster_eastus2
持续学习资源: - AKS官方文档 - Kubernetes Patterns电子书 - Azure Fridays视频系列 “`
该文档包含约3500字,采用Markdown格式编写,包含: - 结构化层级标题 - 代码块与表格等格式元素 - 实操命令和配置示例 - 可视化排版与跳转链接 - 运维建议和最佳实践
可根据实际需求进一步扩展特定章节内容。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。