Kubernetes容器编排技术---kubectl命令行工具用法详解(三)

kubectl命令行工具用法详解

kubect用法概述

  kubectl命令行的语法如下:  

$ kubectl [command] [TYPE] [NAME] [flags]
  •  command:子命令,用于操作Kubernetes集群资源对象的命令,例如create、delete、describe、get、apply等。
  •  TYPE:资源对象的类型,区分大小写,能以单数形式、负数形式或者简写形式表示。
  •  NAME:  资源对象的名称,区分大小写。如果不指定名称,则系统将返回属于TYPE的全部对象的列表。
  •  flags:kubectl子命令的可选参数

可以通过命令查看可操作的资源类型

通过如下命令查看可操作性资源类型
# kubectl api-resources
通过如下命令查看可操作性资源的具体用法
# kubectl explain <资源名称>

 

kubectl可操作的资源对象类型
                     资源对象的名称                               缩写          

componentstatuses

cs
daemonsetsds
deployments 
eventsev
 endpoints ep
 horizontalpodautoscalers hpa
 ingresses ing
 jobs 
 limitranges limits
 nodes no
 namespaces ns
 pods po
 persistentvolumes pv
 persistentvolumeclaims pvc
 resourcequotas quota
 replicationcontrollers rc
 secrets 
 serviceaccounts 
 services svc

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

kubectl参数列表

  kubectl的子命令非常丰富,涵盖了对Kubernetes集群的主要操作,包括资源对象的创建、删除、查看、修改、配置、运行等。

kubectl子命令详解
子命令语法说明
annotatekubectl annotate [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]
[options]
添加或更新资源对象的annotation信息
api-versionskubectl api-versions [flags] [options]列出当前系统支持的API版本列表,格式为“group/version”
applykubectl apply (-f FILENAME | -k DIRECTORY) [options]从配置文件或stdin中对资源对象进行配置更新
attachkubectl apply (-f FILENAME | -k DIRECTORY) [options]附着到一个正在运行的容器
atuoscalekubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [options]对Deployment、ReplicaSet或ReplicationController进行水平自动扩缩容的设置
cluster-infokubectl cluster-info [flags] [options]显示集群信息
completionkubectl completion SHELL [options]输出shell命令的执行结果码(bash或zsh)
configkubectl config SUBCOMMAND [options]修改kubeconfig文件
convertkubectl convert -f FILENAME [options]转换配置文件为不同的API版本
cordonkubectl cordon NODE [options]将Node标记为unschedulable,即“隔离”出集群调度范围
deletekubectl delete ([-f FILENAME] | [-k DIRECTORY] | TYPE [(NAME | -l label | --all)]) [options]根据配置文件、stdin、资源名称或label selector删除资源对象
describekubectl describe (-f FILENAME | TYPE [NAME_PREFIX | -l label] | TYPE/NAME) [options]描述一个或多个资源对象的详细信息
drainkubectl drain NODE [options]首先将Node设置为unschedulable,然后删除该Node上运行的所有Pod,但不会删除不由apiserver管理的Pod
editkubectl edit (RESOURCE/NAME | -f FILENAME) [options]编辑资源对象的属性,在线更新
execkubectl exec (POD | TYPE/NAME) [-c CONTAINER] [flags] -- COMMAND [args...] [options] 执行一个容器中的命令
explainkubectl explain RESOURCE [options]对资源对象属性的详细说明
exposekubectl expose (-f FILENAME | TYPE NAME) [--port=port] [--protocol=TCP|UDP|SCTP] [--target-port=number-or-name]
[--name=name] [--external-ip=external-ip-of-service] [--type=type] [options]
将已经存在的一个RC、Service、Deployment或Pod暴露为一个新的Service
getkubectl get
[(-o|--output=)json|yaml|wide|custom-columns=...|custom-columns-file=...|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...]
(TYPE[.VERSION][.GROUP] [NAME | -l label] | TYPE[.VERSION][.GROUP]/NAME ...) [flags] [options]
显示一个或多个资源对象的概要信息
labelkubectl label [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]
[options]
设置或更新资源对象的labels
logskubectl logs [-f] [-p] (POD | TYPE/NAME) [-c CONTAINER] [options]屏幕打印
namespace 已被kubectl config set-context替代
patchkubectl patch (-f FILENAME | TYPE NAME) -p PATCH [options]以merge形式对资源对象的部分字段的值进行修改
port-forwardkubectl port-forward TYPE/NAME [options] [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N]将本机的某个端口号映射到Pod端口号,通常用于测试工作
proxykubectl proxy [--port=PORT] [--www=static-dir] [--www-prefix=prefix] [--api-prefix=prefix] [options]将本机某个端口号映射到apiserver
replacekubectl replace -f FILENAME [options]从配置文件或stdin替换资源对象
rolling-updatekubectl rolling-update OLD_CONTROLLER_NAME ([NEW_CONTROLLER_NAME] --image=NEW_CONTAINER_IMAGE | -f
NEW_CONTROLLER_SPEC) [options]
对RC进行滚动升级
rolloutkubectl rollout SUBCOMMAND [options]对Deployment进行管理,可用操作包括:history、pause、resume、undo、status
runkubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool]
[--overrides=inline-json] [--command] -- [COMMAND] [args...] [options]
基于一个镜在Kubernetes集群上启动一个Deployment
scalekubectl scale [--resource-version=version] [--current-replicas=count] --replicas=COUNT (-f FILENAME | TYPE NAME)
[options]
扩容、缩容一个Deployment、ReplicaSet、RC或Job中Pod的数量
setkubectl set SUBCOMMAND [options]设置资源对象的某个特定信息,目前仅支持修改容器的镜像
taintkubectl taint NODE NAME KEY_1=VAL_1:TAINT_EFFECT_1 ... KEY_N=VAL_N:TAINT_EFFECT_N [options]设置Node的taint信息,用于将特定的Pod调度到特定的Node的操作,为Alpha版本功能
uncordonkubectl uncordon NODE [options]将Node设置为schedulable
versionkubectl version [flags] [options]打印系统版本信息

kubectl输出格式

常用的输出格式示例如下:

显示pod的更多信息

# kubectl get pod <pod-name> -o wide

以yaml格式显示pod的详细信息

# kubectl get pod <pod-name> -o yaml

 另外,还可以将输出结果按某个字段排序,通过--strt-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

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

# kubectl create -f <directory>

 2.查看资源对象

查看所有pod列表

# kubectl get pods

查看rc和service列表

# kubectl get rc,service

 3. 描述资源对象

显示Node的详细信息

# kubectl describe nodes <node-name>

 显示Pod的详细信息

# kubectl describe pods/<pod-name>

 显示有RC管理的Pod的信息

# kubectl describe pods <rc-name>

 4.删除资源对象

基于pod.yaml定义的名称删除Pod:

# kubectl delete -f pod.yaml

 删除所有包含某个label的Pod和service

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

 删除所有Pod

# kubectl delete pods --all

 5.执行容器的命令

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

# kubectl exec <pod-name> date

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

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

 通过bash获得Pod中某个容器的TTY,相当于登录容器

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

 6.查看容器的日志

查看容器输出到stdout的日志

# kubectl logs <pod-name>

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

# kubectl logs -f <pod-name> -c <container-name>

 

 

 

 

 

 

  

 

转载于:https://www.cnblogs.com/weidongliu/p/11413871.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值