K8S是大型架构核心,下面我详解K8S命令@mikechen
一、查看集群信息
1、查看集群节点
kubectl get nodes
输出:
NAME STATUS ROLES
master01 Ready control-plane
node01 Ready worker
node02 Ready worker
查看更详细信息:
kubectl get nodes -o wide
2、查看集群状态
kubectl cluster-info
输出:
Kubernetes control plane is running at https://10.0.0.1:6443
CoreDNS is running at https://10.0.0.1:6443/api/v1
作用:
- 查看API Server地址
- 查看核心组件状态
二、Pod管理命令
3、查看Pod
最常用命令:
kubectl get pods
查看所有命名空间:
kubectl get pods -A
查看详细信息:
kubectl get pods -o wide
查看实时变化:
kubectl get pods -w
4、查看Pod详情
kubectl describe pod nginx
查看内容:
- IP地址
- 镜像信息
- 事件(Event)
- 挂载卷
- 资源限制
5、查看Pod日志
kubectl logs nginx
查看实时日志:
kubectl logs -f nginx
查看最近100行:
kubectl logs --tail=100 nginx
多容器Pod:
kubectl logs nginx -c app
6、进入Pod内部
类似Docker exec:
kubectl exec -it nginx -- bash
Alpine镜像:
kubectl exec -it nginx -- sh
用途:
- 排查问题
- 检查配置
- 测试网络
三、Deployment管理
7、查看Deployment
kubectl get deploy
详细查看:
kubectl describe deploy nginx
8、创建Deployment
kubectl create deployment nginx \
--image=nginx:latest
查看:
kubectl get deploy
9、扩容副本数
扩容到5个实例:
kubectl scale deployment nginx \
--replicas=5
查看:
kubectl get pods
扩容前:
nginx-1
扩容后:
nginx-1
nginx-2
nginx-3
nginx-4
nginx-5
10、滚动更新
升级镜像:
kubectl set image deployment/nginx \
nginx=nginx:1.27
查看升级状态:
kubectl rollout status deployment/nginx
11、版本回滚
查看历史版本:
kubectl rollout history deployment/nginx
回滚:
kubectl rollout undo deployment/nginx
指定版本回滚:
kubectl rollout undo deployment/nginx \
--to-revision=2
四、Service管理
12、查看Service
kubectl get svc
详细查看:
kubectl describe svc nginx
输出:
NAME TYPE CLUSTER-IP
nginx ClusterIP 10.96.0.10
13、暴露服务
创建Service:
kubectl expose deployment nginx \
--port=80 \
--target-port=80 \
--type=NodePort
查看:
kubectl get svc
五、配置文件管理
14、应用YAML配置
部署资源:
kubectl apply -f nginx.yaml
目录部署:
kubectl apply -f ./yaml/
查看变化:
kubectl diff -f nginx.yaml
这是生产环境最推荐方式。
15、删除资源
删除Pod:
kubectl delete pod nginx
删除Deployment:
kubectl delete deployment nginx
删除YAML资源:
kubectl delete -f nginx.yaml
七、生产环境排障命令组合
当线上服务出现故障时,大厂工程师通常按下面顺序排查:
第一步:查看Pod
kubectl get pods
第二步:查看详情
kubectl describe pod xxx
重点看:
Events
是否存在:
ImagePullBackOff
CrashLoopBackOff
OOMKilled
第三步:查看日志
kubectl logs -f xxx
第四步:进入容器
kubectl exec -it xxx -- bash
检查:
ps -ef
netstat -tunlp
curl
第五步:检查Service
kubectl get svc
第六步:检查节点
kubectl get nodes
八、面试高频问题
Q1:get和describe区别?
get
查看资源列表
kubectl get pods
describe
查看资源详细信息
kubectl describe pod nginx
Q2:apply和create区别?
create
第一次创建
kubectl create -f nginx.yaml
重复执行会报错。
apply
声明式管理
kubectl apply -f nginx.yaml
支持增量更新。
生产环境推荐:
kubectl apply
Q3:线上排查最常用哪几个命令?
TOP5:
kubectl get pods
kubectl describe pod
kubectl logs
kubectl exec
kubectl get events
总结
生产环境中使用频率最高的15个K8S命令如下:
| 分类 | 核心命令 |
|---|---|
| 集群管理 | get nodes、cluster-info |
| Pod管理 | get、describe、logs、exec |
| Deployment | create、scale、rollout |
| Service | get svc、expose |
| YAML管理 | apply、delete |
| 故障排查 | logs、describe、events |