Kubernetes Kubernetes

搭建本地集群并开始使用 kubectl

用 minikube 运行单节点集群,用 kubectl 连接它,并学习你每天都会用到的命令。

10 min 初级

生产集群有许多节点,但为了学习,你需要一个在自己机器上的集群。常见的选择有 minikube、kind,以及 Docker Desktop 内置的 Kubernetes 选项。本指南使用带 Docker 驱动的 minikube。kubectl 命令在它们上面都是相同的,在任何真实集群上也是如此。

安装容器工具、minikube 和 kubectl

minikube 需要容器运行时或虚拟机来承载它的节点。Docker 是最常见的选择,所以请先安装 Docker Desktop(或在 Linux 上安装 Docker Engine),并确保它正在运行。然后安装 minikube 和 kubectl。在使用 Homebrew 的 macOS 上:

brew install minikube kubectl

对于其他系统,请遵循 minikube 安装页面和 kubectl 安装文档,它们提供了适用于每种操作系统的最新说明。minikube 大约需要 2 个 CPU、2 GB 空闲内存和 20 GB 磁盘。

启动集群

minikube start --driver=docker
minikube status

第一次启动较慢,因为 minikube 要下载它需要的镜像。驱动设置意味着整个 minikube 节点在你的机器上作为一个 Docker 容器运行。在该节点内部,Kubernetes 用它自己的容器运行时运行你的 Pod,所以有两层容器。这起初看起来可能令人困惑,但不影响你使用集群的方式。

确认 kubectl 能连上它

kubectl cluster-info
kubectl get nodes

你应该会看到一个具有 control-plane 角色且状态为 Ready 的节点。这个单一节点同时运行控制平面和你的工作负载,这正是架构指南中所描述的本地开发捷径。

理解 kubeconfig 与 context

为了让 kubectl 与集群通信,它需要集群的地址和凭据。它从一个 kubeconfig 文件中读取它们,默认是 ~/.kube/config,minikube start 会为你添加一个条目。每个条目将一个集群、一个用户,以及可选的一个默认命名空间组合成一个 context:

kubectl config get-contexts
kubectl config current-context
kubectl config use-context minikube

在运行任何破坏性操作之前,请检查当前的 context。如果你的 kubeconfig 还包含 staging 或 production 集群,当前的 context 决定了你的命令会作用到哪一个。

学习日常命令

kubectl get pods                # list Pods in the current namespace
kubectl get pods -A             # list Pods in all namespaces
kubectl describe pod NAME       # details and recent events for one Pod
kubectl logs NAME               # a container's output
kubectl delete pod NAME         # remove a Pod
kubectl api-resources           # every resource type the cluster knows
kubectl explain pod.spec        # built-in reference for any field
kubectl get --help              # help for any command

kubectl explain 值得记住:它直接从集群的 API 中,文档化每个资源的每个字段,所以你很少需要离开终端去查某个字段。

当你一天的工作结束时,minikube stop 会暂停集群,而 minikube delete 会将其完全删除。

热门指南