kubectl [command] [TYPE] [NAME] [flags]

kubectl 常用语法如上,大部分都是由以下这些参数拼装来的

command可选为creategetdescribedelete、applay、exec等,对资源进行操作

type:需要操作的资源类型,资源类型不区分大小写,您可以指定单数、复数或缩写形式,常用类型有node、pod、services、namespaces等   

name:指定资源的名称。名称区分大小写。如果省略名称,则显示所有资源的详细信息。

flags: 指定可选的参数。

command

create:创建资源

get:列出一个或多个资源

kubectl describe - 显示一个或多个资源的详细状态,默认情况下包括未初始化的资源。

kubectl delete - 从文件、stdin 或指定标签选择器、名称、资源选择器或资源中删除资源。

kubectl exec - 对 pod 中的容器执行命令。

kubectl apply - 以文件或标准输入为准应用或更新资源。

kubectl cp  -复制文件或文件夹

 

name:

指定资源的名称。名称区分大小写。 如果省略名称,则显示所有资源的详细信息 kubectl get pods

在对多个资源执行操作时,你可以按类型和名称指定每个资源,或指定一个或多个文件:

  • 要按类型和名称指定资源:
  • 要对所有类型相同的资源进行分组,请执行以下操作:TYPE1 name1 name2 name<#>
    例子:kubectl get pod example-pod1 example-pod2
  • 分别指定多个资源类型:TYPE1/name1 TYPE1/name2 TYPE2/name3 TYPE<#>/name<#>
    例子:kubectl get pod/example-pod1 replicationcontroller/example-rc1
  • 用一个或多个文件指定资源:-f file1 -f file2 -f file<#>

 

type:

kubectl api-resources 可以查询所有的资源类型,其中SHORTNAMES是简写,我们也可以通过简写来对资源类型咨询操作。也可通过NAMESPACED查看该资源类型是不是有命名空间

endpoints kubernetes 创建 kubectl create_命名空间

也可查看https://kubernetes.io/docs/reference/kubectl/overview/#resource-types查询所有类型

flags

常用flags有以下内容,如果需要查看每个操作支持哪些flag,可查看https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands官方文档

filename    -f:指定资源的文件名、目录或 URL

container    -c:容器名称,如果省略,则默认选择pod中的第一个

all-namespaces     -A: 指定命令空间,如果省略,则查看默认命名空间的内容

selector   -l:支持  '=', '==', and '!='。(例如. -l key1=value1,key2=value2)

stdin   -i:标准输入到容器中

tty    -t:标准是tty命令()

--sort-by      按xx排序

output    -o:格式化输出,一般还需要加上其他参数,如下图

endpoints kubernetes 创建 kubectl create_命名空间_02

 常用命令

 

# 以纯文本输出格式列出默认命令空间的所有 pod。
kubectl get pods

# 以纯文本输出格式列出所有 pod,并包含附加信息(如节点名)。
kubectl get pods -o wide
# 以纯文本输出格式列出所有命名空间的 pod,并包含附加信息
kubectl get pods -A -o wide
# 以纯文本输出格式列出具有指定名称的副本控制器。提示:你可以使用别名 'rc' 缩短和替换 'replicationcontroller' 资源类型。
kubectl get replicationcontroller <rc-name>

# 以纯文本输出格式列出所有副本控制器和服务。
kubectl get rc,services

# 以纯文本输出格式列出所有守护程序集,包括未初始化的守护程序集。
kubectl get ds --include-uninitialized

# 列出在节点 server01 上运行的所有 pod
kubectl get pods --field-selector=spec.nodeName=server01

#查询服务
kubectl get services

#查询服务对应的端口
kubectl get services -A

#查询集群节点(名称、状态、角色、版本等)
kubectl get nodes

#查询集群节点详细信息(CPU、当前节点的pod信息及cpu限制等)
kubectl describe nodes

 

 

 

 

# 显示名称为 <node-name> 的节点的详细信息。
kubectl describe nodes <node-name>

# 显示名为 <pod-name> 的 pod 的详细信息。
kubectl describe pods/<pod-name>

# 显示由名为 <rc-name> 的副本控制器管理的所有 pod 的详细信息。
# 记住:副本控制器创建的任何 pod 都以复制控制器的名称为前缀。
kubectl describe pods <rc-name>

# 描述所有的 pod,不包括未初始化的 pod
kubectl describe pods

 

 

# 使用 pod.yaml 文件中指定的类型和名称删除 pod。
kubectl delete -f pod.yaml

# 删除所有带有 '<label-key>=<label-value>' 标签的 Pod 和服务。
kubectl delete pods,services -l <label-key>=<label-value>

# 删除所有 pod,包括未初始化的 pod。
kubectl delete pods --all

 

# 从 pod <pod-name> 中获取运行 'date' 的输出。默认情况下,输出来自第一个容器。
kubectl exec <pod-name> -- date

# 运行输出 'date' 获取在容器的 <container-name> 中 pod <pod-name> 的输出。
kubectl exec <pod-name> -c <container-name> -- date

# 获取一个交互 TTY 并运行 /bin/bash <pod-name >。默认情况下,输出来自第一个容器。
kubectl exec -ti <pod-name> -- /bin/bash

 

#递归查询容器镜像
  • 使用 tr 将空格替换为新的行
  • 使用 sort 对结果排序
  • 使用 uniq 对镜像使用计数
kubectl get pods --all-namespaces -o jsonpath="{..image}" |\
tr -s '[[:space:]]' '\n' |\
sort |\
uniq -c

 

参考资料

 

https://kubernetes.io/docs/reference/kubectl/overview/

https://kuboard.cn/learning/k8s-practice/admin/list-images.html#%E5%89%8D%E6%8F%90%E6%9D%A1%E4%BB%B6