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
实用技巧
-
日志颜色高亮:
kubectl logs <pod-name> | highlight
-
日志过滤:
kubectl logs <pod-name> | grep "ERROR"
-
查看多个容器的日志:
kubectl logs <pod-name> --all-containers=true
-
JSON 格式日志:
kubectl logs <pod-name> -f --tail=10 | jq
注意事项
- 默认情况下只能查看运行中 Pod 的日志
- 已删除 Pod 的日志无法查看(除非使用日志收集系统)
- 日志大小受 Kubernetes 配置限制
- 在多节点集群中,日志可能分散在不同节点
故障排查
如果无法查看日志,可以尝试:
# 检查 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
:进入 Podkubectl apply/delete
:创建/删除资源kubectl rollout
:管理 Deployment 更新
这些命令覆盖了大部分 Kubernetes 日常操作,适合开发、运维和调试使用。
No Comments