题目内容
设置配置环境:
[candidate@node-1] $ kubectl config use-context ek8s
Task
将名为 node02 的 node 设置为不可用,并重新调度该 node 上所有运行的 pods。
考点相关内容分析
node
在 Kubernetes(K8s)中,Node 是集群中的一个工作节点,也称为 Minion。Node 是运行应用程序和负责容器的实际主机。每个 Node 都有 Kubelet,它是 Kubernetes 主要组件之一,用于与控制平面通信,并管理 Node 上的容器。
Node 的主要组成部分包括:
- Kubelet: 是在每个 Node 上运行的代理,它负责管理该节点上的容器,以及与主控制平面通信以接收并执行调度任务。
- 容器运行时(Container Runtime): 用于在 Node 上运行容器的软件,如 Docker、containerd、cri-o 等。
- kube-proxy: 是负责管理网络代理的组件,它维护着节点上的网络规则,并处理集群内部的网络通信。
- Pods: 是 Kubernetes 中最小的调度单元,一个 Pod 可以包含一个或多个容器,它们共享网络命名空间和存储卷,并在同一节点上调度和管理。
Node 是 Kubernetes 集群的计算资源,它们接收调度器分配的任务,并负责在节点上运行容器。节点的数量取决于集群的规模和负载要求,它们组成了 Kubernetes 集群的计算能力。
相关操作命令
- 查看节点列表:
$ kubectl get nodes
- 查看节点详细信息:
$ kubectl describe node <node-name>
- 添加标签到节点
$ kubectl label node <node-name> <label-key>=<label-value>
- 删除节点
$ kubectl delete node <node-name>
- 驱逐节点上的 Pod
$ kubectl drain <node-name>
- 恢复节点
$ kubectl uncordon <node-name>
题目操作步骤
- (标准步骤) 进入题目指定集群
$ kubectl config use-context ek8s
- 查看当前 node 状态
$ kubectl get node
- 暂停节点调度
$ kubectl cordon node02
$ kubectl get node
- 驱逐节点
$ kubectl drain node02 --ignore-daemonsets
如果执行驱逐命令报错,则在命令后添加
--delete-emptydir-data --force
参数