使用 Kubectl 检查节点

KubernetesKubernetesBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,你将学习如何使用 kubectl 检查 Kubernetes 集群中的节点。你将从基本的节点信息开始,逐步深入到更高级的主题,如污点(taints)和容忍(tolerations)。本实验假设你已经设置好 Kubernetes 集群并安装了 kubectl


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("`Kubernetes`")) -.-> kubernetes/BasicsGroup(["`Basics`"]) kubernetes(("`Kubernetes`")) -.-> kubernetes/BasicCommandsGroup(["`Basic Commands`"]) kubernetes(("`Kubernetes`")) -.-> kubernetes/ClusterInformationGroup(["`Cluster Information`"]) kubernetes(("`Kubernetes`")) -.-> kubernetes/TroubleshootingandDebuggingCommandsGroup(["`Troubleshooting and Debugging Commands`"]) kubernetes(("`Kubernetes`")) -.-> kubernetes/ConfigurationandVersioningGroup(["`Configuration and Versioning`"]) kubernetes/BasicsGroup -.-> kubernetes/initialization("`Initialization`") kubernetes/BasicCommandsGroup -.-> kubernetes/get("`Get`") kubernetes/BasicCommandsGroup -.-> kubernetes/annotate("`Annotate`") kubernetes/BasicCommandsGroup -.-> kubernetes/cordon("`Cordon`") kubernetes/BasicCommandsGroup -.-> kubernetes/uncordon("`Uncordon`") kubernetes/BasicCommandsGroup -.-> kubernetes/taint("`Taint`") kubernetes/ClusterInformationGroup -.-> kubernetes/cluster_info("`Cluster Info`") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/describe("`Describe`") kubernetes/ConfigurationandVersioningGroup -.-> kubernetes/label("`Label`") subgraph Lab Skills kubernetes/initialization -.-> lab-9790{{"`使用 Kubectl 检查节点`"}} kubernetes/get -.-> lab-9790{{"`使用 Kubectl 检查节点`"}} kubernetes/annotate -.-> lab-9790{{"`使用 Kubectl 检查节点`"}} kubernetes/cordon -.-> lab-9790{{"`使用 Kubectl 检查节点`"}} kubernetes/uncordon -.-> lab-9790{{"`使用 Kubectl 检查节点`"}} kubernetes/taint -.-> lab-9790{{"`使用 Kubectl 检查节点`"}} kubernetes/cluster_info -.-> lab-9790{{"`使用 Kubectl 检查节点`"}} kubernetes/describe -.-> lab-9790{{"`使用 Kubectl 检查节点`"}} kubernetes/label -.-> lab-9790{{"`使用 Kubectl 检查节点`"}} end

启动 Minikube 集群

在创建资源之前,你需要一个正在运行的 Kubernetes 集群。Minikube 是一个轻量级的 Kubernetes 环境,可以在你的本地机器上运行。

  1. 导航到工作目录

    打开终端并导航到默认的项目文件夹:

    cd /home/labex/project
  2. 启动 Minikube

    启动 Minikube 以初始化一个 Kubernetes 集群:

    minikube start
    • 此命令将在你的本地机器上设置一个单节点的 Kubernetes 集群。
    • 根据系统性能,Minikube 可能需要几分钟才能启动。
  3. 验证 Minikube 是否正在运行

    检查 Minikube 集群的状态:

    minikube status
    • 查找 kubeletapiserver 等组件是否显示为 Running
    • 如果集群未运行,请重新运行 minikube start

如果启动 Minikube 时遇到问题,可以使用 minikube delete 重置环境(如有需要)。

基本节点信息

首先,你将获取集群中节点的基本信息。

  1. 要查看集群中的节点列表,请运行以下命令:

    kubectl get nodes

    这将显示集群中所有节点的列表及其状态。

  2. 要获取特定节点的更详细信息,请运行以下命令:

    kubectl describe node minikube

    minikube 替换为你要检查的节点名称。这将为你提供有关节点状态、容量和使用情况的详细信息。

标签(Labels)和注解(Annotations)

标签和注解可用于为集群中的节点添加元数据。这些元数据可用于选择特定任务的节点或根据某些条件过滤节点。

  1. 要查看特定节点的标签和注解,请运行以下命令:

    kubectl get node minikube --show-labels=true

    这将显示指定节点的标签和注解。

  2. 要为节点添加标签,请运行以下命令:

    kubectl label node minikube org=labex
  3. 要为节点添加注解,请运行以下命令:

    kubectl annotate node minikube environment=production
  4. 使用以下命令检查节点上的标签:

    kubectl get nodes --show-labels

    这将输出集群中所有节点的列表及其标签。可以为节点添加标签以帮助识别其用途或特性。

污点(Taints)和容忍(Tolerations)

污点和容忍可用于控制哪些 Pod 可以调度到集群中的哪些节点上。污点是一种特殊的标签,用于标记节点不适合某些类型的 Pod,而容忍是一种设置,允许 Pod 调度到具有匹配污点的节点上。

  1. 要查看特定节点的污点,请运行以下命令:

    kubectl describe node minikube | grep Taints

    这将显示指定节点的污点。

  2. 要为节点添加污点,请运行以下命令:

    kubectl taint node minikube app=backend:NoSchedule
  3. 为 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 替换为你要查询的节点名称。此命令将列出与该节点相关的所有事件,例如重启、升级等。

标记节点为不可调度(Cordon)和恢复调度(Uncordon)

在某些情况下,你可能需要将节点从调度中移除以进行维护或其他原因。Kubernetes 提供了一种将节点标记为不可调度的方式,以便不会在其上调度新的 Pod。这称为“cordon”。

要将节点标记为不可调度,请使用以下命令:

kubectl cordon minikube

minikube 替换为你要标记为不可调度的节点名称。

然后使用以下命令检查节点状态:

kubectl get node

要恢复节点的调度能力并允许在其上调度新的 Pod,请使用以下命令:

kubectl uncordon minikube

minikube 替换为你要恢复调度的节点名称。

请注意,标记节点为不可调度不会自动将任何现有 Pod 从节点上移除。在标记节点为不可调度之前,你应手动删除或迁移 Pod,以避免任何中断。

恭喜,你已经学会了如何在 Kubernetes 中标记节点为不可调度和恢复调度。

总结

在本实验中,你学习了如何使用 kubectl 检查 Kubernetes 集群中的节点。你学习了如何列出节点、检查其状态、查看其标签以及检查其容量和资源使用情况。你还学习了如何为维护和升级排空(drain)和恢复调度(uncordon)节点。

您可能感兴趣的其他 Kubernetes 教程