K8s (Kubernetes) 常用命令清单
命令格式说明
kubectl 命令通常遵循以下格式:
kubectl [command] [TYPE] [NAME] [flags]
命令 资源类型 资源名称 标记
command: 要执行的操作,
|
get |
获取 |
|
describe |
描述 |
|
create |
创建 |
|
delete |
删除 |
|
apply |
应用文件创建 |
|
exec |
进入pod容器 |
TYPE: 资源类型
pod
service
deployment
node
label
namespace
NAME: 资源名称(区分大小写)。
flags: 可选标志
-n namespace,
--all-namespaces,
-o yaml
--name
--network
一些资源的简写
节点nodes no
命名空间namespace ns
资源pod po
副本控制器replicasets rs
服务service svc
deployments deploy
基础命令(增删改查)
|
命令 |
说明 |
示例 |
|
kubectl get |
列出一个或多个资源 |
kubectl get pods 、kubectl get pods,svc |
|
kubectl describe |
显示资源的详细状态 |
kubectl describe pod my-pod |
|
kubectl create |
根据文件或命令行输入创建资源 |
kubectl create -f config.yaml |
|
kubectl apply |
根据文件或命令行输入创建资源配置,更安全 |
kubectl apply -f config.yaml |
|
kubectl delete |
根据文件或者命令行输入删除资源 |
kubectl delete -f config.yaml、 kubectl delete pod my-pod |
|
kubectl edit |
编辑服务器上的资源 |
kubectl edit deployment my-deploy |
|
kubectl explain |
查看资源的文档字段 |
kubectl explain pod.spec |
create和apply的区别
|
对比维度 |
kubectl create |
kubectl apply |
|
核心语义 |
仅 “创建” 新资源 |
声明式 “配置 / 同步” 资源状态 |
|
资源已存在时 |
直接报错,无法执行 |
对比差异并更新资源 |
|
幂等性 |
不具备(重复执行失败) |
具备(重复执行仅同步差异) |
|
适用场景 |
一次性创建全新资源 |
持续维护 / 更新资源配置 |
|
安全性 |
低(无法处理已有资源) |
高(仅修改差异,避免误操作) |
命名空间操作namespace ns
作用:用来隔离资源
|
命令 |
说明 |
示例 |
|
kubectl get namespaces/kubectl get ns |
查看命名空间 |
kubectl get ns |
|
kubectl create namespace |
创建命名空间 |
kubectl create ns my-ns |
|
kubectl delete ns |
删除命名空间 |
kubectl delete ns abc |
|
kubectl config set-context --current --namespace= |
设置当前上下文的默认命名空间 |
kubectl config set-context --current --namespace=my-ns |
|
-n <namespace> |
指定操作的命名空间 |
kubectl get pods -n kube-system |
|
-A / --all-namespaces |
在所有命名空间中执行操作 |
默认命名空间
default 创建资源时没有指定命名空间,默认在这里
kube-system k8s系统创建对象使用的命名空间
kube-public 自动创建,在这里的资源柯被所有人访问
kube-node-lease 集群节点之间的心跳维护
Deployment / ReplicaSet 操作
命令 说明 示例
kubectl get deployments 列出所有部署 kubectl get deployments
kubectl scale deployment <deploy-name> --replicas=<number> 扩缩容 Deployment kubectl scale deploy my-app --replicas=3
kubectl set image deployment/<deploy-name> <container-name>=<new-image> 滚动更新 Deployment 的镜像 kubectl set image deploy/my-app nginx=nginx:1.20
kubectl rollout status deployment/<deploy-name> 查看滚动更新状态 kubectl rollout status deploy/my-app
kubectl rollout history deployment/<deploy-name> 查看滚动更新历史 kubectl rollout history deploy/my-app
kubectl rollout undo deployment/<deploy-name> 回滚到上一个版本 kubectl rollout undo deploy/my-app
kubectl rollout undo deployment/<deploy-name> --to-revision=<number> 回滚到指定版本 kubectl rollout undo deploy/my-app --to-revision=2
Service / Ingress 操作
命令 说明 示例
kubectl get services/kubectl get svc 列出所有服务 kubectl get svc
kubectl get ingress/kubectl get ing 列出所有 Ingress kubectl get ing
kubectl expose deployment <name> --type=LoadBalancer --port=<port> 为 Deployment 创建 Service
kubectl expose deploy my-app --type=NodePort --port=80
配置和上下文操作
命令 说明 示例
kubectl get configmaps/kubectl get cm 列出所有 ConfigMap kubectl get cm
kubectl get secrets 列出所有 Secret kubectl get secrets
kubectl config get-contexts 列出所有上下文 kubectl config get-contexts
kubectl config use-context <context-name> 切换到指定上下文 kubectl config use-context prod-cluster
kubectl config current-context 显示当前上下文 kubectl config current-context
节点和集群管理
命令 说明 示例
kubectl get nodes -o wide 列出所有节点及详细信息 kubectl get nodes -o wide
kubectl describe node <node-name> 查看节点的详细信息 kubectl describe node node01
kubectl top node 显示节点的资源使用情况 kubectl top node
kubectl cordon <node-name> 将节点标记为不可调度 kubectl cordon node01
kubectl uncordon <node-name> 将节点标记为可调度 kubectl uncordon node01
kubectl drain <node-name> --ignore-daemonsets 排空节点以准备维护 kubectl drain node01 --ignore-daemonsets
kubectl cluster-info 显示集群基本信息 kubectl cluster-info
高级输出和调试
命令 说明 示例
kubectl get ... -o yaml 以 YAML 格式输出 kubectl get pod my-pod -o yaml
kubectl get ... -o json 以 JSON 格式输出 kubectl get pod my-pod -o json
kubectl get ... -o wide 以扩展格式输出(更多列) kubectl get pods -o wide
kubectl get ... -o name 仅输出资源名称 kubectl get pods -o name
kubectl get ... --show-labels 列出资源时显示所有标签 kubectl get pods --show-labels
kubectl get ... -l app=nginx 根据标签选择器过滤资源 kubectl get pods -l app=nginx
kubectl run -it --rm --image=busybox test-pod -- /bin/sh 运行一个临时调试 Pod(退出后自动删除) kubectl run -it --rm --image=busybox test-pod -- /bin/sh
kubectl debug -it <pod-name> --image=busybox --target=<container-name> 为正在运行的 Pod 创建一个临时调试容器 kubectl debug -it my-pod --image=busybox
实用技巧和组合命令
持续监控 Pod 状态变化:
bash
kubectl get pods -w
一键进入第一个 Pod 的 Shell(适用于只有一个 Pod 的情况):
bash
kubectl exec -it $(kubectl get pod -o name | head -1) -- /bin/bash
查看 Pod 的完整 YAML 定义(用于备份或模板):
bash
kubectl get pod my-pod -o yaml --export > my-pod-backup.yaml
注意:--export 标志在较新版本中已被弃用,可以直接使用 kubectl get pod my-pod -o yaml > my-pod-backup.yaml。
强制删除卡在 "Terminating" 状态的 Pod:
bash
kubectl delete pod <pod-name> --force --grace-period=0
根据标签删除所有 Pod:
bash
kubectl delete pods -l app=my-app
希望这份总结能帮助您更高效地使用 Kubernetes!多加练习,这些命令会变得像肌肉记忆一样自然。
更多推荐



所有评论(0)