Kubectl 使用简介

kubectl概述

kubectl 是 Kubernetes 集群的命令行工具,通过 kubectl 能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署。

运行 kubectl 命令的语法如下所示

1
$ kubectl [command] [TYPE] [NAME] [flags]
  • command:指定要对资源执行的操作,例如 creategetdescribedelete;
  • TYPE:指定资源类型,例如: nodesdeployment;
  • NAME:指定资源的名称,名称是大小写敏感的。如果省略名称,则会显示所有的资源;
  • flags:指定可选的参数。
另外,可以通过运行kubectl help命令获取更多的信息。

kubectl的操作 (command)

kubectl作为kubernetes的命令行工具,主要的职责就是对集群中的资源的对象进行操作,这些操作包括对资源对象的创建、删除和查看等。下表列出常用的操作:

操作 语法 描述
apply kubectl apply -f FILENAME [flags] 将来自于文件或stdin的配置变更应用到主要对象中。
cluster-info kubectl cluster-info [flags] 显示群集中的主节点和服务的的端点信息。
create kubectl create -f FILENAME [flags]
delete kubectl delete (-f FILENAME | TYPE [NAME | NAME | -l label | –all]) [flags] 删除资源对象。
describe kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | /NAME | -l label]) [flags] 显示一个或者多个资源对象的详细信息。
exec kubectl exec POD [-c CONTAINER] [-i] [-t] [flags] [– COMMAND [args…]] 在Pod的容器中执行一个命令。
get kubectl get (-f FILENAME | TYPE [NAME | /NAME | -l label]) [–watch] [–sort-by=FIELD] [[-o | –output]=OUTPUT_FORMAT] [flags] 列出一个或多个资源。
logs kubectl logs POD [-c CONTAINER] [–follow] [flags] 显示Pod中一个容器的日志。
run kubectl run NAME –image=image [–env=”key=value”] [–port=port] [–replicas=replicas] [–dry-run=bool] [–overrides=inline-json] [flags] 在集群上运行一个指定的镜像。(直接创建 Pod, 不推荐)
version kubectl version [–client] [flags] 显示运行在客户端和服务器端的Kubernetes版本。

资源对象类型 (type)

在kubernetes中,提供了很多的资源对象,开发和运维人员可以通过这些对象对容器进行编排。关于这些资源类型先埋个坑后续会一一介绍。

资源对象类型 缩略别名
componentstatus cs
configmaps cm
daemonsets ds
deployments deploy
ingresses ing
namespaces ns
nodes no
persistentvolumeclaims pvc
persistentvolumes pv
pods po
secrets
statefulsets
storageclasses

输出选项

kubectl默认的输出格式为纯文本格式,可以通过-o或者–output字段指定命令的输出格式。

1
$ kubectl [command] [TYPE] [NAME] -o=<output_format>
输出格式 描述
-o=custom-columns=<spec> 使用以逗号分隔的自定义列打印表格。
-o=custom-columns-file=<filename> 使用文件中自定义列打印表格。
-o=json 输出JSON格式的API对象
-o=jsonpath=<template> 打印在jsonpath表达式中定义的字段
-o=jsonpath-file=<filename> 打印文件中以jsonpath表达式定义的字段
-o=name 仅仅输出资源对象的名称。
-o=wide 输出带有附加信息的纯文本格式。对于Pod对象,将会包含Node名称。
-o=yaml 输出YAML格式的API对象