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,不仅能提升开发效率,也能在故障排查时节省大量时间。

相关推荐
又来敲代码了2 小时前
k8s的部署
linux·运维·云原生·容器·kubernetes
炸裂狸花猫3 小时前
开源身份认证与访问管理平台 - Keycloak(二)
docker·云原生·容器·kubernetes·开源·keycloak·sso
D4c-lovetrain3 小时前
Linux个人心得29(k8s的一些个人理解)
linux·运维·kubernetes
炸裂狸花猫3 小时前
开源身份认证与访问管理平台 - Keycloak(一)
docker·云原生·kubernetes·开源·devops
rustfs3 小时前
MinIO 国产平替,RustFS 发布 Beta 版本啦
分布式·docker·云原生·rust·开源
gwjcloud3 小时前
Kubernetes从入门到精通(基础篇)02
云原生·容器·kubernetes
telllong4 小时前
3分钟理解服务网格Istio
云原生·istio
阿川20154 小时前
词元经济重新定义AI原生,继云原生后企业IT再次变局
云原生·ai-native
布吉岛的石头4 小时前
云原生面试考点:K8s 核心组件 + Deployment 实战
云原生·面试·kubernetes