命令格式说明

  kubectl 命令通常遵循以下格式:

kubectl  [command]  [TYPE]      [NAME]     [flags]

         命令       资源类型    资源名称   标记

command: 要执行的操作,

get

获取

describe

描述

create

创建

delete

删除

apply

应用文件创建

exec

进入pod容器

TYPE: 资源类型

pod

service

deployment

node

label

namespace

NAME: 资源名称(区分大小写)。

flags: 可选标志

-n namespace,

--all-namespaces,

-o yaml

--name

--network

一些资源的简写

节点nodes  no

命名空间namespace ns

资源pod po

副本控制器replicasets rs

服务service svc

 deployments deploy

基础命令(增删改查)

命令         

          说明                             

示例

kubectl get      

列出一个或多个资源                        

kubectl get pods 、kubectl get pods,svc

kubectl describe  

显示资源的详细状态                        

kubectl describe pod my-pod

kubectl create       

根据文件或命令行输入创建资源   

kubectl create -f config.yaml

kubectl apply        

根据文件或命令行输入创建资源配置,更安全 

kubectl apply -f config.yaml

kubectl delete        

根据文件或者命令行输入删除资源   

kubectl delete -f config.yaml、 kubectl delete pod my-pod

kubectl edit      

编辑服务器上的资源                      

kubectl edit deployment my-deploy

kubectl explain  

查看资源的文档字段                   

kubectl explain pod.spec

create和apply的区别

对比维度        

kubectl create        

kubectl apply

核心语义        

仅 “创建” 新资源        

声明式 “配置 / 同步” 资源状态

资源已存在时        

直接报错,无法执行        

对比差异并更新资源

幂等性        

不具备(重复执行失败)        

具备(重复执行仅同步差异)

适用场景        

一次性创建全新资源        

持续维护 / 更新资源配置

安全性

低(无法处理已有资源)        

高(仅修改差异,避免误操作)

命名空间操作namespace ns

作用:用来隔离资源

命令                                 

说明                     

示例

kubectl get namespaces/kubectl get ns             

查看命名空间         

kubectl get ns

kubectl create namespace                       

创建命名空间             

kubectl create ns my-ns

kubectl delete ns

删除命名空间

kubectl delete ns abc

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

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

kubectl config set-context --current --namespace=my-ns  

-n <namespace>   

指定操作的命名空间

 kubectl get pods -n kube-system

-A / --all-namespaces                           

在所有命名空间中执行操作   

默认命名空间

 default 创建资源时没有指定命名空间,默认在这里

 kube-system k8s系统创建对象使用的命名空间

 kube-public 自动创建,在这里的资源柯被所有人访问

 kube-node-lease 集群节点之间的心跳维护

Deployment / ReplicaSet 操作

命令    说明    示例

kubectl get deployments    列出所有部署    kubectl get deployments

kubectl scale deployment <deploy-name> --replicas=<number>    扩缩容 Deployment    kubectl scale deploy my-app --replicas=3

kubectl set image deployment/<deploy-name> <container-name>=<new-image>    滚动更新 Deployment 的镜像    kubectl set image deploy/my-app nginx=nginx:1.20

kubectl rollout status deployment/<deploy-name>    查看滚动更新状态    kubectl rollout status deploy/my-app

kubectl rollout history deployment/<deploy-name>    查看滚动更新历史    kubectl rollout history deploy/my-app

kubectl rollout undo deployment/<deploy-name>    回滚到上一个版本    kubectl rollout undo deploy/my-app

kubectl rollout undo deployment/<deploy-name> --to-revision=<number>    回滚到指定版本    kubectl rollout undo deploy/my-app --to-revision=2

Service / Ingress 操作

命令    说明    示例

kubectl get services/kubectl get svc    列出所有服务    kubectl get svc

kubectl get ingress/kubectl get ing    列出所有 Ingress    kubectl get ing

kubectl expose deployment <name> --type=LoadBalancer --port=<port>    为 Deployment 创建 Service

kubectl expose deploy my-app --type=NodePort --port=80

配置和上下文操作

命令    说明    示例

kubectl get configmaps/kubectl get cm    列出所有 ConfigMap    kubectl get cm

kubectl get secrets    列出所有 Secret    kubectl get secrets

kubectl config get-contexts    列出所有上下文    kubectl config get-contexts

kubectl config use-context <context-name>    切换到指定上下文    kubectl config use-context prod-cluster

kubectl config current-context    显示当前上下文    kubectl config current-context

节点和集群管理

命令    说明    示例

kubectl get nodes -o wide    列出所有节点及详细信息    kubectl get nodes -o wide

kubectl describe node <node-name>    查看节点的详细信息    kubectl describe node node01

kubectl top node    显示节点的资源使用情况    kubectl top node

kubectl cordon <node-name>    将节点标记为不可调度    kubectl cordon node01

kubectl uncordon <node-name>    将节点标记为可调度    kubectl uncordon node01

kubectl drain <node-name> --ignore-daemonsets    排空节点以准备维护    kubectl drain node01 --ignore-daemonsets

kubectl cluster-info    显示集群基本信息    kubectl cluster-info

高级输出和调试

命令    说明    示例

kubectl get ... -o yaml    以 YAML 格式输出    kubectl get pod my-pod -o yaml

kubectl get ... -o json    以 JSON 格式输出    kubectl get pod my-pod -o json

kubectl get ... -o wide    以扩展格式输出(更多列)    kubectl get pods -o wide

kubectl get ... -o name    仅输出资源名称    kubectl get pods -o name

kubectl get ... --show-labels    列出资源时显示所有标签    kubectl get pods --show-labels

kubectl get ... -l app=nginx    根据标签选择器过滤资源    kubectl get pods -l app=nginx

kubectl run -it --rm --image=busybox test-pod -- /bin/sh    运行一个临时调试 Pod(退出后自动删除)    kubectl run -it --rm --image=busybox test-pod -- /bin/sh

kubectl debug -it <pod-name> --image=busybox --target=<container-name>    为正在运行的 Pod 创建一个临时调试容器    kubectl debug -it my-pod --image=busybox

实用技巧和组合命令

持续监控 Pod 状态变化:

bash

kubectl get pods -w

一键进入第一个 Pod 的 Shell(适用于只有一个 Pod 的情况):

bash

kubectl exec -it $(kubectl get pod -o name | head -1) -- /bin/bash

查看 Pod 的完整 YAML 定义(用于备份或模板):

bash

kubectl get pod my-pod -o yaml --export > my-pod-backup.yaml

注意:--export 标志在较新版本中已被弃用,可以直接使用 kubectl get pod my-pod -o yaml > my-pod-backup.yaml。

强制删除卡在 "Terminating" 状态的 Pod:

bash

kubectl delete pod <pod-name> --force --grace-period=0

根据标签删除所有 Pod:

bash

kubectl delete pods -l app=my-app

希望这份总结能帮助您更高效地使用 Kubernetes!多加练习,这些命令会变得像肌肉记忆一样自然。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐