k8s常用命令
Kubernetes(k8s)的命令行工具kubectl是管理集群和资源的核心工具,以下是日常开发和运维中最常用的命令,按场景分类整理:
一、集群基础
查看集群信息(控制平面、节点等)
kubectl cluster-info
查看所有节点(-o wide 显示详细信息)
kubectl get nodes
kubectl get nodes -o wide
查看节点详细描述(用于排查节点故障)
kubectl describe node <节点名称>
检查集群组件状态(kube-apiserver、kube-controller-manager等)
kubectl get componentstatuses
二、工作负载管理(Pod/Deployment/StatefulSet 等)
1. Pod 操作
查看当前命名空间的Pod(-o wide 显示IP和节点)
kubectl get pods
kubectl get pods -o wide
查看所有命名空间的Pod
kubectl get pods --all-namespaces
查看Pod详细信息(事件、容器、挂载等)
kubectl describe pod <pod名称>
创建Pod(从yaml文件)
kubectl create -f pod.yaml
启动/停止Pod(实际中一般通过控制器管理,不直接操作Pod)
kubectl delete pod <pod名称> # 删除后控制器会重建(如果由Deployment管理)
进入Pod的容器(-it 交互模式,-c 指定容器,默认第一个)
kubectl exec -it <pod名称> – /bin/
kubectl exec -it <pod名称> -c <容器名称> – /bin/sh
2. Deployment 操作(无状态应用)
查看Deployment
kubectl get deployments
kubectl get deploy # 缩写
查看Deployment管理的ReplicaSet
kubectl get rs
创建/更新Deployment(-f 指定yaml,–record 记录版本)
kubectl apply -f deployment.yaml --record
查看Deployment详细信息
kubectl describe deploy <deployment名称>
伸缩Deployment副本数(–replicas 指定数量)
kubectl scale deploy <deployment名称> --replicas=3
删除Deployment(会同时删除关联的Pod和ReplicaSet)
kubectl delete deploy <deployment名称>
3. StatefulSet 操作(有状态应用,如数据库)
查看StatefulSet
kubectl get statefulsets
kubectl get sts # 缩写
创建/更新StatefulSet
kubectl apply -f statefulset.yaml
伸缩副本数
kubectl scale sts <statefulset名称> --replicas=2
三、服务与网络(Service/Ingress)
1. Service 操作
查看Service(-o wide 显示ClusterIP和端口)
kubectl get services
kubectl get svc # 缩写
创建Service(从yaml)
kubectl apply -f service.yaml
暴露Deployment为Service(自动创建Service,–port 服务端口,–target-port 容器端口)
kubectl expose deploy <deployment名称> --port=80 --target-port=8080 --type=NodePort
查看Service详细信息(Endpoint、选择器等)
kubectl describe svc <service名称>
2. Ingress 操作(管理外部访问)
查看Ingress(需集群已部署Ingress控制器)
kubectl get ingresses
kubectl get ing # 缩写
创建/更新Ingress
kubectl apply -f ingress.yaml
四、配置与存储(ConfigMap/Secret/Volume)
1. ConfigMap(存储非敏感配置)
查看ConfigMap
kubectl get configmaps
kubectl get cm # 缩写
从文件创建ConfigMap(–from-file 指定文件)
kubectl create cm <cm名称> --from-file=app.conf
从键值对创建ConfigMap(–from-literal 键=值)
kubectl create cm <cm名称> --from-literal=env=prod --from-literal=log_level=info
2. Secret(存储敏感信息,如密码、证书)
查看Secret
kubectl get secrets
kubectl get secret # 缩写
创建通用Secret(–from-literal 键=值)
kubectl create secret generic <secret名称> --from-literal=db_password=123456
从文件创建Secret(如证书)
kubectl create secret tls <tls-secret名称> --cert=server.crt --key=server.key
3. PersistentVolume(PV)与 PersistentVolumeClaim(PVC)
查看PV
kubectl get pv
查看PVC
kubectl get pvc
创建PV/PVC
kubectl apply -f pv.yaml
kubectl apply -f pvc.yaml
五、日志与调试
查看Pod日志(-f 实时跟踪,–tail 显示最后N行)
kubectl logs <pod名称>
kubectl logs <pod名称> -f
kubectl logs <pod名称> --tail=100
kubectl logs <pod名称> -c <容器名称> # 多容器Pod指定容器
查看集群事件(按时间排序,排查故障)
kubectl get events --sort-by=‘.lastTimestamp’
检查资源配置是否符合API规范(验证yaml文件)
kubectl explain <资源类型> # 如 kubectl explain pod.spec
kubectl validate -f pod.yaml
查看资源依赖关系(如Pod关联的Service、PVC等)
kubectl describe pod <pod名称> | grep -i “related”
六、资源管理与限制
查看所有资源(Pod、Service、Deployment等)
kubectl get all
kubectl get all --all-namespaces
查看资源使用情况(需metrics-server组件)
kubectl top node # 节点资源使用率
kubectl top pod # Pod资源使用率
强制删除异常Pod(–grace-period=0 立即删除,–force 强制)
kubectl delete pod <pod名称> --grace-period=0 --force
七、命名空间操作
查看所有命名空间
kubectl get namespaces
kubectl get ns # 缩写
创建命名空间
kubectl create namespace <ns名称>
在指定命名空间操作资源(-n 指定命名空间)
kubectl get pods -n <ns名称>
kubectl apply -f deployment.yaml -n <ns名称>
切换默认命名空间(需安装kubens工具,或修改kubeconfig)
kubens <ns名称>
八、部署与更新
滚动更新Deployment镜像(–image 指定新镜像)
kubectl set image deploy <deployment名称> <容器名称>=<新镜像:版本>
查看Deployment更新历史
kubectl rollout history deploy <deployment名称>
回滚到上一版本(–to-revision 指定版本号)
kubectl rollout undo deploy <deployment名称>
kubectl rollout undo deploy <deployment名称> --to-revision=2
暂停/恢复滚动更新(更新过程中调整配置)
kubectl rollout pause deploy <deployment名称>
kubectl rollout resume deploy <deployment名称>
常用缩写与技巧
资源缩写:pods=po、deployments=deploy、services=svc、namespaces=ns、statefulsets=sts、configmaps=cm
输出格式:-o yaml(yaml 格式)、-o json(json 格式)、-o wide(详细信息)
过滤资源:kubectl get pods -l app=nginx(按标签过滤)
快速生成 yaml:kubectl create deploy nginx --image=nginx -o yaml --dry-run=client > deploy.yaml(–dry-run 仅生成文件不执行)
通过这些命令可以覆盖 k8s 日常管理的大部分场景,更复杂的操作可结合kubectl help或官方文档查询。