Abel's tech blogAbel's tech blog
  • 基础知识
  • 面向对象
  • IO流
  • String
  • 异常处理机制
  • 多线程
  • 反射机制
  • JVM相关知识
  • 数据库基础
  • 数据库进阶
  • 复杂SQL语句
  • Redis
  • Spring-IOC
  • Spring-AOP
  • Spring-Test
  • SpringBoot
  • SpringMVC
  • MyBatis
  • 基于MyBatis的分页查询
  • SpringSecurity
  • 微服务概念
  • Nacos
  • Dubbo
  • Seata
  • Sentinel
  • SpringGateway网关
  • ELK
  • Quartz
  • 消息队列
  • 数据结构
  • 算法
  • TCP/IP
  • 交换机
  • 路由器
  • Docker
  • Kubernetes
  • Linux
  • 各类工具

    • 菜鸟工具
    • 菜鸟教程
    • IDEA下载
    • 数据结构和算法可视化网站
    • jwt解析
    • maven仓库
  • 开发文档

    • Java 8 API 文档
    • Java 17 API 文档
    • MyBatis 3 中文
    • MyBatis-spring 中文
    • Spring Framework 5 API DOC
    • Spring Framework 6 API DOC
    • SpringBoot 2.7.6 API DOC
    • SpringBoot 3 API DOC
    • Hypertext Transfer Protocol -- HTTP/1.0
  • 配置文件下载

    • 阿里云Maven仓库配置
    • Nginx反向代理配置模板
    • JavaScript组件库
  • JDK 8 Windows x86 64-bit
  • JDK 17 Windows x86 64-bit
  • Maven
  • IntelliJ IDEA 各版本
  • Git
  • 基础知识
  • 面向对象
  • IO流
  • String
  • 异常处理机制
  • 多线程
  • 反射机制
  • JVM相关知识
  • 数据库基础
  • 数据库进阶
  • 复杂SQL语句
  • Redis
  • Spring-IOC
  • Spring-AOP
  • Spring-Test
  • SpringBoot
  • SpringMVC
  • MyBatis
  • 基于MyBatis的分页查询
  • SpringSecurity
  • 微服务概念
  • Nacos
  • Dubbo
  • Seata
  • Sentinel
  • SpringGateway网关
  • ELK
  • Quartz
  • 消息队列
  • 数据结构
  • 算法
  • TCP/IP
  • 交换机
  • 路由器
  • Docker
  • Kubernetes
  • Linux
  • 各类工具

    • 菜鸟工具
    • 菜鸟教程
    • IDEA下载
    • 数据结构和算法可视化网站
    • jwt解析
    • maven仓库
  • 开发文档

    • Java 8 API 文档
    • Java 17 API 文档
    • MyBatis 3 中文
    • MyBatis-spring 中文
    • Spring Framework 5 API DOC
    • Spring Framework 6 API DOC
    • SpringBoot 2.7.6 API DOC
    • SpringBoot 3 API DOC
    • Hypertext Transfer Protocol -- HTTP/1.0
  • 配置文件下载

    • 阿里云Maven仓库配置
    • Nginx反向代理配置模板
    • JavaScript组件库
  • JDK 8 Windows x86 64-bit
  • JDK 17 Windows x86 64-bit
  • Maven
  • IntelliJ IDEA 各版本
  • Git

kubectl语法

kubectl <command> <type> <name> <flags>

command:子命令,用于操作kubernetes集群资源对象的命令,例如:create, delete, describe, get, apply等等

type:资源对象的类型,区分大小写,能以单数,复数或者简写形式表示。例如以下3中TYPE是等价的。

kubectl get pod pod1
kubectl get pods pod1
kubectl get po pod1

name:资源对象的名称,区分大小写。如果不指定名称,系统则将返回属于TYPE的全部对象的列表,例如:kubectl get pods 将返回所有pod的列表

flags:kubectl 子命令的可选参数,例如使用 -s 指定api server的url地址而不用默认值

  • kubectl可操作的资源对象类型以及缩写:
资源类型缩写说明
clusters集群
componentstat usescs查看各组件信息
configmapscmConfigMap是用来存储配置文件的kubernetes资源对象
daemonsetsdsDaemonSet只管理pod对象,通过nodeAffinity和Toleration两个调度器,保证每个节点上只有一个pod。集群动态加入了新的Node,DaemonSet中的pod也会添加在新加入Node上。删除一个DaemonSet也会级联删除所有其创建的pod
deploymentdeployDeployment为pod和ReplicaSet提供了一个声明式定义方法,用来替代以前的ReplicationController来方便的管理应用
endpointsep节点
eventsevEvent是kubelet负责用来记录多个容器运行过程中的时间,命名由被记录的对象和时间戳构成
horizontalPodAutoscalershpa
ingressesing
jobs
limitrangeslimits
namespacesns
networkPolicies
statefulset
persistentVolumeClaimspvc
persistentVolumepv
podspo
podSecurityPoliciespsp
podTemplates
replicasetrs
replicationContRollersrc
resourceQuotasquota
conjob
secrets
serviceAccounts
servicesvc
storageclassessc
thirdPartyResources
  • 这一个命令行中也可以同时对多个资源对象进行操作,以多个type和name的组合表示

    • 获取多个pod的信息:

      kubectl get pods pod1 pod2
      
    • 获取多钟对象的信息:

      kubectl get pod/pod1 rc/rc1
      
    • 同时应用多个YAML文件,以多个 -f file 参数表示:

      kubectl get pod -f pod1.yaml -f pod2.yaml
      kubectl create -f pod1.yaml -f rc1.yaml -f service1.yaml
      

kubectl 子命令详情

kubectl的子命令非常丰富,涵盖了对kubernetes集群的主要操作,包括资源对象的创建、删除、查看、修改、配置、运行等。

  • annotate:添加或更新资源对象的annotation信息

    kubectl annotate (-f Filename | type name | type/name) k1=v1,k2=v2
    
  • api-version:列出当前系统支持的api版本列表,格式为“group/version”

    kubectl api-version [flags]
    
  • apply:从配置文件或stdin中对资源对象镜像配置更新

    kubectl apply -f filename [flags]
    
  • attach:附着到一个正在运行的容器上

    kubectl attach POD -c container [flags]
    
  • auth:检测RBAC权限设置

    kubectl auth [flags] [optioins]
    
  • autoscale:对deploy,replicaSet或replicationController进行水平自动扩容和缩容的设置

    kubectl autoscale (-f filename | type name | type/name)
    
  • cluster-info:显示集群master和内置服务的信息

    kubectl cluster-info [flags]
    
  • completion:输出shell命名的执行结果码(bash或zsh)

    kubectl completion shell [flags]
    
  • config:修改kubeconfig文件

    kubectl config subcommand [flags]
    
  • convert:转换配置文件为不同的api版本

    kubect convert -f filename [flags]
    
  • cordon:将node标记为unschedulable,即隔离出集群调度范围

    kubectl cordon node [flags]
    
  • create:从配置文件或stdin中创建资源对象

    kubectl create -f filename [flags]
    
  • delete:从配置文件,stdin,资源名称或labelseletor删除资源对象

    kubectl delete (-f filename | type name | -l label) [flags]
    
  • describe:描述一个或多个资源对象的详细信息

    kubectl describe (-f filename | type name) [flags]
    
  • diff:查看配置文件与当前系统中正在运行的资源对象的差异

    kubectl diff -f filename [options]
    
  • drain:首先将node设置为unschedulable,然后删除在该node上运行的所有pod,但不会删除不用api server管理的pod

    kubectl drain node [flags]
    
  • edit:编译资源对象的属性,在线更新

    kubectl edit (-f filename | type name | type/name) [flags]
    
  • exec:执行一个容器中的命令

    kubectl exec pod [-c container] [-i] [-t] [flags] [-- command [args...]]
    
  • explain:对资源对象属性的详细说明

    kubectl explain [--include-extended-apis=true] [--recursive=false] [flags]
    
  • expose:将已经存在的一个rc、service、deploy或pod暴露为一个新的service

    kubectl expose (-f filename | type name)[--port=port] [--target-port=port] [--protocol-TCP|UDP] [--name=name] [----external-ip=external-ip-of-service] [--type=type]
    
  • get:显示一个或多个资源对象的概要信息

    kubectl get (-f filename | type name | -l label) [--watch] [--sort-by-FIELD] [[-o | --output]=OUTPUT_FORMAT] [flags]
    
  • label:设置资源对象的label

    kubectl label (-f fileanme | type name) k1=v1...kn=vn [--resource-version=version] [flags]
    
  • logs:在屏幕上打印一个容器的日志

    kubectl logs pod [-c container] [--follow] [flags]