升级 K3S 集群的方式有很多, 这里选择了使用升级套件进行升级.
根据官方的文档, 使用升级套件升级 K3S 的版本非常简单, 首先安装升级用的套件:
1
| kubectl apply -f https://github.com/rancher/system-upgrade-controller/releases/download/v0.6.4/system-upgrade-controller.yaml
|
接着定义好 Plan 文件, Plan 文件指示了系统要升级到的版本.
plans.yaml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| apiVersion: upgrade.cattle.io/v1 kind: Plan metadata: name: server-plan namespace: system-upgrade spec: concurrency: 1 cordon: true nodeSelector: matchExpressions: - key: node-role.kubernetes.io/master operator: In values: - "true" serviceAccountName: system-upgrade upgrade: image: rancher/k3s-upgrade version: v1.19.2+k3s1 ---
apiVersion: upgrade.cattle.io/v1 kind: Plan metadata: name: agent-plan namespace: system-upgrade spec: concurrency: 1 cordon: true tolerations: - key: "network" operator: "Equal" value: "direct" effect: "NoSchedule" nodeSelector: matchExpressions: - key: node-role.kubernetes.io/master operator: DoesNotExist prepare: args: - prepare - server-plan image: rancher/k3s-upgrade:v1.19.2-k3s1 serviceAccountName: system-upgrade upgrade: image: rancher/k3s-upgrade version: v1.19.2+k3s1
|
因为我的节点中有容忍度的配置, 所以对应的 agent 也要添加相关的容忍度设置.
然后应用它:
1
| kubectl apply -f plans.yml
|
升级完成后可能会出现 kubeconfig 被修改的情况, 从 master 的 /etc/rancher/k3s/k3s.yaml
重新复制到本地目录即可.