1、kubectl用法详解
kubectl [command] [Type] [NAME] [flags]
command: 子命令,用于操作kubernetes集群资源对象的命令,例如:create, delete, describe, get, apply等等
TYPE: 资源对象的类型,区分大小写,能以单数,复数或者简写形式表示。例如以下3中TYPE是等价的。
kubectl get pod pod1
kubectl get pods pod1
kubectl get po pod1
NAME:资源对象的名称,区分大小写。如果不指定名称,系统则将返回属于TYPE的全部对象的列表,例如:kubectl get pods 将返回所有pod的列表
flags: kubectl 子命令的可选参数,例如使用 -s 指定api server的url地址而不用默认值。
kubectl可操作的资源对象类型以及缩写:
| 资源类型 | 缩写 | 说明 |
|---|---|---|
| clusters | 集群 | |
| componentstat uses | cs | 查看各组件信息 |
| configmaps | cm | ConfigMap是用来存 储配置文件的kuberne tes资源对象 |
| daemonsets | ds | DaemonSet 只管理 Po d对象,通过nodeAffi nity 和 Toleration 两个 调度器,保证每个节点 上只有一个Pod。集群 动态加入了新Node, DaemonSet 中的 Pod 也会添加在新加入Nod e上。删除一个Daemo nSet也会级联删除所 有其创建的Pod。 |
| deployments | deploy | Deployment 为 pod 和 ReplicaSet 提供了一 个声明式定义方法,用 来替代以前的Replicat ionController 来方便 的管理应用 |
| endpoints | ep | 节点 |
| events | ev | Events 它是Kubelet 负责用来记录多个容器 运行过程中的事件,命 名由被记录的对象和时 间戳构成 |
| horizontalpoda utoscalers | hpa | |
| ingresses | ing | |
| jobs | ||
| limitranges | limits | |
| namespaces | ns | |
| networkpolicies | ||
| statefulsets | ||
| persistentvolu meclaims | pvc | |
| persistentvolu mes | PV | |
| pods | PO | |
| podsecuritypoli cies | psp | |
| podtemplates | ||
| replicasets | rs | |
| replicationcont rollers | rc | |
| resourcequotas | quota | |
| conjob | ||
| secrets | ||
| serviceaccount s | ||
| services | svs | |
| storageclasses | sc | |
| thirdpartyresou rces |
在一个命令行中也可以同时对多个资源对象进行操作,以多个TYPE和NAME的组合表示,示例如下:
- 获取多个pod的信息:
kubectl get pods pod1 pod2
- 获取多种对象的信息:
kubectl get pod/pod1 rc/rc1
- 同时应用多个YAML文件,以多个-f file参数表示:
kubectl get pod -f pod1.yaml -f pod2.yaml
kubectl create -f pod1.yaml -f rc1.yaml -f service1.yaml
2、kubectl子命令详解
kebectl的子命令非常丰富,涵盖了对kubernetes集群的主要操作,包括资源对象的创建、删除、查看、修改、配置、运行等,详细的子命令如表:
| 子命令 | 语法 | 说明 |
|---|---|---|
| annotate | kubectl annotate (-f Filename | type name | type/name) kl=vl, k2=v2…. | 添加或更新资源对象 的 annotation 信息 |
| api-version | kubectl api-version [flags] | 列出当前系统版本支持的api版本列表,格式为”group/version” |
| apply | kubectl apply -f flename [flags] | 从配置文件或stdin中队资源对象进行配置更新 |
| attach | kubectl attach POD -c container [flags] | 附着到一个正在运行的容器上 |
| auth | kubectl auth [flags] [optionins] | 检测RBAC权限设置 |
| autoscale | kubectl antoscale (-f filename | tpye name | tpye/name) | 对deployment, replicaSet或replicationController进行碎屏自动扩容和缩容的设置 |
| cluster-info | kubectl cluster-info [flags] | 显示集群master和内置服务的信息 |
| completion | kubectl completion shell [flags] | 输出shell命令的执行结果[bash/zsh] |
| config | kubcetl config subcommand [flags] | 修改kubeconfig文件 |
| convert | kubcetl convert -f filename [flags] | 转换配置文件为不同的api版本 |
| cordon | kubectl cordon node[flags] | 将noe标记为unschedulable, 即隔离出集群的调度范围 |
| create | kubectl create -f filename [flags] | 从配置文件或stdin总创建资源对象 |
| delete | kubectl delete (-f filenname|type name |-l label)[flags] | 从配置文件,stdin,资源名称或label selector 删除资源对象 |
| describe | kubectl describe (-f filename|type name)[flags] | 描述一个或多个资源对象的详细信息 |
| diff | kubectl diff -f filename [options] | 查看配置文件与当前系统中正在运行的资源对象的差异 |
| drain | kubectl drain node [flags] | 首先将node设置为unschedulable,然后删除在该node上运行的所有pod,但不会上删除不由api server管理的pod |
| edit | kubectl edit (-f filename | type name | type/name)[flags] | 编辑资源对象的属性,在线更新 |
| exec | kubectl exec pod [-c container] [-i] [-t] [flags] [–command] [args…] | 执行一个容器的命令 |
| explain | kubectl explain [–include-extended-apis=trye] [–recursive=false] [flags] | 对资源对象的详细说明 |
| expose | kubectl expose (-f fliename| type name) [–port=port] [–prorocol=TCP|UDP] [–target-port=number-or-name] [–name=name] [–external-ip=external-ip-of-service] [–type=type] | 将已经存在的一个rc,service,deployment或Pod暴露为一个新的service |
| get | kubcet get (-f filename| type name | -l label) [–watch] [–sort-by-FLELD] [[-o | –output]=OUTPUT_FORMAT] [flags] | 显示一个或多个资源对象的信息概要 |
| label | kubect label (-f filename|type name) k1=v1…kn=vn [–overwrite] [–all] [–resource-version=version] [flags] | 设置或资源对象的label |
| logs | kubectl logs pod [-c container] [–follow] [flags] | 在屏幕上打印一个容器的日志 |
| patch | kubectl patch [-f filename | tpye name ] –patch patch [flags] | 以merge形式对资源对象的那部分字段的值进行修改 |
| plugin | kubectl plugin [flags] [optionins] | 在kubectl命令行适用用户自定义的插件 |
| port-forward | kubectl port-forward pod [local_port:] remote_port […[local_port_n:] remote_port_n] [flags] | 将本机的某个端口映射到pod的端口号,通常用于测试 |
| porxy | kubectl porxy [–port=port] [–wwww=static-dir] [–wwww-prefix=prefix] [–api-prefix=prefix] [flags] | 将本机某个端口号映射到api server |
| replace | kubcetl replace -f filename [flags] | 从配置文件或stdin替换资源对象 |
| rolling-update | kubectl rolling-updateold_controller_name ([new_controller_name] –image=new_contaioner_image | -f new_conteroller_spec) [flags] | 对rc进行滚动升级 |
| rollout | kubectl rollout subcommand [flags] | 对deployment 进行管理,可用操作包括: history,pause, resume,undo,status |
| run | kubectl run name –image=image [-env=“key=value”] [–port=port] [–replicas=replicas] [–dry-run=bool] [–overrides=inline-json] [flags] | 基于一个镜像再kubernetes集群上启动一个deployment |
| scale | kubectl scale (-f filename| type name) –replicas=count [–resource-version=version] [–current-replicas=count] [flags] | 扩容,缩容一个deployment,replicaset,RC或job中的pod的数量 |
| set | kubectl set subcommand [flags] | 设置资源对象的某个特定信息,目前仅支持修改容器的镜像 |
| taint | kubcet taint node namek1=v1:taint_effect_1…kv=vn:taint_effect_n [flags] | 设置node的taint信息,用于将特定的pod调度到特定的node的操作,为alpha版本的功能 |
| top | kubect top node | 查看node或pod的资源使用情况,需要在集群中运行metics server |
| uncordon | kubectl uncordon Node | |
| version | kubectl version | 打印系统的版本信息 |
3、kubectl 参数列表
kubectl 命令行的公共启动参数如下:
| 参数名和取值示例 | 说明 |
|---|---|
| –alsolgtostderr=false | 设置为true表示将日志输出到文件和同事输出到stderr |
| –as=” | 设置本征操作的用户名 |
| –certificate-authority=” | 设置CA授权的cert文件路径 |
| –client-certificate=” | 用于TLS的客户端证书文件路径 |
| –client-key=” | 用于TLS的客户端KEY文件路径 |
| –cluster=” | 设置要使用的kubeconfig中的cluster名 |
| –context=” | 设置要系统的kubeconfig中的context名 |
| –insecure-skip-tls-verify-false | 设置为true表示跳过TLS安全验证模式,将使得https连接不安全 |
| –kubeconfig=” | kubeconfig配置文件路径,在配置文件中包括Master地址信息及必要的认证信息 |
| –log-backtrace-at=:0 | 记录日志每到’file:行号’时打印一次stack trace |
| –log-dir=” | 日志文件路径 |
| –log-flush-frequency=5s | 设置flush日志文件的时间间隔 |
| –logtostderr=true | 设置为true表示将日志输出到stderr,不输出到日志文件中 |
| –match-server-version=false | 设置为true表示客户端版本号需要与服务端一致 |
| –namespace=” | 设置本次操作所在的namespace |
| –password=” | 设置apiserver的 basic authentication的密码 |
| -s,–server=” | 设置apiserver的url地址,默认值为localhost:8080 |
| –stderrthreshold=2 | 在该threshold级别之上的日志将输出到stderr |
| –token=” | 设置访问apiserver的安全token |
| –user=” | 指定apiserver的basic authentication的用户名 |
| –v=0 | log日志级别 |
| –vmodule= | log基于模块的详细日志级别 |
4、kubectl输出格式
kubectl命令可以用多种格式对结果进行显示,输出的格式通过-o(不是零是o)参数指定
| 输出格式 | 说明 |
|---|---|
| -o=custom-columns=<spec> | 根据自定义列明进行输出,以逗号分割 |
| -o=custom-columns-file=<filename> | 从文件中获取自定义列明进行输出 |
| -o=json | 以JSON格式显示结果 |
| -o=jsonpath=<template> | 输出jsonpath表达式定义的字段信息 |
| -o=jsonpath-file=<filename> | 输出jsonpath表达式定义的字段信息,来源于文件 |
| -o=name | 近输出资源对象的名称 |
| -o=wide | 输出额外的信息,对于pod,将输出pod所在的Node所在的node名 |
| -o=yaml | 以yaml格式显示结果 |
5、kubectl操作示例
5.1、 根据yaml配置文件一次性创建service和rc
kubectl create -f my-service.yaml -f my-rc.yaml
5.2、 根据目录下所有.yaml、.yml、.json文件的定义进行创建操作
kubectl create -f <directory>
5.3、 查看所有的Pod列表
kubectl get pods -A
5.4、 查看rc和service列表
kubectl get rc,service
5.5、 查看Node的详细信息
kubectl describe node <node-name>
5.6、 显示Pod的详细信息
kubectl describe pods <node-name>
5.7、 显示由RC管理的Pod信息
kubectl describe pods <rc-name>
5.8、 删除基于pod.yaml文件定义的Pod
kubectl delete -f pod.yaml
5.9、 删除所有包括某个label的Pod和Service
kubectl delete pods,services -l name=<label-name>
5.10、 删除所有Pod
kubectl delete pods --all
5.11、 在Pod的容器里执行date命令,默认使用Pod的第一个容器执行
kubectl exec <pod-name> date
5.12、 指定Pod中某个容器执行date命令
kubectl exec <pod-name> -c <container-name> date
5.13、 以bash方式登录到Pod中的某个容器里
kubectl exec -ti <pod-name> -c <container-name> /bin/bash
5.14、 查看容器输出到stdout的日志
kubectl logs <pod-name>
5.15、 跟踪查看容器的日志,相当于tail -f命令的结果
kubectl logs -f <pod-name> -c <container-name>


发表评论
共 0 条评论
暂无评论