简介
Kubernetes 是一个容器编排系统,负责管理容器化应用在集群中的调度、运行、暴露和恢复。
通常,你会使用 kubectl 与 Kubernetes 集群交互。在部署应用之前,需要先运行一个集群,并确保客户端配置正确指向该集群。
在本实验中,你将学习配置 Kubernetes 集群访问权限的基本步骤。你将使用 Minikube 在本地运行单节点 Kubernetes 集群。Minikube 非常适合学习和开发。
你将学习如何:
- 启动本地 Kubernetes 集群。
- 验证
kubectl上下文,确保命令针对正确的集群。 - 获取基本的集群信息。
- 列出集群中的节点,验证节点状态。
启动集群
在此步骤中,你将使用 Minikube 启动本地 Kubernetes 集群。Minikube 会在本地计算机上创建虚拟机或容器,并在其中部署一个简单的集群。这样,你无需云服务提供商就能练习 Kubernetes 命令。
此时需要明确区分三个概念。集群是完整的 Kubernetes 环境。节点是集群中的一台计算机。控制平面负责接收 API 请求并决定系统应执行的操作。Minikube 将这些组件打包成本地学习环境,让你可以先专注于 Kubernetes 概念,再处理云基础设施。
首先,确认你位于项目目录中:
cd ~/project
现在启动 Minikube 集群。我们将指定 docker 驱动程序,让集群运行在 Docker 容器中。该方式与当前实验环境兼容。
minikube start --driver=docker
此过程可能需要几分钟,因为 Minikube 需要下载所需的 Kubernetes 镜像并启动控制平面。你会看到类似以下内容的输出:Minikube 正在拉取镜像、启动容器并配置集群。
命令执行完成后,检查 Minikube 的状态,确认集群是否正常运行:
minikube status
输出中,host、kubelet 和 apiserver 的状态应为 "Running"。
验证上下文
在此步骤中,你将验证 kubectl 命令行工具是否已配置为与新的 Minikube 集群通信。
Kubernetes 使用配置文件(通常位于 ~/.kube/config)保存集群访问信息。该文件可以包含多个集群的详细信息。上下文决定 kubectl 将命令发送到哪个集群。在上一步启动 Minikube 时,它会自动更新配置,并将上下文设置为 minikube。
理解这一点很重要,因为 kubectl 只是一个客户端,它本身并不包含集群。kubectl 会读取连接信息、证书和当前选中的上下文,然后向 Kubernetes API 服务器发送请求。在实际工作中,工程师经常需要在开发、预发布和生产集群之间切换,因此检查当前上下文是一种安全习惯,而不是形式上的操作。
运行以下命令,验证当前上下文:
kubectl config current-context
输出应为:
minikube
如果你想查看完整的配置详细信息,包括集群服务器 URL 和用户证书(敏感内容会被安全隐藏),可以查看配置:
kubectl config view
这可以确认你之后运行的任何 kubectl 命令都会针对本地 Minikube 集群执行。
检查集群信息
在此步骤中,你将获取集群的基本信息,以验证连接状态并查看 Kubernetes 控制平面运行的位置。
cluster-info 命令可以简单检查 kubectl 是否能够成功与 API 服务器通信。
Kubernetes 是一个由 API 驱动的系统。从创建 Pod 到扩展 Deployment,几乎所有操作都会转换为发送到控制平面的 API 请求。因此,在排查任何集群问题时,首先进行的健康检查之一就是确认客户端是否能够访问 API 服务器。
运行以下命令:
kubectl cluster-info
你应看到类似以下内容的输出:
Kubernetes control plane is running at https://127.0.0.1:32769
CoreDNS is running at https://127.0.0.1:32769/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
IP 地址和端口可能不同,但需要关注的关键信息是 "Kubernetes control plane is running"。这表示你的客户端(kubectl)已成功连接到服务器(集群)。
列出节点
在此步骤中,你将检查集群中的节点。节点是 Kubernetes 中的工作计算机,可以是虚拟机,也可以是物理机。由于我们使用的是 Minikube,预计会看到一个节点,同时承担控制平面和工作节点的角色。
在较大的集群中,这些角色通常会分开。控制平面节点负责编排,工作节点负责运行应用工作负载。Minikube 将这些角色合并到一个节点中,以简化学习环境,但命令输出仍然会介绍你在生产环境中会看到的相同概念。
使用 get nodes 命令列出集群中的所有节点:
kubectl get nodes
你会看到类似以下内容的输出:
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane 5m20s v1.26.1
下面解释各列的含义:
- NAME:节点名称,本例中为
minikube。 - STATUS:节点状态。应为
Ready,表示节点运行正常并已准备好接收工作负载。 - ROLES:节点角色,例如
control-plane。 - AGE:节点已经运行的时间。
- VERSION:节点上安装的 Kubernetes 版本。
如果状态为 NotReady,通常表示节点仍在启动,或者存在网络问题。当前状态为 Ready,说明集群已完全正常运行。
总结
在本实验中,你已成功配置访问 Kubernetes 集群所需的环境。你完成了以下操作:
- 使用 Minikube 启动本地 Kubernetes 集群。
- 验证 kubectl 上下文已正确设置为指向本地集群。
- 获取集群信息,确认与 API 服务器的连接正常。
- 列出节点,确保集群基础设施已准备就绪且运行正常。
这些是在 Kubernetes 中部署应用之前必须掌握的基础步骤。现在你已经拥有一个可用的本地环境,可以继续学习 Kubernetes。


