grafana/rollout-operatorGrafana Multi-AZ Rollout Operator 是一个 Kubernetes Operator 镜像,专为协调多可用区(Multi-AZ)部署场景下的 StatefulSet 滚动更新而设计。该 Operator 通过自定义逻辑跨多个 StatefulSet 协调 Pod 滚动策略,确保多 AZ 环境中 Stateful 应用的更新过程有序、可控,避免因跨 AZ 同时中断导致的服务不可用风险。
topology.kubernetes.io/zone),实现 AZ 级别的更新优先级控制kubectl 工具已配置集群访问权限Operator 依赖自定义资源(CR)实现配置管理,需先部署 CRD:
bashkubectl apply -f [***]
通过 Kubernetes Deployment 部署 Operator 控制器(镜像为 grafana/rollout-operator:<tag>,需替换 <tag> 为具体版本):
部署清单示例(deployment.yaml):
yamlapiVersion: apps/v1 kind: Deployment metadata: name: rollout-operator namespace: grafana-rollout-operator # 建议使用独立命名空间 spec: replicas: 1 selector: matchLabels: app: rollout-operator template: metadata: labels: app: rollout-operator spec: serviceAccountName: rollout-operator # 需提前创建 RBAC 权限 containers: - name: operator image: grafana/rollout-operator:latest # 替换为实际版本标签 resources: limits: cpu: 500m memory: 512Mi requests: cpu: 200m memory: 256Mi env: - name: WATCH_NAMESPACE value: "default" # 指定监听的命名空间,为空则监听所有命名空间 - name: LOG_LEVEL value: "info" # 日志级别:debug/info/warn/error - name: OPERATOR_NAME value: "rollout-operator"
应用部署清单:
bashkubectl apply -f deployment.yaml
通过自定义资源(CR)定义多 AZ 滚动策略,示例如下:
CR 清单示例(rollout-config.yaml):
yamlapiVersion: rollout.grafana.com/v1alpha1 kind: MultiAZRollout metadata: name: example-multiaz-rollout namespace: default # 需与监听命名空间一致 spec: # StatefulSet 选择器:匹配需协调的 StatefulSet statefulSetSelector: matchLabels: app: my-stateful-app # 替换为实际 StatefulSet 标签 # 滚动更新策略 rollingUpdate: maxUnavailable: 1 # 每次更新最大不可用 Pod 数 intervalSeconds: 30 # 批次更新间隔(秒) azTopologyKey: "topology.kubernetes.io/zone" # AZ 拓扑标签键 # AZ 更新顺序(可选,默认按字母序) azOrder: - "us-west-2a" - "us-west-2b" - "us-west-2c"
应用 CR 配置:
bashkubectl apply -f rollout-config.yaml
| 参数路径 | 类型 | 说明 | 默认值 |
|---|---|---|---|
spec.statefulSetSelector | LabelSelector | 用于选择目标 StatefulSet 的标签选择器 | 无(必填) |
spec.rollingUpdate.maxUnavailable | int/string | 滚动更新时允许的最大不可用 Pod 数(支持百分比,如 "25%") | 1 |
spec.rollingUpdate.intervalSeconds | int | 批次更新间隔时间(秒) | 30 |
spec.rollingUpdate.azTopologyKey | string | 用于识别 AZ 的节点标签键 | topology.kubernetes.io/zone |
spec.azOrder | []string | AZ 更新优先级顺序(按列表顺序依次更新) | 按 AZ 名称字母序 |
spec.namespace | string | 目标 StatefulSet 所在命名空间(需与 CR 所在命名空间一致) | CR 所在命名空间 |
| 环境变量 | 说明 | 可选值 | 默认值 |
|---|---|---|---|
WATCH_NAMESPACE | Operator 监听的命名空间(多命名空间用逗号分隔,为空则监听所有) | 命名空间名称或空字符串 | 空(监听所有命名空间) |
LOG_LEVEL | 日志输出级别 | debug/info/warn/error | info |
OPERATOR_NAME | Operator 标识名称 | 字符串 | rollout-operator |
METRICS_PORT | 指标暴露端口 | 1024-65535 | 8080 |


manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务