Bootstrap

06 K8S之kubectl命令介绍

Kubernetes API是管理各种资源对象的唯一入口,它提供了一个RESTful风格的CRUD(Create、Read、Update和Delete)接口用于查询和修改集群状态,并将结果存储在集群状态存储系统etcd中。事实上,API Server也是用于更新etcd中资源对象状态的唯一途径。

Kubernetes API资源管理的操作可简单归结为增、删、改、查这4种,kubectl提供了一系列子命令用于执行此类任务,例如create、delete、patch、apply、replace、edit、get等。其中,有些命令必须基于资源清单进行,例如apply和replace命令,有些命令既可基于清单文件进行,也可实时作用于活动资源之上,例如create、get、patch和delete等。

kubectl特性丰富且功能强大,是Kubernetes管理员最常用的集群管理工具。其最基本的语法格式为kubectl [command] [TYPE] [NAME] [flags],其中各部分的简要说明如下。

command:对资源执行相应操作的子命令,例如get、create、delete、run等;

TYPE:要操作的资源类型,例如pods、services等;类型名称大小写敏感,但支持使用单数、复数或简写格式。

NAME:要操作的资源对象名称,大小写敏感;省略时,则表示指定TYPE的所有资源对象;同一类型的资源名称可于TYPE后同时给出多个,也可以直接使用TYPE/NAME的格式来为每个资源对象分别指定类型。flags:命令行选项,例如-s或--server等;另外,get等命令在输出时还有一个常用的标志-o 用于指定输出格式。

Kubernetes系统的大部分资源都隶属于名称空间级别,默认的名称空间为default,若需要获取指定Namespace对象中的资源对象的信息,则需要使用-n或--namespace指明其名称。直接通过kubectl命令及相关的选项创建资源对象的方式即直接命令式操作。

每个资源对象都有用户期望的状态(Spec)和现有的实际状态(Status)两种状态信息,kubectl get -o {yaml|josn}可分别以YAML或JSON格式打印资源对象的规范,而kubectl describe命令则能够打印出指定资源对象的详细描述信息。