kubectl命令介绍(K8s命令行客户端)

文章目录

  • [kubectl 全面指南:Kubernetes 的瑞士军刀](#kubectl 全面指南:Kubernetes 的瑞士军刀)
    • [一、什么是 kubectl?](#一、什么是 kubectl?)
    • [二、kubectl 的工作原理](#二、kubectl 的工作原理)
    • [三、kubectl 基础命令](#三、kubectl 基础命令)
      • [1. 查看资源(get)](#1. 查看资源(get))
      • [2. 创建资源(apply / create)](#2. 创建资源(apply / create))
      • [3. 删除资源(delete)](#3. 删除资源(delete))
      • [4. 查看详细信息(describe)](#4. 查看详细信息(describe))
      • [5. 查看日志(logs)](#5. 查看日志(logs))
      • [6. 进入容器(exec)](#6. 进入容器(exec))
      • [7. 端口转发(port-forward)](#7. 端口转发(port-forward))
    • 四、命名空间(Namespace)
    • 五、上下文管理(Context)
    • 六、输出格式与过滤
    • [七、标签与选择器(Label & Selector)](#七、标签与选择器(Label & Selector))
    • 八、滚动更新与回滚
    • 九、调试与排障技巧
      • [1. 快速定位问题](#1. 快速定位问题)
      • [2. 查看事件(Events)](#2. 查看事件(Events))
      • [3. 使用临时调试容器(Ephemeral Container)](#3. 使用临时调试容器(Ephemeral Container))
    • [十、kubectl 常用技巧](#十、kubectl 常用技巧)
      • [1. alias 简化命令](#1. alias 简化命令)
      • [2. 自动补全](#2. 自动补全)
      • [3. dry-run 模式](#3. dry-run 模式)
      • [4. explain 查看字段说明](#4. explain 查看字段说明)
    • [十一、声明式 vs 命令式](#十一、声明式 vs 命令式)
    • 十二、最佳实践
      • [1. 使用 YAML 管理资源](#1. 使用 YAML 管理资源)
      • [2. 避免直接修改线上资源](#2. 避免直接修改线上资源)
      • [3. 合理使用 Namespace](#3. 合理使用 Namespace)
      • [4. 配合工具使用](#4. 配合工具使用)
    • 十三、总结

kubectl 全面指南:Kubernetes 的瑞士军刀

在使用 Kubernetes 的过程中,kubectl 是每个工程师最常用、也是最重要的工具之一。它就像 Kubernetes 的"命令行控制台",通过它你可以完成从资源创建、部署、调试到排障的几乎所有操作。

本文将从基础到进阶,系统介绍 kubectl 的核心概念、常用命令以及最佳实践。


一、什么是 kubectl?

kubectl 是 Kubernetes 官方提供的命令行工具,用于与 Kubernetes API Server 进行交互。

简单来说:

kubectl = Kubernetes 的 CLI(命令行客户端)

它通过 HTTP 请求调用 Kubernetes API,实现对集群资源的管理。


二、kubectl 的工作原理

kubectl 的执行流程如下:

  1. 读取本地 kubeconfig 配置(默认在 ~/.kube/config
  2. 确定目标集群、用户和上下文
  3. 构造 REST 请求
  4. 调用 API Server
  5. 返回结果并格式化输出

三、kubectl 基础命令

1. 查看资源(get)

bash 复制代码
kubectl get pods
kubectl get nodes
kubectl get svc

常用参数:

bash 复制代码
kubectl get pods -o wide
kubectl get pods -A
kubectl get pods -n kube-system

2. 创建资源(apply / create)

推荐使用 apply(声明式):

bash 复制代码
kubectl apply -f deployment.yaml

create(命令式):

bash 复制代码
kubectl create deployment nginx --image=nginx

3. 删除资源(delete)

bash 复制代码
kubectl delete pod pod-name
kubectl delete -f deployment.yaml

4. 查看详细信息(describe)

bash 复制代码
kubectl describe pod pod-name

用于排查问题非常关键。


5. 查看日志(logs)

bash 复制代码
kubectl logs pod-name
kubectl logs -f pod-name
kubectl logs pod-name -c container-name

6. 进入容器(exec)

bash 复制代码
kubectl exec -it pod-name -- /bin/bash

用于调试容器内部环境。


7. 端口转发(port-forward)

bash 复制代码
kubectl port-forward pod-name 8080:80

适用于本地调试服务。


四、命名空间(Namespace)

Kubernetes 使用 Namespace 进行资源隔离:

bash 复制代码
kubectl get pods -n dev
kubectl config set-context --current --namespace=dev

五、上下文管理(Context)

kubectl 支持多集群切换:

bash 复制代码
kubectl config get-contexts
kubectl config use-context my-cluster

六、输出格式与过滤

kubectl 支持多种输出格式:

bash 复制代码
kubectl get pods -o yaml
kubectl get pods -o json
kubectl get pods -o wide

配合 JSONPath:

bash 复制代码
kubectl get pods -o jsonpath='{.items[*].metadata.name}'

七、标签与选择器(Label & Selector)

标签是 Kubernetes 资源管理的核心:

bash 复制代码
kubectl get pods -l app=nginx

添加标签:

bash 复制代码
kubectl label pod pod-name env=prod

八、滚动更新与回滚

查看 rollout 状态:

bash 复制代码
kubectl rollout status deployment/nginx

回滚版本:

bash 复制代码
kubectl rollout undo deployment/nginx

查看历史版本:

bash 复制代码
kubectl rollout history deployment/nginx

九、调试与排障技巧

1. 快速定位问题

bash 复制代码
kubectl get pods
kubectl describe pod pod-name
kubectl logs pod-name

2. 查看事件(Events)

bash 复制代码
kubectl get events --sort-by=.metadata.creationTimestamp

3. 使用临时调试容器(Ephemeral Container)

bash 复制代码
kubectl debug pod-name -it --image=busybox

十、kubectl 常用技巧

1. alias 简化命令

bash 复制代码
alias k=kubectl

2. 自动补全

bash 复制代码
source <(kubectl completion bash)

3. dry-run 模式

bash 复制代码
kubectl apply -f deployment.yaml --dry-run=client

4. explain 查看字段说明

bash 复制代码
kubectl explain deployment.spec

十一、声明式 vs 命令式

模式 特点 推荐程度
命令式 快速、适合测试 ⭐⭐
声明式 可版本化、可回滚 ⭐⭐⭐⭐⭐

建议生产环境始终使用:

bash 复制代码
kubectl apply -f xxx.yaml

十二、最佳实践

1. 使用 YAML 管理资源

  • 配合 Git 版本控制
  • 支持 GitOps

2. 避免直接修改线上资源

  • 使用 CI/CD 管道更新

3. 合理使用 Namespace

  • 按环境划分(dev / staging / prod)

4. 配合工具使用

  • kustomize
  • helm

十三、总结

kubectl 是 Kubernetes 的核心操作工具,掌握它意味着你已经具备了操作 Kubernetes 集群的基本能力。

可以用一句话总结:

kubectl 是连接开发者与 Kubernetes 集群的桥梁。

熟练掌握 kubectl,不仅能提升开发效率,也能在故障排查时节省大量时间。

相关推荐
CJY6217 小时前
k8spod管理
云原生·容器·kubernetes
2601_962218477 小时前
万象生鲜系统区块链溯源技术帮助生鲜企业搭建食品安全数字化体系
大数据·运维·微服务·云原生·架构
Orange_sparkle10 小时前
从 Docker 到 Doris:建立后端基础设施全景图
运维·docker·ai·容器·claude code
gx234811 小时前
控制器管理
docker·容器·kubernetes
Henry-SAP12 小时前
SAP独立需求与相关需求的区别解析
人工智能·云原生·sap·erp
白清羽12 小时前
7.3系统安装docker
运维·docker·容器
GGG76614 小时前
Python 运维自动化:psutil+IPy 系统与网络信息采集深度实战
运维·python·云原生·pip
dazhong201214 小时前
Docker 入门篇(八)-- CentOS7 安装 MySQL 8
mysql·docker·容器
w2005122415 小时前
Pod管理
linux·服务器·云原生·容器·k8s·podman
sryyd_0216 小时前
Kubernetes Pod 管理从入门到实战:命令、YAML 与生命周期全解析
云原生·容器·kubernetes