kubectl命令格式如下:
kubectl [command] [TYPE] [NAME] [flags]
command:指定对一个或多个资源执行的操作,如get、create、delete。
TYPE:指定资源类型,如pod、deployment、service,不区分大小写;可以指定单数、复数或缩写形式。例如,以下命令会输出相同的结果:
kubectl get pods test-pod kubectl get pod test-pod kubectl get po test-pod
你可以通过“kubectl api-resources”命令(第三列)获取所有资源类型及其缩写别名。
NAME:指定资源名称,名称区分大小写。如果省略名称,则显示所有资源。
flags:指定可选的参数。你可以通过“kubectl options”命令查看更多参数。
kubectl提供了丰富的管理命令,你可以通过“kubectl --help”命令查看这些命令。kubectl所有子命令的概要如表2-3所示。
表2-3 kubectl所有子命令的概要
续表
续表
在查看资源对象时,可以使用“-o”参数指定输出的格式。支持输出的格式如表2-4所示。
表2-4 支持输出的格式
以下是关于“-o”参数的使用示例:
1)自定义列和标题
例如,仅输出Pod名称和状态:
kubectl get pod -o custom-columns=NAME:.metadata.name,STATUS:.status. phase
2)以JSON格式输出特定字段
JSONPath是一种用于从JSON数据中选择或过滤数据的表达式语言。以下是JSONPath的使用示例:
# 获取第一个Pod对象 kubectl get pod -o jsonpath='{.items[0]}' # 获取第一个Pod对象的名称 kubectl get pod -o jsonpath='{.items[0].metadata.name}' # 获取列出的所有Pod对象名称和状态 kubectl get pod -o jsonpath="{.items[*]['metadata.name','status.phase']}" # 获取列出的所有Pod对象名称和启动时间 kubectl get pod -o jsonpath='{range .items[*]}{.metadata.name}{"\t"} {.status.startTime}{"\n"}{end}' # 获取指定Service对象的NodePort端口 kubectl get service <名称> -o jsonpath='{.spec.ports[0].nodePort}'
3)将资源对象配置为以YAML或JSON格式输出
例如,将单个Pod对象配置为以YAML格式输出:
kubectl get pod <Pod名称> -o yaml
将单个Pod对象配置为以JSON格式输出:
kubectl get pod <Pod名称> -o json
4)输出详细信息
例如,查看Pod对象更多信息:
kubectl get pod -o wide
在查看资源对象时,可以使用“--sort-by”参数来指定用于排序的字段。
例如,根据Pod名称进行排序输出:
kubectl get pods --sort-by=.metadata.name