3.3.2 kubectl 的基本用法
Kubectl 是最常用的客户端工具之一,它提供了基于命令行访问 kubernetes API 的简洁方式,能够满足对 kubernetes 的绝大部分的操作需求。例如,需要创建资源对象时,kubectl会将JSON格式的清单内容以POST方式提交至API Server。本节主要描述 kubectl 的基本功能。
如果要单独部署 kubectl,Kubernetes 也提供了相应的单独发行包,或者适配与各平台的程序管理器的相关程序包,如rpm包或deb包等,用户根据平台类型的不同获取相匹配的版本安装完成即可,操作步骤类似与前面的安装方法,因此这里不在给出其具体过程。
kubectl 是 kubernetes 系统的命令行客户端工具,特性丰富且功能强大,是 Kubernetes 管理员最常用的集群管理工具。其最基本的语法格式为“kubectl [command] [TYPE] [NAME] [flags]”,其中各部分的简要说明如下:
- command:对资源执行相应操作的子命令,如get、create、delete、run等;常用的核心子命令如表3-1所示。
- TYPE:要操作的资源对象的类型,如 pods、services 等;类型名称区分字符大小写,但支持使用简写格式。
- NAME:对象名称,区分字符大小写;省略时,则表示指定TYPE的所有资源对象;另外,也可以直接使用“TYPE/NAME”的格式来表示资源对象。
- flags:命令行选项,如“-s”或“--server”;另外,get等命令再输出时还有一个常用的标志
-o <format>
用于指定输出格式,如表3-1所示:
命令 | 命令类别 | 功能说明 |
---|---|---|
create | 基础命令(初级) | 通过文件或标准输入创建资源 |
expose | 基于rc、service、deployment或pod创建service资源 | |
run | 通过创建Deployment在集群中运行指定的镜像 | |
set | 设置指定资源的特定属性 | |
get | 基础命令(中级) | 显示一个或多个资源 |
explain | 打印资源文档 | |
edit | 编辑资源 | |
delete | 基于文件名、stdin、资源或名字,以及资源和选择器删除资源 | |
rollout | 部署命令 | 管理资源的滚动更新 |
rollout-update | 对ReplicationController执行滚动升级 | |
scale | 伸缩 Deployment、ReplicaSet、RC 或 Job 的规模 | |
autoscale | 对 Deployment、ReplicaSet 或 RC 进行自动伸缩 | |
certificate | 集群管理命令 | 配置数字证书资源 |
cluster-info | 打印集群信息 | |
top | 打印资源(CPU/Memory/Storage)使用率 | |
cordon | 将指定node设定为“不可用”(unschedulable)状态 | |
uncordon | 将指定node设定为“可用”(schedulable)状态 | |
drain | “排干”指定的node的负载以进入“维护”模式 | |
taint | 为node声明污点及标准行为 | |
describe | 排错及调试命令 | 显示指定资源或资源组的详细信息 |
logs | 显示一个Pod内某容器的日志 | |
attach | 附加终端至一个运行中的容器 | |
exec | 在容器中执行指定命令 | |
port-forward | 将本地的一个或多个端口转发至指定的Pod | |
proxy | 创建能够访问Kuberntes API Server的代理 | |
cp | 在容器间复制文件和目录 | |
auth | 打印授权信息 | |
apply | 高级命令 | 基于文件或stdin将配置应用于资源 |
patch | 使用策略合并补丁更新资源字段 | |
replace | 基本文件或stdin替换一个资源 | |
convert | 为不同的API版本转换配置文件 | |
label | 设置命令 | 更新指定资源的label |
annotate | 更新资源的annotation | |
completion | 输出指定的shell(如bash)的补全码 | |
version | 其他命令 | 打印 Kubernetes 服务端和客户端的版本信息 |
api-version | 以“group/version”格式打印服务器支持的API版本信息 | |
config | 配置 kubeconfig 文件的内容 | |
plugin | 运行命令行插件 | |
help | 打印任一命令的帮助信息 |
kubectl 命令还包含了多种不同的输出格式(如表3-2所示),它们为用户提供了非常灵活的自定义输出机制,如输出为YAML或JSON格式等。
输出格式 | 格式说明 |
---|---|
-o wide | 显示资源的额外信息 |
-o name | 仅打印资源的名称 |
-o yaml | YAML格式化输出API对象信息 |
-o json | JSON格式化输出API对象信息 |
-o go-template | 以自定义的go模板格式化输出API对象信息 |
-o custom-columns | 自定义要输出的字段 |
此外,kubectl 命令还有许多通用的选项,这个可以使用“kubectl options”命令来获取。下面列举几个比较常用命令。
- -s 或 --server:指定API Server的地址和端口
- --kubeconfig: 使用的kubeconfig文件路径,默认为
~/.kube/config
- --namespace:命令执行的目标空间名称
kubectl 的部分在第二章已经多次提到,余下的大多数命令在后续的章节中还会用到,对于它们的使用说明也将在首次用到时进行展开说明。