apiVersion: upgrade.cattle.io/v1 kind: Plan metadata: name: k3s-server-v1.25 namespace: system-upgrade labels: k3s-upgrade: server spec: concurrency: 1 # Batch size (roughly maps to maximum number of unschedulable nodes) channel: https://update.k3s.io/v1-release/channels/v1.25 nodeSelector: matchExpressions: - {key: k3s-upgrade, operator: Exists} - {key: k3s-upgrade, operator: NotIn, values: ["disabled", "false"]} - {key: k3os.io/mode, operator: DoesNotExist} - {key: node-role.kubernetes.io/control-plane, operator: Exists} serviceAccountName: system-upgrade cordon: true upgrade: image: rancher/k3s-upgrade --- apiVersion: upgrade.cattle.io/v1 kind: Plan metadata: name: k3s-agent-v1.25 namespace: system-upgrade labels: k3s-upgrade: agent spec: concurrency: 1 # Batch size (roughly maps to maximum number of unschedulable nodes) channel: https://update.k3s.io/v1-release/channels/v1.25 nodeSelector: matchExpressions: - {key: k3s-upgrade, operator: Exists} - {key: k3s-upgrade, operator: NotIn, values: ["disabled", "false"]} - {key: k3os.io/mode, operator: DoesNotExist} - {key: node-role.kubernetes.io/control-plane, operator: DoesNotExist} serviceAccountName: system-upgrade prepare: # Defaults to the same "resolved" tag that is used for the `upgrade` container, NOT `latest` image: rancher/k3s-upgrade args: ["prepare", "k3s-server"] drain: force: true skipWaitForDeleteTimeout: 60 # 1.18+ (honor pod disruption budgets up to 60 seconds per pod then moves on) upgrade: image: rancher/k3s-upgrade