Skip to main content

kubectl 常用操作指南

kubectl 是 Kubernetes 的命令行工具,用于与 Kubernetes 集群交互。以下是一些常用操作,涵盖集群管理、资源操作、调试和日志查看等场景。


1. 集群信息查看

命令 说明
kubectl cluster-info 查看集群信息
kubectl get nodes 查看所有节点状态
kubectl describe node <node-name> 查看节点详细信息
kubectl version 查看 kubectl 和集群版本

2. 命名空间(Namespace)操作

命令 说明
kubectl get ns 查看所有命名空间
kubectl create ns <namespace> 创建命名空间
kubectl delete ns <namespace> 删除命名空间
kubectl config set-context --current --namespace=<namespace> 切换当前命名空间

3. Pod 操作

命令 说明
kubectl get pods 查看当前命名空间的 Pod
kubectl get pods -A 查看所有命名空间的 Pod
kubectl describe pod <pod-name> 查看 Pod 详细信息
kubectl logs <pod-name> 查看 Pod 日志
kubectl logs -f <pod-name> 实时查看 Pod 日志(类似 tail -f
kubectl exec -it <pod-name> -- /bin/sh 进入 Pod 的 Shell
kubectl delete pod <pod-name> 删除 Pod
kubectl port-forward <pod-name> <local-port>:<pod-port> 端口转发(访问 Pod 服务)

4. Deployment 操作

命令 说明
kubectl get deployments 查看所有 Deployments
kubectl describe deployment <deployment-name> 查看 Deployment 详情
kubectl apply -f deployment.yaml 应用 Deployment YAML 文件
kubectl delete deployment <deployment-name> 删除 Deployment
kubectl scale deployment <deployment-name> --replicas=3 调整 Pod 副本数量
kubectl rollout status deployment <deployment-name> 查看 Deployment 更新状态
kubectl rollout undo deployment <deployment-name> 回滚 Deployment

5. Service 操作

命令 说明
kubectl get svc 查看所有 Service
kubectl describe svc <service-name> 查看 Service 详情
kubectl expose deployment <deployment-name> --type=NodePort --port=80 创建 Service 暴露 Deployment
kubectl delete svc <service-name> 删除 Service

6. ConfigMap & Secret 操作

命令 说明
kubectl get configmaps 查看 ConfigMap
kubectl create configmap <name> --from-file=<file> 从文件创建 ConfigMap
kubectl get secrets 查看 Secrets
kubectl create secret generic <name> --from-literal=key=value 创建 Secret

7. 调试与故障排查

命令 说明
kubectl top pod 查看 Pod 资源使用情况
kubectl top node 查看 Node 资源使用情况
kubectl get events --sort-by=.metadata.creationTimestamp 查看集群事件
kubectl cp <pod-name>:<pod-path> <local-path> 从 Pod 复制文件到本地
kubectl run debug-pod --image=busybox --restart=Never --rm -it -- sh 启动临时调试 Pod

8. 其他实用命令

命令 说明
kubectl api-resources 查看所有 Kubernetes 资源类型
kubectl explain <resource> 查看资源的 YAML 字段说明
kubectl edit <resource> <name> 直接编辑资源(如 kubectl edit deployment nginx
kubectl apply -f <directory> 应用目录下的所有 YAML 文件
kubectl wait --for=condition=Ready pod/<pod-name> 等待 Pod 就绪

kubectl logs 子命令使用指南

kubectl logs 是 Kubernetes 中查看容器日志的主要命令,下面详细介绍其使用方法。

基本用法

1. 查看 Pod 日志

kubectl logs <pod-name>

2. 查看特定容器的日志(Pod 中有多个容器时)

kubectl logs <pod-name> -c <container-name>

常用选项

流式日志(实时跟踪)

kubectl logs -f <pod-name>

显示时间戳

kubectl logs --timestamps <pod-name>

查看最近 N 行的日志

kubectl logs --tail=20 <pod-name>  # 查看最后20行

查看某时间段内的日志

kubectl logs --since=1h <pod-name>  # 过去1小时的日志
kubectl logs --since-time="2023-01-02T15:04:05Z" <pod-name>

查看之前容器的日志(容器崩溃后)

kubectl logs -p <pod-name>

高级用法

1. 查看 Deployment 的 Pod 日志

kubectl logs deploy/<deployment-name>

2. 查看多个 Pod 的日志(使用标签选择器)

kubectl logs -l app=nginx

3. 将日志输出到文件

kubectl logs <pod-name> > pod.log

4. 在交互式 Shell 中查看日志

kubectl exec -it <pod-name> -- cat /var/log/myapp.log

实用技巧

  1. 日志颜色高亮

    kubectl logs <pod-name> | highlight
    
  2. 日志过滤

    kubectl logs <pod-name> | grep "ERROR"
    
  3. 查看多个容器的日志

    kubectl logs <pod-name> --all-containers=true
    
  4. JSON 格式日志

    kubectl logs <pod-name> -f --tail=10 | jq
    

注意事项

  1. 默认情况下只能查看运行中 Pod 的日志
  2. 已删除 Pod 的日志无法查看(除非使用日志收集系统)
  3. 日志大小受 Kubernetes 配置限制
  4. 在多节点集群中,日志可能分散在不同节点

故障排查

如果无法查看日志,可以尝试:

# 检查 Pod 状态
kubectl describe pod <pod-name>

# 检查容器是否正常运行
kubectl get pod <pod-name> -o jsonpath='{.status.containerStatuses[0].ready}'

通过以上命令组合,您可以高效地查看和分析 Kubernetes 容器日志。

总结

  • kubectl get:查询资源
  • kubectl describe:查看详细信息
  • kubectl logs:查看日志
  • kubectl exec:进入 Pod
  • kubectl apply/delete:创建/删除资源
  • kubectl rollout:管理 Deployment 更新

这些命令覆盖了大部分 Kubernetes 日常操作,适合开发、运维和调试使用。