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=\ |
从文件中获取自定义列明进行输出 |
-o=json | 以JSON格式显示结果 |
-o=jsonpath=\<template> | 输出jsonpath表达式定义的字段信息 |
-o=jsonpath-file=\ |
输出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 条评论
暂无评论