欢迎光临
我们一直在努力

初识Kubernetes(K8s):kubectl命令使用详

一、kubectl用法概述

kubectl命令行语法如下:

kubectl [command] [type] [name] [flags]
参数说明:
command:子命令,用于管理和操作Kubernetes集群资源对象的命令。例如:create、delete、describe、get、apply等。
type:资源对象的类型,区分大小写,能以单数形式、复数形式或者简写形式表示。
kubectl get pod pod1  # 单数形式
kubectl get pods pod1   # 复数形式
kubectl get po pod1   #简写形式
name:资源对象的名称,区分大小写,如果不指定名称,则系统返回属于type的全部对象的列表。
flags:kubectl子命令的可选参数,例如使用“-s”指定apiserver的URL地址而不用默认值。

表1:kubectl可操作的资源对象类型

资源对象的名称 缩写
clusters
componentstatuses cs
configmaps cm
daemonsets ds
deployments deploy
endpoints ep
events ev
horizontalpodautoscalers hpa
ingresses ing
Jobs
limitranges limits
nodes no
namespaces ns
networkpolicies
statefulsets
persistentvolumeclaims pvc
persistentvolumes pv
pods po
podsecuritypolicies psp
podtemplates
replicasets rs
replicationcontrollers rc
cronjob
secrets
serviceaccounts
service svc
storageclasses sc
thirdpartyresources

二、kubectl子命令

kuberctl的子命令非常丰富,包括资源对象的创建、删除、查看、修改、配置、运行等。
表2:kubectl子命令语法

三、kubectl参数

表3:kubectl命令行的公共启动参数

每个子命令(如create、delete、get等)还有特定的flags参数,可以通过kubectl [command] –help命令进行查看。

四、kubectl输出格式

kubectl命令可以用多种格式对结果进行显示,输出的格式通过-o参数指定:

kubectl [command] [TYPE] [NAME] -o=<output_format>

表4:kubectl命令的输出格式

常用的输出格式示例如下:
(1)显示Pod的更多信息

kubectl get pod <pod-name> -o wide

(2)以yaml格式显示Pod的详细信息

kubectl get pod <pod-name> -o yaml

(3)以自定义列名显示Pod的信息

kubectl get pod <pod-name> -o=custom-columns=NAME:.metadata.name,RSRC:.metadata.resourceVersion

(4)基于文件的自定义列名输出

kubectl get pods <pod-name> -o=custom-columns-file=template.txt
template.txt文件的内容为:
NAME              RSRC
metadata.name      metadata.resourceVersion
输出结果为:
NAME        RSRC
Pod-name     52305

另外,还可以将输出结果按某个字段排序,通过–sort-by参数以jsonpath表达式进行指定:

kubectl [command] [TYPE] [NAME] --sort-by=<jsonpath_exp>

例如,按照名字进行排序

kubectl get pods --sort-by=.metadata.name

五、kubectl操作示例

1、根据yaml配置文件一次性创建service和rc

kubectl create -f my-service.yaml -f my-rc.yaml

2、根据<directory>目录下所有.yaml、.yml、.json文件的定义进行创建操作

kubectl create -f <directory>

3、查看所有Pod列表

kubectl get pods

4、查看rc和service列表

kubectl get rc,service

5、显示Node的详细信息

kubectl describe nodes <node-name>

6、显示Pod的详细信息

kubectl describe pods/<pod-name>

7、显示由RC管理的Pod信息

kubectl describe pods <rc-name>

8、删除基于pod.yaml文件定义的Pod

kubectl delete -f pod.yaml

9、删除所有包含某个label的Pod和Service

kubectl delete pods,services -l name=<label-name>

10、删除所有Pod

kubectl delete pods --all

11、在Pod的容器里执行date命令,默认使用Pod中的第1个容器执行

kubectl exec <pod-name> date

12、指定Pod中某个容器执行date命令

kubectl exec <pod-name> -c <container-name> date

13、以bash方式登陆到Pod中的某个容器里

kubectl exec -it <pod-name> -c <container-name> /bin/bash

14、查看容器输出到stdout的日志

kubectl logs <pod-name>

15、跟踪查看容器的日志,相当于tail -f命令的结果

kubectl logs -f <pod-name> -c <container-name>
赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。