[root@k8s-master ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master Ready control-plane,master 558d v1.21.1 k8s-node-1 Ready <none> 558d v1.21.1 k8s-node-2 Ready <none> 558d v1.21.1
#Master 节点升级:
查看 kubeadm 可升级版本:
1 2 3 4
[root@k8s-master ~]# yum list --showduplicates kubeadm --disableexcludes=kubernetes
find the latest 1.22.1 version in the list kubeadm.x86_64 1.22.1-0 kubernetes
"--delete-emptydir-data" 是一个 Kubernetes Pod 的参数,用于在删除 Pod 时同时删除其 EmptyDir 卷中的数据。下面是更具体的解释:
在 Kubernetes 中,EmptyDir 卷是一种临时存储卷,用于在 Pod 生命周期内共享数据。当 Pod 被创建时,EmptyDir 卷会被创建并挂载到 Pod 的容器中,容器可以将数据写入该卷中。当 Pod 被删除时,EmptyDir 卷会被卸载并删除。
默认情况下,当 Pod 被删除时,EmptyDir 卷中的数据也会被删除。但是,如果在 Pod 运行期间手动更改了 EmptyDir 卷中的数据,那么在删除 Pod 时该数据就不会被自动删除。此时,如果需要在下次创建 Pod 时使用该 EmptyDir 卷,可能需要手动清理该卷中的数据。
"--delete-emptydir-data" 参数可以在删除 Pod 时自动删除 EmptyDir 卷中的数据。这个参数只对 EmptyDir 卷有效,不会影响其他类型的卷。使用此参数时,如果在 Pod 运行期间手动更改了 EmptyDir 卷中的数据,该数据将在删除 Pod 时自动删除,而不需要手动清理。需要注意的是,这个参数只能在删除 Pod 时使用,不能用于修改已经存在的 Pod。
1 2 3 4 5 6 7 8 9 10
"--ignore-daemonsets" 是一个 Kubernetes 命令的参数,用于在删除一个节点上的 Pod 时忽略 DaemonSet 类型的 Pod。下面是更具体的解释:
在 Kubernetes 集群中,DaemonSet 是一种 Pod 的控制器,它会确保在集群的每个节点上都运行一个 Pod 的副本。DaemonSet 类型的 Pod 是无法通过普通的 ReplicaSet 或 Deployment 控制器来管理的,因为它们必须在每个节点上运行一个副本。因此,在删除一个节点上的 Pod 时,如果这个节点上运行了 DaemonSet 类型的 Pod,那么这些 Pod 就不能被删除。
"--ignore-daemonsets" 参数可以在删除一个节点上的 Pod 时忽略 DaemonSet 类型的 Pod。使用这个参数时,如果在节点上运行了 DaemonSet 类型的 Pod,这些 Pod 将不会被删除,并且删除操作将继续进行,直到删除非 DaemonSet 类型的 Pod 为止。
需要注意的是,使用 "--ignore-daemonsets" 参数时应谨慎,因为它可能会导致节点上的某些 Pod 无法删除。如果你需要删除某个节点上的所有 Pod,可以先手动删除 DaemonSet 类型的 Pod,然后再使用 "--ignore-daemonsets" 参数删除剩余的 Pod。另外,如果你需要保留节点上的 DaemonSet 类型的 Pod,可以使用其他参数或命令来管理它们。 -- Data from chatgpt
There are pending nodes to be drained: k8s-master error: cannot delete Pods with local storage (use --delete-emptydir-data to override): argocd/devops-argocd-application-controller-0, argocd/devops-argocd-dex-server-5f4c69cdb8-5jzbb, default/redis-master-0, default/redis-replicas-0, default/redis-replicas-2, kube-system/csi-provisioner-68498f646b-2bz25
#执行完毕显示 successful 升级成功 [upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.22.1". Enjoy!
[upgrade/kubelet] Now that your control plane is upgraded, please proceed with upgrading your kubelets if you haven't already done so.
更新工作组件:
1 2 3 4
[root@k8s-master ~]# kubeadm upgrade node
[upgrade] The configuration for this node was successfully updated! [upgrade] Now you should go ahead and upgrade the kubelet package using your package manager.
[upgrade] Reading configuration from the cluster... [upgrade] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml' [preflight] Running pre-flight checks [preflight] Skipping prepull. Not a control plane node. [upgrade] Skipping phase. Not a control plane node. [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml" [upgrade] The configuration for this node was successfully updated! [upgrade] Now you should go ahead and upgrade the kubelet package using your package manager.