作为容器编排领域的王者,Kubernetes 的管理命令常常让新手望而生畏。本文将用最通俗易懂的语言,手把手带你掌握 Kubernetes 集群管理的核心操作技巧。从基础信息查询到高级资源监控,每个命令都配有详细解释+实战案例,看完就能直接上手!
一、集群信息查询(小白必学)
Pod 创建过程
1. 帮助命令:kubectl help
作用:查看任意命令的使用说明(就像游戏的帮助手册)
使用场景:忘记命令参数时随时查阅
# 查看 version 命令的详细说明
kubectl help version
# 输出示例:
# Print the client and server versions for the current context
# kubectl version
2. 集群状态检查:kubectl cluster-info
作用:显示集群核心组件地址(一眼看出集群是否正常)
kubectl cluster-info
# 输出示例:
Kubernetes control plane is running at https://192.168.88.50:6443
CoreDNS is running at https://192.168.88.50:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
关键输出解析:
control plane
:控制节点地址CoreDNS
:集群 DNS 服务地址
3. 资源对象查询:kubectl api-resources
作用:列出所有支持的资源类型(就像查看 Kubernetes 的“物种清单”)
kubectl api-resources
# 输出示例:
NAME SHORTNAMES APIVERSION NAMESPACED KIND
pods po v1 true Pod
services svc v1 true Service
deployments deploy apps/v1 true Deployment
常用参数:
--namespaced
:过滤是否属于命名空间资源
4. 版本信息查询:kubectl api-versions
作用:查看资源对象的 API 版本(避免版本不兼容问题)
kubectl api-versions
# 输出示例:
admissionregistration.k8s.io/v1
apps/v1
autoscaling/v1
batch/v1
5. 认证配置管理:kubectl config
作用:管理集群连接凭证(相当于 Kubernetes 的“钥匙串”)
# 查看当前上下文(正在使用的集群配置)
kubectl config get-contexts
# 查看详细配置(包含证书和服务器地址)
kubectl config view
# 输出示例:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://192.168.88.50:6443
name: kubernetes
users:
- name: kubernetes-admin
user:
client-certificate-data: REDACTED
二、集群管理授权实战
1. 多节点管理配置
场景:在 Harbor 主机上管理集群
# Step 1 - 配置 hosts 解析
echo '192.168.88.50 master' >> /etc/hosts
# Step 2 - 安装 kubectl
dnf install -y kubectl
# Step 3 - 同步管理员配置文件
mkdir -p $HOME/.kube
rsync master:/etc/kubernetes/admin.conf $HOME/.kube/config
# Step 4 - 验证节点状态
kubectl get nodes
关键点:
admin.conf
文件包含集群管理员证书- 文件权限必须正确(通常设置为 600)
三、Pod 全生命周期管理
1. 创建第一个 Pod
# 从私有仓库拉取镜像并创建 Pod
kubectl run myweb --image=harbor:443/library/myos:httpd
# 查看 Pod 状态
kubectl get pods -o wide
# 输出示例:
NAME READY STATUS IP NODE
myweb 1/1 Running 10.244.1.3 node-0001
注意事项:
--image
指定镜像地址,格式为仓库地址/项目名/镜像:标签
- 若出现
ImagePullBackOff
错误,检查镜像权限和网络
2. Pod 状态深度检查
# 查看详细配置(YAML 格式)
kubectl get pod myweb -o yaml
# 查看事件日志(排查启动故障)
kubectl describe pod myweb
# 查看容器日志(类似 docker logs)
kubectl logs myweb
输出解析:
Events
部分显示 Pod 调度、镜像拉取、启动全过程Conditions
显示当前状态(如 PodScheduled、Ready)
3. 进入容器调试
# 在容器内执行命令(查看进程)
kubectl exec myweb -- ps aux
# 进入容器交互模式(类似 docker exec -it)
kubectl exec -it myweb -- bash
# 容器与宿主机文件传输
kubectl cp myweb:/etc/hosts /tmp/hosts-copy
kubectl cp /tmp/file.txt myweb:/app/
4. 删除 Pod 的正确姿势
# 删除单个 Pod
kubectl delete pod myweb
# 删除命名空间下所有 Pod
kubectl delete pods --all -n work
# 强制删除(卡在 Terminating 时使用)
kubectl delete pod myweb --force --grace-period=0
四、资源监控与性能分析
1. 安装 Metrics Server
作用:监控节点和 Pod 的 CPU/内存使用情况
# 加载监控组件镜像
docker load -i metrics-server.tar.xz
# 部署 Metrics Server
kubectl apply -f components.yaml
# 验证安装
kubectl -n kube-system get pods | grep metrics-server
2. 实时资源监控
# 查看节点资源使用
kubectl top nodes
# 查看 Pod 资源使用
kubectl top pods
# 输出示例:
NAME CPU(cores) MEMORY(bytes)
myweb 5m 50Mi
五、声明式资源管理(YAML 实战)
1. 创建资源清单文件
apiVersion: v1
kind: Pod
metadata:
name: myweb
spec:
containers:
- name: nginx
image: myos:nginx
ports:
- containerPort: 80
2. 常用管理命令对比
命令 | 特点 | 使用场景 |
| 只能创建新资源 | 初始化部署 |
| 创建或更新资源(幂等操作) | 持续集成/滚动更新 |
| 删除资源 | 清理环境 |
| 强制替换配置 | 紧急修复 |
# 声明式创建资源
kubectl apply -f myweb.yaml
# 强制重建 Pod
kubectl replace --force -f myweb.yaml
六、常见问题排查指南
- Pod 一直处于 Pending 状态
-
- 检查节点资源:
kubectl describe node
- 查看事件日志:
kubectl describe pod <name>
- 检查节点资源:
- 镜像拉取失败(ImagePullBackOff)
-
- 验证镜像地址是否正确
- 检查 Harbor 证书配置:
cat /etc/containerd/config.toml
- 节点 NotReady 状态
-
- 检查 kubelet 服务:
systemctl status kubelet
- 查看证书状态:
kubectl get csr
- 检查 kubelet 服务:
总结
通过本文的学习,你已经掌握了 Kubernetes 集群管理的核心技能。建议在日常工作中:
- 多使用
kubectl describe
查看详细信息 - 重要操作前备份 YAML 文件
- 善用
-o wide/yaml/json
参数查看不同格式输出
进阶学习路线: