kubectl 命令详解

kubectl 是与 Kubernetes 交互的官方命令行工具,所有针对资源的增删改查、日志查看、端口转发都靠它完成。掌握常用子命令与参数,是使用集群的日常基本功。

基本语法

kubectl 的命令结构是"动作 + 资源类型 + 名称 + 参数":

kubectl [子命令] [资源类型] [资源名称] [-n 命名空间] [-o 输出格式]
kubectl get pod my-pod -n default -o wide

常用子命令表

子命令作用典型示例
get列出资源kubectl get pods
describe查看资源详细事件kubectl describe pod web-0
logs查看容器日志kubectl logs -f deploy/nginx
exec进入容器执行命令kubectl exec -it pod-1 -- bash
apply声明式创建/更新kubectl apply -f app.yaml
delete删除资源kubectl delete pod web-0
scale调整副本数kubectl scale deploy nginx --replicas=3
rollout管理滚动更新kubectl rollout status deploy nginx

查看与输出格式

-o 控制输出格式,-n 指定命名空间(默认 default),-l 按标签过滤:

kubectl get pods -n kube-system          # 指定命名空间
kubectl get pods -o wide                 # 追加节点 IP 等列
kubectl get deploy nginx -o yaml         # 导出完整 yaml
kubectl get pods -l app=nginx            # 只列出带 app=nginx 标签的
kubectl get all -A                       # 查看所有命名空间下的主要资源
# NAME                        READY   STATUS    RESTARTS   AGE
# pod/nginx-7d9c5d6b9f-abc12  1/1     Running   0          4h

describe 比 get 信息更全,会列出事件(Events),排查"为什么起不来"时先看它:

kubectl describe pod nginx-7d9c5d6b9f-abc12
# Events:
#   Type    Reason     Age   From               Message
#   Normal  Scheduled  4h    default-scheduler  Successfully assigned...

日志与进入容器

logs 加 -f 跟踪输出、--tail 只看末尾行;exec 带 -it 进入交互式 shell:

kubectl logs -f nginx-7d9c5d6b9f-abc12        # 跟踪日志
kubectl logs nginx-7d9c5d6b9f-abc12 --tail=50 # 只看最后 50 行
kubectl exec -it nginx-7d9c5d6b9f-abc12 -- bash   # 进入容器
kubectl exec nginx-7d9c5d6b9f-abc12 -- ls /etc/nginx

kubectl apply 与 create 的区别

两者都能创建资源,但理念不同:

方式本质适用
kubectl create命令式,重复执行会报已存在临时、交互式操作
kubectl apply声明式,按 yaml 期望状态收敛,重复执行安全管理集群资源的主方式
kubectl create deployment nginx --image=nginx:1.27   # 快速创建
kubectl apply -f nginx-deploy.yaml                   # 推荐:文件即配置
kubectl apply -f nginx-deploy.yaml                   # 再次执行只是确认无变化

自动补全

bash 与 zsh 都支持补全,配合别名能明显提速:

echo 'source <(kubectl completion bash)' >> ~/.bashrc
alias k=kubectl
echo 'complete -o default -F __start_kubectl k' >> ~/.bashrc
source ~/.bashrc
k get nodes      # 现在 k 就是 kubectl,还能按 Tab 补全

小结:kubectl 高频三板斧是 get(看现状)、describe(查事件)、logs/exec(进现场);管理资源以 apply -f 声明式为主。多记 -n、-o、-l 三个参数,效率会高出很多。

笔记加载中…