分享:

Kubernetes 命令速查

kubectl 全命令速查手册,涵盖集群管理、工作负载、网络、存储、安全等,支持搜索和一键复制

集群信息(8)

查看集群信息

显示集群 Master 和服务的端点地址

kubectl cluster-info

查看 API 版本

列出集群支持的 API 版本列表

kubectl api-versions

查看 API 资源

列出集群中可用的 API 资源类型

kubectl api-resources

查看组件状态

查看集群控制平面组件(scheduler、controller-manager 等)状态

kubectl get componentstatuses

查看当前上下文

显示当前使用的 kubeconfig 上下文

kubectl config current-context

切换上下文

切换到指定的集群上下文

kubectl config use-context <context-name>

查看所有上下文

列出所有可用的 kubeconfig 上下文

kubectl config get-contexts

设置默认命名空间

为当前上下文设置默认命名空间

kubectl config set-context --current --namespace=xxx

Namespace(3)

查看命名空间

列出集群中所有命名空间

kubectl get namespaces
# 简写
kubectl get ns

创建命名空间

创建新的命名空间

kubectl create namespace <name>
# 简写
kubectl create ns <name>

删除命名空间

删除指定命名空间及其下所有资源

kubectl delete namespace <name>
kubectl delete ns <name>

Pod 管理(8)

查看 Pod 列表

列出 Pod,支持多种输出格式和命名空间

kubectl get pods
# 显示更多列(节点、IP 等)
kubectl get pods -o wide
# 所有命名空间
kubectl get pods --all-namespaces
# 指定命名空间
kubectl get pods -n <namespace>

查看 Pod 详情

显示 Pod 的详细配置、事件和状态

kubectl describe pod <pod-name>
kubectl describe pod <pod-name> -n <namespace>

创建 Pod

使用 run 命令快速创建单容器 Pod

kubectl run nginx --image=nginx
kubectl run nginx --image=nginx --port=80
kubectl run nginx --image=nginx --restart=Never

删除 Pod

删除指定 Pod

kubectl delete pod <pod-name>
kubectl delete pod <pod-name> -n <namespace>
# 强制删除
kubectl delete pod <pod-name> --force --grace-period=0

进入容器

在运行中的 Pod 容器内执行命令

kubectl exec -it <pod-name> -- bash
kubectl exec -it <pod-name> -c <container-name> -- sh
# 执行单条命令
kubectl exec <pod-name> -- ls /app

端口转发

将本地端口转发到 Pod 端口,用于本地访问

kubectl port-forward pod/<pod-name> 8080:80
kubectl port-forward svc/<svc-name> 8080:80 -n <namespace>

复制文件

在 Pod 与本地之间复制文件

# 从 Pod 复制到本地
kubectl cp <namespace>/<pod-name>:/path/file ./local-file
# 从本地复制到 Pod
kubectl cp ./local-file <namespace>/<pod-name>:/path/file

查看 Pod 资源使用

显示 Pod 的 CPU 和内存使用量(需 metrics-server)

kubectl top pod
kubectl top pod -n <namespace>
kubectl top pod --sort-by=cpu

Deployment(9)

创建 Deployment

创建 Deployment 工作负载

kubectl create deployment nginx --image=nginx
kubectl create deployment nginx --image=nginx --replicas=3

查看 Deployment

列出 Deployment 及其副本状态

kubectl get deployments
kubectl get deploy
kubectl get deploy -o wide

更新镜像

更新 Deployment 中容器的镜像版本

kubectl set image deployment/<name> <container>=<image>:<tag>
kubectl set image deployment/nginx nginx=nginx:1.25

扩缩容

调整 Deployment 的副本数量

kubectl scale deployment <name> --replicas=5
kubectl scale deploy nginx --replicas=3

自动扩缩容 HPA

创建水平 Pod 自动扩缩容

kubectl autoscale deployment <name> --min=2 --max=10 --cpu-percent=80

回滚

回滚到上一个或指定版本

kubectl rollout undo deployment/<name>
kubectl rollout undo deployment/nginx --to-revision=2

查看发布历史

查看 Deployment 的滚动更新历史

kubectl rollout history deployment/<name>
kubectl rollout history deployment/nginx --revision=2

暂停/恢复发布

暂停或恢复 Deployment 的滚动更新

kubectl rollout pause deployment/<name>
kubectl rollout resume deployment/<name>

重启 Deployment

重启 Deployment 触发滚动更新

kubectl rollout restart deployment/<name>

Service(4)

创建 Service

为 Deployment 或 Pod 创建 Service

kubectl expose deployment nginx --port=80 --target-port=80
kubectl expose pod nginx --port=80 --name=nginx-svc

查看 Service

列出 Service 及其 ClusterIP、端口

kubectl get svc
kubectl get services
kubectl get svc -o wide

查看 Endpoints

查看 Service 背后的 Pod IP 列表

kubectl get endpoints
kubectl get ep

删除 Service

删除指定 Service

kubectl delete svc <service-name>
kubectl delete service nginx -n <namespace>

ConfigMap & Secret(7)

创建 ConfigMap(literal)

从字面量创建 ConfigMap

kubectl create configmap my-config --from-literal=key1=value1 --from-literal=key2=value2

创建 ConfigMap(from file)

从文件或目录创建 ConfigMap

kubectl create configmap my-config --from-file=config.yml
kubectl create configmap my-config --from-file=dir/

查看 ConfigMap

列出和查看 ConfigMap 详情

kubectl get configmaps
kubectl get cm
kubectl describe configmap <name>

创建 Secret(generic)

创建通用 Secret

kubectl create secret generic my-secret --from-literal=password=xxx
kubectl create secret generic my-secret --from-file=./secret.txt

创建 Secret(tls)

创建 TLS 证书 Secret

kubectl create secret tls my-tls --cert=path/tls.crt --key=path/tls.key

创建 Secret(docker-registry)

创建镜像拉取凭证 Secret

kubectl create secret docker-registry regcred --docker-server=registry.example.com --docker-username=user --docker-password=pass

查看 Secret

列出 Secret,Base64 解码查看内容

kubectl get secrets
kubectl get secret <name> -o yaml
# 解码 base64
echo '<base64-value>' | base64 -d

持久化存储(3)

PersistentVolume

查看集群中的 PV 资源

kubectl get pv
kubectl describe pv <pv-name>

PersistentVolumeClaim

查看 PVC 及其绑定状态

kubectl get pvc
kubectl get pvc -n <namespace>
kubectl describe pvc <pvc-name>

StorageClass

查看存储类

kubectl get sc
kubectl get storageclass
kubectl describe storageclass <name>

Ingress(2)

查看 Ingress

列出 Ingress 资源

kubectl get ingress
kubectl get ing
kubectl describe ingress <name>

创建 Ingress

创建 Ingress 定义路由规则

kubectl create ingress example --rule='example.com/=svc:80'
kubectl create ingress example --rule='foo.com/bar=svc:8080'

Job & CronJob(4)

创建 Job

创建一次性任务 Job

kubectl create job my-job --image=busybox -- echo hello
kubectl create job my-job --from=cronjob/my-cronjob

查看 Job

列出 Job 及其完成状态

kubectl get jobs
kubectl get job <name> -o yaml

创建 CronJob

创建定时任务 CronJob

kubectl create cronjob my-cron --image=busybox --schedule='*/1 * * * *' -- echo hello

查看 CronJob

列出 CronJob

kubectl get cronjobs
kubectl get cj

RBAC 权限(5)

查看 ClusterRole

列出集群级别的角色

kubectl get clusterroles
kubectl describe clusterrole <name>

创建 Role

创建命名空间级别的 Role

kubectl create role pod-reader --verb=get,list,watch --resource=pods

创建 RoleBinding

将 Role 绑定到用户或组

kubectl create rolebinding read-pods --role=pod-reader --user=user1 --namespace=default

创建 ClusterRoleBinding

将 ClusterRole 绑定到用户或组

kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin --user=user1

检查权限

检查当前用户是否具有某操作的权限

kubectl auth can-i create pods
kubectl auth can-i --list
kubectl auth can-i create pods --as=user1

节点管理(8)

查看节点

列出集群节点及其状态

kubectl get nodes
kubectl get nodes -o wide

查看节点详情

显示节点的详细配置和资源

kubectl describe node <node-name>

标记节点不可调度

将节点标记为不可调度(维护前)

kubectl cordon <node-name>

恢复节点调度

取消 cordon,恢复节点调度

kubectl uncordon <node-name>

驱逐节点上的 Pod

排空节点,将 Pod 迁移到其他节点

kubectl drain <node-name>
kubectl drain <node-name> --ignore-daemonsets --delete-emptydir-data

给节点打标签

为节点添加或修改标签

kubectl label node <node-name> disk=ssd
kubectl label node <node-name> disk-

给节点打污点

为节点添加污点,控制 Pod 调度

kubectl taint nodes <node-name> key=value:NoSchedule
kubectl taint nodes <node-name> key:NoSchedule-

查看节点资源使用

显示节点的 CPU 和内存使用量

kubectl top node
kubectl top node --sort-by=memory

日志与调试(6)

查看日志

查看 Pod 容器日志

kubectl logs <pod-name>
kubectl logs -f <pod-name>
kubectl logs <pod-name> --previous
kubectl logs <pod-name> -c <container>
kubectl logs <pod-name> --tail=100

查看事件

查看集群事件

kubectl get events
kubectl get events -n <namespace> --sort-by='.lastTimestamp'

运行调试容器

在 Pod 中运行临时调试容器

kubectl debug <pod-name> -it --image=busybox --target=<container>

查看资源的 YAML

以 YAML 格式输出资源定义

kubectl get pod <name> -o yaml
kubectl get deploy <name> -o yaml

试运行

模拟应用配置,不实际执行

kubectl apply --dry-run=client -o yaml -f deployment.yaml
kubectl apply --dry-run=server -f deployment.yaml

解释资源字段

查看资源类型的字段说明

kubectl explain pod
kubectl explain pod.spec.containers

Helm(8)

添加仓库

添加 Helm Chart 仓库

helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

搜索 Chart

在仓库中搜索 Chart

helm search repo nginx
helm search repo bitnami/nginx

安装 Chart

安装 Helm Release

helm install my-nginx bitnami/nginx
helm install my-nginx bitnami/nginx -f values.yaml
helm install my-nginx bitnami/nginx --set replicaCount=3

查看 Release

列出已安装的 Helm Release

helm list
helm list -A
helm list --all

升级 Release

升级 Helm Release 到新版本或配置

helm upgrade my-nginx bitnami/nginx
helm upgrade my-nginx bitnami/nginx -f values.yaml

回滚 Release

回滚 Helm Release 到指定版本

helm rollback my-nginx
helm rollback my-nginx 2

卸载 Release

卸载 Helm Release

helm uninstall my-nginx
helm uninstall my-nginx --keep-history

查看 values

查看 Chart 的默认 values

helm show values bitnami/nginx
helm get values my-nginx

相关工具