Azure Kubernetes Autopilot是一个Kubernetes服务,用于自动维护Azure集群,是azure-k8s-autorepair的继任者。它支持Azure AKS和自定义Azure Kubernetes集群,提供节点自动修复和VMSS实例自动更新功能,并支持通过https://containrrr.github.io/shoutrrr/%E5%8F%91%E9%80%81%E9%80%9A%E7%9F%A5%E3%80%82
:8080/metrics访问| 参数 | 描述 | 环境变量 |
|---|---|---|
--dry-run | 模拟运行(不触发实际重新部署) | DRY_RUN |
--instance.nodename | Autopilot运行所在节点名称 | INSTANCE_NODENAME |
--instance.namespace | Autopilot运行所在命名空间 | INSTANCE_NAMESPACE |
--instance.pod | Autopilot运行所在Pod名称 | INSTANCE_POD |
--debug | 调试模式 | DEBUG |
-v, --verbose | 详细模式 | VERBOSE |
--log.json | 切换日志输出为JSON格式 | LOG_JSON |
--repautoscaler.scaledown-locktime | 修复/更新后防止集群自动扩缩器缩容受影响节点的时间(默认60m) | AUTOSCALER_SCALEDOWN_LOCKTIME |
--kube.node.labelselector | 节点标签选择器,指定需要检查的节点 | KUBE_NODE_LABELSELECTOR |
--lease.enable | 启用领导选举(Docker镜像默认启用) | LEASE_ENABLE |
--lease.name | 领导选举锁名称(默认:azure-k8s-autopilot-leader) | LEASE_NAME |
--repair.crontab | 修复检查的定时任务表达式(默认:@every 2m) | REPAIR_CRONTAB |
--repair.notready-threshold | 自动修复触发阈值(即节点持续NotReady状态的时长,默认10m) | REPAIR_NOTREADY_THRESHOLD |
--repair.concurrency | 并发修复的VM数量(默认1) | REPAIR_CONCURRENCY |
--repair.lock-duration | 修复操作后锁定时长(默认30m) | REPAIR_LOCK_DURATION |
--repair.lock-duration-error | 修复错误时的锁定时长(默认5m) | REPAIR_LOCK_DURATION_ERROR |
--repair.azure.vmss.action | VMSS节点修复动作(可选:restart/redeploy/reimage,默认redeploy) | REPAIR_AZURE_VMSS_ACTION |
--repair.azure.vm.action | VM节点修复动作(可选:restart/redeploy,默认redeploy) | REPAIR_AZURE_VM_ACTION |
--repair.azure.provisioningstate | 触发修复的Azure VM provisioning状态(默认:succeeded,failed) | REPAIR_AZURE_PROVISIONINGSTATE |
--repair.lock-annotation | 节点修复锁定注解(默认:autopilot.webdevops.io/repair-lock) | REPAIR_LOCK_ANNOTATION |
--update.crontab | 更新检查的定时任务表达式(默认:@every 15m) | UPDATE_CRONTAB |
--update.concurrency | 并发更新的VM数量(默认1) | UPDATE_CONCURRENCY |
--update.lock-duration | 更新操作后锁定时长(默认15m) | UPDATE_LOCK_DURATION |
--update.lock-duration-error | 更新错误时的锁定时长(默认5m) | UPDATE_LOCK_DURATION_ERROR |
--update.lock-annotation | 节点更新锁定注解(默认:autopilot.webdevops.io/update-lock) | UPDATE_LOCK_ANNOTATION |
--update.ongoing-annotation | 节点更新进行中注解(默认:autopilot.webdevops.io/update-ongoing) | UPDATE_ONGOING_ANNOTATION |
--update.exclude-annotation | 节点更新排除注解(默认:autopilot.webdevops.io/exclude) | UPDATE_EXCLUDE_ANNOTATION |
--update.azure.vmss.action | VMSS节点更新动作(可选:update/update+reimage,默认update+reimage) | UPDATE_AZURE_VMSS_ACTION |
--update.azure.provisioningstate | 触发更新的Azure VM provisioning状态(默认:succeeded,failed) | UPDATE_AZURE_PROVISIONINGSTATE |
--update.failed-threshold | 节点更新失败阈值,达到后停止更新(默认2) | UPDATE_FAILED_THRESHOLD |
--drain.kubectl | kubectl二进制文件路径(默认:kubectl) | DRAIN_KUBECTL |
--drain.enable | 启用节点排空处理 | DRAIN_ENABLE |
--drain.delete-local-data | 允许排空使用emptyDir的Pod(会删除本地数据) | DRAIN_DELETE_LOCAL_DATA |
--drain.force | 强制排空非受控制器管理的Pod | DRAIN_FORCE |
--drain.grace-period | Pod优雅终止时间(秒,负值使用Pod默认值) | DRAIN_GRACE_PERIOD |
--drain.ignore-daemonsets | 忽略DaemonSet管理的Pod | DRAIN_IGNORE_DAEMONSETS |
--drain.pod-selector | 用于过滤节点上Pod的标签选择器 | DRAIN_POD_SELECTOR |
--drain.timeout | 排空超时时间(默认0s,即无限等待) | DRAIN_TIMEOUT |
--drain.wait-after | 排空后等待时间(默认30s,用于Kubernetes卸载卷等操作) | DRAIN_WAIT_AFTER |
--drain.dry-run | 排空模拟运行(不实际排空、解除封锁或标记节点) | DRAIN_DRY_RUN |
--notification | Shoutrrr通知URL(用于发送通知) | NOTIFICATION |
--bind | 服务绑定地址(默认::8080) | SERVER_BIND |
Azure API认证
通过环境变量配置,具体参考https://github.com/Azure/azure-sdk-for-go#authentication%E3%80%82
Kubernetes认证
KUBECONFIG环境变量指定kubeconfig文件路径bashdocker run -d \ --name azure-k8s-autopilot \ -e "AZURE_CLIENT_ID=your-client-id" \ -e "AZURE_CLIENT_SECRET=your-client-secret" \ -e "AZURE_TENANT_ID=your-tenant-id" \ -e "AZURE_SUBSCRIPTION_ID=your-subscription-id" \ -e "KUBECONFIG=/kubeconfig" \ -v /path/to/kubeconfig:/kubeconfig \ webdevops/azure-k8s-autopilot:latest \ --repair.crontab="@every 5m" \ --update.crontab="@every 30m" \ --notification="slack://token@channel"
yamlversion: '3' services: azure-k8s-autopilot: image: webdevops/azure-k8s-autopilot:latest container_name: azure-k8s-autopilot environment: - AZURE_CLIENT_ID=your-client-id - AZURE_CLIENT_SECRET=your-client-secret - AZURE_TENANT_ID=your-tenant-id - AZURE_SUBSCRIPTION_ID=your-subscription-id - KUBECONFIG=/kubeconfig - REPAIR_CRONTAB=@every 5m - UPDATE_CRONTAB=@every 30m - NOTIFICATION=slack://token@channel volumes: - /path/to/kubeconfig:/kubeconfig restart: always
可通过http://<pod-ip>:8080/metrics访问Prometheus格式指标:
| 指标名称 | 描述 |
|---|---|
autopilot_repair_count | 修复操作次数 |
autopilot_repair_node_status | 节点状态 |
autopilot_repair_duration | 修复任务持续时间 |
autopilot_update_count | 更新操作次数 |
autopilot_update_duration | 上次更新执行持续时间 |
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
不支持 push
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务