使用Azure资源管理器模板部署Krustlet到AKS集群指南
2025-07-09 05:52:18作者:齐冠琰
概述
Krustlet是一个用Rust编写的Kubernetes kubelet实现,专门用于运行WebAssembly (WASM) 工作负载。本文将详细介绍如何使用Azure资源管理器(ARM)模板在Azure Kubernetes Service(AKS)上部署Krustlet。
模板核心组件
该ARM模板提供了完整的自动化部署方案,主要包含以下关键组件:
- AKS集群:创建Kubernetes集群作为基础环境
- 虚拟机资源:用于运行Krustlet的Ubuntu虚拟机
- 网络配置:包括虚拟网络、子网、网络安全组等
- 身份管理:使用托管身份(MSI)进行安全访问控制
- 自动化脚本:通过CustomScript扩展自动安装配置Krustlet
部署参数详解
模板提供了多个可配置参数,允许用户根据需求自定义部署:
-
集群配置:
clusterName
:AKS集群名称,默认为"krustlet"kubernetesVersion
:Kubernetes版本,默认为1.18.10virtualMachineSize
:虚拟机规格,默认为Standard_DS2_v2
-
身份验证:
adminUsername
:管理员用户名sshPublicKey
:用于SSH访问的公共密钥servicePrincipalClientId/Secret
:服务主体凭据
-
Krustlet配置:
krustletURL
:Krustlet二进制文件下载地址
-
部署位置:
location
:资源部署区域,默认为资源组所在区域
部署流程解析
-
网络基础设施创建:
- 创建虚拟网络(10.0.0.0/8)和子网(10.240.0.0/16)
- 配置网络安全组,允许SSH(22端口)访问
-
AKS集群部署:
- 使用Kubenet网络插件
- 配置3节点的默认节点池
- 设置服务CIDR(10.0.0.0/16)和Pod CIDR(10.244.0.0/16)
-
Krustlet虚拟机准备:
- 基于Ubuntu 18.04 LTS创建VM
- 附加托管身份(MSI)
- 分配必要的角色权限(Contributor和ListClusterUserCredential)
-
Krustlet自动安装:
- 通过CustomScript扩展执行install_krustlet.sh脚本
- 脚本自动下载指定版本的Krustlet并完成配置
安全配置
模板采用了多项安全最佳实践:
- SSH密钥认证:禁用密码认证,强制使用SSH密钥
- 最小权限原则:仅为托管身份分配必要的权限
- 网络安全组:严格控制入站流量,仅开放必要端口
- 服务主体:使用服务主体而非账户凭据进行集群管理
自定义部署建议
-
生产环境调整:
- 考虑增加节点数量或使用更大规格的虚拟机
- 根据负载调整Pod CIDR和服务CIDR范围
-
网络配置:
- 可修改网络安全组规则限制SSH访问源IP
- 考虑启用加速网络提升性能
-
Krustlet版本:
- 通过修改krustletURL参数使用特定版本
- 建议定期更新到稳定版本
常见问题处理
-
部署失败:
- 检查服务主体凭据是否正确
- 验证订阅是否有足够配额创建资源
-
连接问题:
- 确认网络安全组规则允许必要流量
- 检查虚拟机是否成功获取IP地址
-
Krustlet运行异常:
- 查看/var/log/cloud-init-output.log获取安装日志
- 确认Krustlet版本与Kubernetes集群版本兼容
总结
该ARM模板提供了一种在AKS上部署Krustlet的标准化方法,自动化了从基础设施准备到应用安装的完整流程。通过合理调整参数,可以满足从开发测试到生产环境的不同需求,为运行WebAssembly工作负载提供了可靠的Kubernetes环境。