kubectl 基础命令
kubectl 高频命令速查:资源查看、创建应用、日志调试、扩缩容与上下文管理。
kubectl get 查看资源
基本写法:查看指定类型资源
kubectl get <资源类型>
# 查看所有 Pod
kubectl get pods
基本写法:查看所有命名空间的资源
kubectl get <资源类型> -A
# 查看所有命名空间的 Pod
kubectl get pods -A
基本写法:查看指定命名空间资源
kubectl get <资源类型> -n <命名空间>
# 查看 kube-system 命名空间的 Pod
kubectl get pods -n kube-system
基本写法:显示详细信息
kubectl get <资源类型> -o wide
# 查看 Pod 详细信息含 IP 和节点
kubectl get pods -o wide
基本写法:输出 YAML 格式
kubectl get <资源类型> <名称> -o yaml
# 输出 Pod 的完整 YAML
kubectl get pod nginx -o yaml
基本写法:按标签过滤
kubectl get <资源类型> -l <标签选择器>
# 查看 app=nginx 的 Pod
kubectl get pods -l app=nginx
kubectl describe 查看详情
基本写法:查看资源详细信息
kubectl describe <资源类型> <名称>
# 查看 nginx Pod 的详细信息
kubectl describe pod nginx
基本写法:查看指定命名空间资源
kubectl describe <资源类型> <名称> -n <命名空间>
# 查看 kube-system 命名空间的 Pod
kubectl describe pod kube-apiserver -n kube-system
基本写法:查看节点详情
kubectl describe node <节点名>
# 查看节点详细信息
kubectl describe node node1
kubectl create 创建资源
基本写法:创建 Deployment
kubectl create deployment <名称> --image=<镜像>
# 创建 nginx Deployment
kubectl create deployment nginx --image=nginx
基本写法:指定副本数创建
kubectl create deployment <名称> --image=<镜像> --replicas=<数量>
# 创建 3 副本的 nginx Deployment
kubectl create deployment nginx --image=nginx --replicas=3
基本写法:创建命名空间
kubectl create namespace <名称>
# 创建新命名空间
kubectl create namespace dev
基本写法:创建 Secret
kubectl create secret generic <名称> --from-literal=<键>=<值>
# 创建包含密码的 Secret
kubectl create secret generic db-secret --from-literal=password=secret123
kubectl apply 应用配置
基本写法:应用 YAML 文件
kubectl apply -f <文件>
# 应用 deployment.yaml
kubectl apply -f deployment.yaml
基本写法:应用目录下所有文件
kubectl apply -f <目录>
# 应用 k8s 目录下所有 YAML
kubectl apply -f ./k8s/
基本写法:从 URL 应用
kubectl apply -f <URL>
# 从 URL 应用配置
kubectl apply -f https://raw.githubusercontent.com/example/repo/main/deploy.yaml
基本写法:使用 kustomize
kubectl apply -k <目录>
# 使用 kustomize 应用配置
kubectl apply -k ./overlays/prod
kubectl delete 删除资源
基本写法:删除指定资源
kubectl delete <资源类型> <名称>
# 删除 nginx Pod
kubectl delete pod nginx
基本写法:从文件删除资源
kubectl delete -f <文件>
# 删除 deployment.yaml 中定义的资源
kubectl delete -f deployment.yaml
基本写法:按标签删除
kubectl delete <资源类型> -l <标签选择器>
# 删除所有 app=test 的 Pod
kubectl delete pods -l app=test
基本写法:强制删除 Pod
kubectl delete pod <名称> --grace-period=0 --force
# 强制立即删除 Pod
kubectl delete pod nginx --grace-period=0 --force
kubectl exec 进入容器
基本写法:进入容器 shell
kubectl exec -it <Pod> -- <shell>
# 进入 nginx Pod 的 bash
kubectl exec -it nginx -- bash
基本写法:在容器中执行命令
kubectl exec <Pod> -- <命令>
# 查看 Pod 中的进程
kubectl exec nginx -- ps aux
基本写法:指定容器执行
kubectl exec -it <Pod> -c <容器名> -- <shell>
# 进入指定容器
kubectl exec -it pod1 -c sidecar -- sh
kubectl logs 查看日志
基本写法:查看 Pod 日志
kubectl logs <Pod>
# 查看 nginx Pod 的日志
kubectl logs nginx
基本写法:实时跟踪日志
kubectl logs -f <Pod>
# 实时跟踪日志输出
kubectl logs -f nginx
基本写法:查看指定容器日志
kubectl logs <Pod> -c <容器名>
# 查看 sidecar 容器的日志
kubectl logs pod1 -c sidecar
基本写法:查看前次容器日志
kubectl logs <Pod> --previous
# 查看容器崩溃前的日志
kubectl logs nginx --previous
基本写法:查看指定时间段的日志
kubectl logs <Pod> --since=<时间>
# 查看最近 1 小时的日志
kubectl logs nginx --since=1h
kubectl scale 伸缩副本
基本写法:扩缩容 Deployment
kubectl scale deployment <名称> --replicas=<数量>
# 将 nginx 扩展到 5 个副本
kubectl scale deployment nginx --replicas=5
基本写法:缩容到 0
kubectl scale deployment <名称> --replicas=0
# 停止所有 nginx 副本
kubectl scale deployment nginx --replicas=0
基本写法:基于文件扩缩容
kubectl scale -f <文件> --replicas=<数量>
# 基于 YAML 文件扩缩容
kubectl scale -f deployment.yaml --replicas=3
kubectl port-forward 端口转发
基本写法:转发 Pod 端口
kubectl port-forward <Pod> <宿主端口>:<容器端口>
# 将本地 8080 转发到 Pod 的 80
kubectl port-forward nginx 8080:80
基本写法:转发 Service 端口
kubectl port-forward svc/<Service> <宿主端口>:<服务端口>
# 转发 Service 端口到本地
kubectl port-forward svc/nginx 8080:80
基本写法:绑定指定地址
kubectl port-forward <Pod> <地址>:<宿主端口>:<容器端口>
# 绑定到所有地址
kubectl port-forward nginx 0.0.0.0:8080:80
kubectl config 配置管理
基本写法:查看当前上下文
kubectl config current-context
# 查看当前使用的上下文
kubectl config current-context
基本写法:切换上下文
kubectl config use-context <上下文>
# 切换到生产环境上下文
kubectl config use-context prod-cluster
基本写法:列出所有上下文
kubectl config get-contexts
# 列出所有可用的上下文
kubectl config get-contexts
基本写法:设置默认命名空间
kubectl config set-context --current --namespace=<命名空间>
# 设置当前上下文的默认命名空间
kubectl config set-context --current --namespace=dev