Kubernetes 集群信息

KubernetesKubernetesBeginner
立即练习

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

介绍

Kubernetes 是一个容器编排平台,能够自动化容器化应用的部署、扩展和管理。在本实验中,你将探索如何使用 cluster-info 命令来深入了解你的 Kubernetes 集群。通过本实验,你将掌握如何启动 Kubernetes 集群、获取关键的集群信息、检查内部组件以及测试 API 服务器的连接性。

本实验专为初学者设计,无需具备 Kubernetes 的先前经验。


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/ClusterInformationGroup -.-> kubernetes/cluster_info("`Cluster Info`") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/describe("`Describe`") kubernetes/ConfigurationandVersioningGroup -.-> kubernetes/config("`Config`") kubernetes/ConfigurationandVersioningGroup -.-> kubernetes/version("`Version`") subgraph Lab Skills kubernetes/initialization -.-> lab-8426{{"`Kubernetes 集群信息`"}} kubernetes/get -.-> lab-8426{{"`Kubernetes 集群信息`"}} kubernetes/cluster_info -.-> lab-8426{{"`Kubernetes 集群信息`"}} kubernetes/describe -.-> lab-8426{{"`Kubernetes 集群信息`"}} kubernetes/config -.-> lab-8426{{"`Kubernetes 集群信息`"}} kubernetes/version -.-> lab-8426{{"`Kubernetes 集群信息`"}} end

启动 Kubernetes 集群

Kubernetes 集群需要一个运行环境。在本实验中,我们将使用 Minikube,这是一个允许你在本地运行 Kubernetes 集群的工具。请按照以下步骤操作:

  1. 打开终端并确保你位于 /home/labex/project 目录下:

    cd ~/project
  2. 启动 Minikube 集群:

    minikube start
    • Minikube 会创建一个单节点的 Kubernetes 集群。
    • 此过程可能需要几分钟,具体取决于你的系统。在初始化过程中,将设置各种 Kubernetes 组件。
    Minikube 集群初始化

获取集群基本信息

Minikube 启动后,使用 kubectl cluster-info 命令查看集群信息。运行以下命令:

kubectl cluster-info
  • API server 的 URL 是与集群交互的主要端点。
  • CoreDNS 负责集群内的服务发现和 DNS 解析。

示例输出:

Kubernetes control plane is running at https://192.168.49.2:8443
CoreDNS is running at https://192.168.49.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
  • https://192.168.49.2:8443 是 Kubernetes API server 的 URL。所有 kubectl 命令都会发送到此地址。
  • CoreDNS 服务帮助 Kubernetes 解析服务和 Pod 的域名。

详细检查集群组件

为了更深入地了解集群及其内部组件,请使用以下命令:

kubectl cluster-info dump

该命令提供关键组件的详细信息:

  • etcd:存储所有集群数据的键值存储系统。
  • kube-apiserver:Kubernetes API 请求的入口点。
  • kube-scheduler:将工作负载(Pod)分配到可用节点。
  • kube-controller-manager:维护集群状态(例如,确保运行所需数量的 Pod 副本)。

示例输出:

该命令会生成详细的输出,描述 Kubernetes 系统组件的配置和状态。你可以将输出重定向到文件中以便更轻松地分析:

kubectl cluster-info dump > cluster-details.txt

这将把输出保存到当前目录下的 cluster-details.txt 文件中。

查看集群中的节点

节点是 Kubernetes 中运行工作负载的机器。要列出集群中的节点,请运行以下命令:

kubectl get nodes
  • 节点名称(例如 minikube)用于标识机器。
  • 状态Ready)表示节点健康且可以运行工作负载。
  • 在 Minikube 集群中,节点同时充当控制平面(control plane)和工作节点(worker node)。

示例输出:

NAME       STATUS   ROLES           AGE   VERSION
minikube   Ready    control-plane   5m    v1.20.0

测试 API 服务器访问

API 服务器是 Kubernetes 控制平面的关键组件。你可以通过运行以下命令测试其可访问性:

curl $(kubectl config view --minify -o jsonpath='{.clusters[0].cluster.server}') --insecure
  • 该命令获取 API 服务器的 URL 并对其执行简单的请求。
  • --insecure 标志绕过 SSL 证书验证,在此本地设置中是可以接受的。

示例输出:

如果 API 服务器可访问,响应应如下所示:

{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {},
  "status": "Failure",
  "message": "forbidden: User \"system:anonymous\" cannot get path \"/\"",
  "reason": "Forbidden",
  "details": {},
  "code": 403
}

此响应确认 API 服务器正在运行,但由于缺少身份验证而拒绝访问,这是预期的结果。

总结

在本实验中,你学习了如何:

  • 使用 Minikube 启动 Kubernetes 集群。
  • 使用 kubectl cluster-info 获取集群详细信息。
  • 使用 kubectl cluster-info dump 深入检查集群组件。
  • 使用 kubectl get nodes 列出集群中的节点。
  • 使用 curl 命令测试 API 服务器的连接性。

这些动手实践为你理解和探索 Kubernetes 集群奠定了基础。这些命令对于调试和管理 Kubernetes 环境至关重要。

下一步:

  • 探索 Kubernetes 中的 Pod 和工作负载。
  • 学习如何创建服务以暴露应用程序。
  • 尝试在集群中扩展工作负载。

继续练习,祝你学习愉快!

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