kubectl get pods 查看节点信息
(1) 基本命令
运行以下命令可以列出所有 Pod 及其所在的节点:
kubectl get pods -o wide
-o wide 参数会显示额外的信息,包括 Pod 所在的节点(NODE 列)。
NODE 列显示了该 Pod 被调度到的节点名称(例如 node-1)。
使用 kubectl describe pod 查看详细信息
kubectl describe pod <pod-name>
可以看到上面这个被分配到node3了
Kubernetes 的 kubectl
是与集群交互的核心命令行工具,以下是常用的基本命令分类整理,适合初学者快速上手:
1. 集群信息查询
命令 | 说明 |
---|---|
kubectl cluster-info |
查看集群信息(API Server地址等) |
kubectl get nodes |
查看所有节点状态 |
kubectl version |
查看客户端和服务器端版本 |
2. Pod 管理
命令 | 说明 |
---|---|
kubectl get pods |
查看默认命名空间的 Pod |
kubectl get pods -n <namespace> |
查看指定命名空间的 Pod |
kubectl describe pod <pod-name> |
查看 Pod 详细信息(事件、状态等) |
kubectl logs <pod-name> |
查看 Pod 的日志 |
kubectl logs -f <pod-name> |
实时跟随日志(类似 tail -f ) |
kubectl exec -it <pod-name> -- /bin/sh |
进入 Pod 的容器终端交互模式 |
示例:
# 运行一个名为 nginx 的 Pod
kubectl run nginx --image=nginx
# 查看日志
kubectl logs nginx
3. 部署应用(Deployment)
命令 | 说明 |
---|---|
kubectl create deployment <name> --image=<image> |
创建 Deployment |
kubectl get deployments |
查看所有 Deployment |
kubectl scale deployment/<name> --replicas=3 |
扩展副本数量 |
kubectl rollout status deployment/<name> |
查看部署状态(更新进度) |
示例:
# 创建一个名为 web 的 Deployment,镜像为 nginx
kubectl create deployment web --image=nginx
# 将其扩展到 3 个副本
kubectl scale deployment/web --replicas=3
4. 服务(Service)与网络
命令 | 说明 |
---|---|
kubectl expose deployment/<name> --port=80 --type=NodePort |
创建 Service 暴露 Deployment |
kubectl get services |
查看所有 Service |
kubectl port-forward <pod-name> 8080:80 |
将 Pod 的 80 端口映射到本地 8080 |
示例:
# 暴露 Deployment 的端口,并允许外部访问
kubectl expose deployment/web --port=80 --type=NodePort
# 本地端口转发临时测试
kubectl port-forward pod/nginx 8080:80
5. 配置文件操作
YAML 文件是 Kubernetes 的核心配置方式,推荐以下命令:
命令 | 说明 |
---|---|
kubectl apply -f <file.yaml> |
基于 YAML 文件创建/更新资源 |
kubectl delete -f <file.yaml> |
删除 YAML 文件定义的资源 |
kubectl get <resource> -o yaml |
以 YAML 格式输出资源配置(用于调试) |
示例:
# 使用配置文件创建 Deployment
kubectl apply -f deployment.yaml
6. 调试与问题排查
命令 | 场景 |
---|---|
kubectl describe <resource>/<name> |
查看资源详细状态(如错误原因) |
kubectl get events --sort-by='.metadata.creationTimestamp' |
查看集群事件(按时间排序) |
kubectl delete pod <pod-name> |
强制删除 Pod(触发重新调度) |
快捷小贴士
- 标签筛选:使用
-l
参数按标签过滤资源,例如:
kubectl get pods -l app=nginx
- 命令补全:启用
kubectl
的自动补全功能(需配置 Shell)。 - 命名空间切换:通过
kubectl config set-context --current --namespace=<namespace>
设置默认命名空间。
下一步学习建议
- 官方文档:kubectl 命令参考
- 交互式教程:Katacoda Kubernetes 训练
- 动手实验:在本地使用 Minikube 或在线环境练习。
需要任何进一步的场景演示或深入某个主题,可以随时告诉我!