介绍
在本实验中,你将学习如何使用 kubectl
检查 Kubernetes 集群中的节点。你将从基本的节点信息开始,逐步深入到更高级的主题,如污点(taints)和容忍(tolerations)。本实验假设你已经设置好 Kubernetes 集群并安装了 kubectl
。
在本实验中,你将学习如何使用 kubectl
检查 Kubernetes 集群中的节点。你将从基本的节点信息开始,逐步深入到更高级的主题,如污点(taints)和容忍(tolerations)。本实验假设你已经设置好 Kubernetes 集群并安装了 kubectl
。
在创建资源之前,你需要一个正在运行的 Kubernetes 集群。Minikube 是一个轻量级的 Kubernetes 环境,可以在你的本地机器上运行。
导航到工作目录:
打开终端并导航到默认的项目文件夹:
cd /home/labex/project
启动 Minikube:
启动 Minikube 以初始化一个 Kubernetes 集群:
minikube start
验证 Minikube 是否正在运行:
检查 Minikube 集群的状态:
minikube status
kubelet
和 apiserver
等组件是否显示为 Running
。minikube start
。如果启动 Minikube 时遇到问题,可以使用 minikube delete
重置环境(如有需要)。
首先,你将获取集群中节点的基本信息。
要查看集群中的节点列表,请运行以下命令:
kubectl get nodes
这将显示集群中所有节点的列表及其状态。
要获取特定节点的更详细信息,请运行以下命令:
kubectl describe node minikube
将 minikube
替换为你要检查的节点名称。这将为你提供有关节点状态、容量和使用情况的详细信息。
标签和注解可用于为集群中的节点添加元数据。这些元数据可用于选择特定任务的节点或根据某些条件过滤节点。
要查看特定节点的标签和注解,请运行以下命令:
kubectl get node minikube --show-labels=true
这将显示指定节点的标签和注解。
要为节点添加标签,请运行以下命令:
kubectl label node minikube org=labex
要为节点添加注解,请运行以下命令:
kubectl annotate node minikube environment=production
使用以下命令检查节点上的标签:
kubectl get nodes --show-labels
这将输出集群中所有节点的列表及其标签。可以为节点添加标签以帮助识别其用途或特性。
污点和容忍可用于控制哪些 Pod 可以调度到集群中的哪些节点上。污点是一种特殊的标签,用于标记节点不适合某些类型的 Pod,而容忍是一种设置,允许 Pod 调度到具有匹配污点的节点上。
要查看特定节点的污点,请运行以下命令:
kubectl describe node minikube | grep Taints
这将显示指定节点的污点。
要为节点添加污点,请运行以下命令:
kubectl taint node minikube app=backend:NoSchedule
为 Pod 创建容忍,请运行以下命令:
cat << EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx
tolerations:
- key: app
operator: Exists
effect: NoSchedule
EOF
此 Pod 使用 app
作为污点的名称,并使用 NoSchedule
作为污点的效果。
要查看节点上的可用资源,请使用以下命令:
kubectl describe node minikube | grep -A 8 "Allocated resources"
将 minikube
替换为你要检查的节点名称。
这将提供有关节点的详细信息,包括其容量和当前资源使用情况。
在 Kubernetes 中,你可以使用以下命令过滤与特定节点相关的所有事件:
kubectl get events --field-selector involvedObject.kind=Node,involvedObject.name=minikube
将 minikube
替换为你要查询的节点名称。此命令将列出与该节点相关的所有事件,例如重启、升级等。
在某些情况下,你可能需要将节点从调度中移除以进行维护或其他原因。Kubernetes 提供了一种将节点标记为不可调度的方式,以便不会在其上调度新的 Pod。这称为“cordon”。
要将节点标记为不可调度,请使用以下命令:
kubectl cordon minikube
将 minikube
替换为你要标记为不可调度的节点名称。
然后使用以下命令检查节点状态:
kubectl get node
要恢复节点的调度能力并允许在其上调度新的 Pod,请使用以下命令:
kubectl uncordon minikube
将 minikube
替换为你要恢复调度的节点名称。
请注意,标记节点为不可调度不会自动将任何现有 Pod 从节点上移除。在标记节点为不可调度之前,你应手动删除或迁移 Pod,以避免任何中断。
恭喜,你已经学会了如何在 Kubernetes 中标记节点为不可调度和恢复调度。
在本实验中,你学习了如何使用 kubectl
检查 Kubernetes 集群中的节点。你学习了如何列出节点、检查其状态、查看其标签以及检查其容量和资源使用情况。你还学习了如何为维护和升级排空(drain)和恢复调度(uncordon)节点。