在 CentOS 7 系统上管理和操作 Kubernetes 集群,kubectl 是不可或缺的核心命令行工具,它充当了用户与 Kubernetes API 服务器之间的桥梁,允许用户部署应用、检查和管理集群资源以及查看日志,CentOS 7 以其稳定性和企业级的广泛应用,成为许多 Kubernetes 管理员的首选控制台操作系统,本文将详细介绍如何在 CentOS 7 上安装、配置并初步使用 kubectl。

在 CentOS 7 上安装 kubectl
在 CentOS 7 上安装 kubectl 主要有两种推荐方法:直接下载官方二进制文件或通过 yum 包管理器进行安装,两种方法各有优势,前者能快速获取最新版本,后者则便于系统的长期管理和更新。
直接下载二进制文件
这是最直接且灵活的方式,可以确保你获得的是最新的稳定版。
- 
下载最新版本的 kubectl 使用
curl命令下载最新稳定版的kubectl,该命令会自动获取最新的版本号并下载对应的二进制文件。curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
 - 
安装二进制文件 下载完成后,需要将文件移动到系统路径中,并赋予可执行权限,推荐将其放置在
/usr/local/bin目录下。sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
 - 
验证安装 安装完成后,可以通过以下命令验证
kubectl是否已正确安装并查看其版本信息。kubectl version --client
 
通过 Yum 仓库安装
这种方法将 kubectl 作为系统包进行管理,便于后续的升级和卸载。
- 
添加 Kubernetes 仓库 需要创建 Kubernetes 的
yum仓库配置文件。
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF
 - 
安装 kubectl 使用
yum命令安装kubectl。sudo yum install -y kubectl
 
配置 kubectl 连接集群
安装 kubectl 本身只是第一步,要使其能够与你的 Kubernetes 集群通信,必须进行正确的配置。kubectl 通过一个名为 kubeconfig 的配置文件来查找集群的访问信息,该文件通常位于 ~/.kube/config。
- 
获取配置文件 如果你使用
kubeadm等工具初始化了集群,管理员配置文件通常位于主节点的/etc/kubernetes/admin.conf,你需要将此文件复制到你的用户目录下。mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
如果你使用的是托管在云服务商(如阿里云、腾讯云、AWS)的 Kubernetes 服务,它们通常会在控制台提供一个可供下载的
kubeconfig文件,下载后,将其放置在~/.kube/config即可。 - 
验证连接 配置完成后,使用以下命令来验证
kubectl是否能成功连接到集群。kubectl cluster-info
如果命令返回了 Kubernetes 控制平面和 CoreDNS 的地址,说明连接已成功建立。
 
常用 kubectl 命令速查
掌握 kubectl 的日常使用是高效管理集群的关键,下表列出了一些最常用的命令及其功能。

| 命令分类 | 命令示例 | 描述 | 
|---|---|---|
| 资源查看 | kubectl get nodes | 
查看集群中所有节点的状态 | 
kubectl get pods -n <namespace> | 
查看指定命名空间下的所有 Pod | |
kubectl describe pod <pod-name> | 
获取某个 Pod 的详细信息,包括事件和状态 | |
| 资源操作 | kubectl apply -f <yaml-file> | 
从 YAML 或 JSON 文件创建或更新资源 | 
kubectl delete pod <pod-name> | 
删除指定的 Pod | |
kubectl exec -it <pod-name> -- /bin/bash | 
进入指定 Pod 的容器内部 | |
| 故障排查 | kubectl logs <pod-name> | 
查看指定 Pod 的日志 | 
kubectl top nodes | 
查看节点的资源使用情况(需安装 metrics-server) | 
相关问答 (FAQs)
问:执行 kubectl get pods 时提示 “The connection to the server localhost:8080 was refused”,应该怎么办?
答:这是一个非常常见的错误,几乎总是因为 kubectl 找不到或无法读取正确的 kubeconfig 文件,请按以下步骤排查:
- 检查配置文件是否存在:确认 
~/.kube/config文件是否存在。 - 检查环境变量:
kubectl默认查找$HOME/.kube/config,如果你的配置文件在其他位置,可以通过设置环境变量KUBECONFIG来指定路径,export KUBECONFIG=/path/to/your/config。 - 检查文件权限:确保当前用户对 
~/.kube/config文件有读取权限,可以使用ls -l ~/.kube/config查看,并用chown修改所有者。 - 检查集群状态:确认你的 Kubernetes 集群正在运行,并且网络通畅,如果你是在远程管理集群,请确保网络连接(如 VPN)正常。
 
问:如何在一台机器上使用 kubectl 管理多个不同的 Kubernetes 集群?
答:kubectl 支持通过上下文来管理多个集群,你只需要将所有集群的配置信息合并到一个 kubeconfig 文件中,或者通过 KUBECONFIG 环境变量指向多个配置文件。
- 查看所有上下文:使用 
kubectl config get-contexts可以列出配置文件中定义的所有集群、用户和上下文。 - 切换上下文:使用 
kubectl config use-context <context-name>命令可以切换到目标集群。kubectl config use-context dev-cluster。 - 查看当前上下文:使用 
kubectl config current-context可以确认当前正在使用的是哪个集群的配置。 通过这种方式,你就可以方便地在开发、测试、生产等多个集群之间无缝切换,而无需反复修改配置文件。