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是用来存储配置文件的kubernetes资源对象 |
daemonsets | ds | DaemonSet只管理pod对象,通过nodeAffinity和Toleration两个调度器,保证每个节点上只有一个pod。集群动态加入了新的Node,DaemonSet中的pod也会添加在新加入Node上。删除一个DaemonSet也会级联删除所有其创建的pod |
deployment | deploy | Deployment为pod和ReplicaSet提供了一个声明式定义方法,用来替代以前的ReplicationController来方便的管理应用 |
endpoints | ep | 节点 |
events | ev | Event是kubelet负责用来记录多个容器运行过程中的时间,命名由被记录的对象和时间戳构成 |
horizontalPodAutoscalers | hpa | |
ingresses | ing | |
jobs | ||
limitranges | limits | |
namespaces | ns | |
networkPolicies | ||
statefulset | ||
persistentVolumeClaims | pvc | |
persistentVolume | pv | |
pods | po | |
podSecurityPolicies | psp | |
podTemplates | ||
replicaset | rs | |
replicationContRollers | rc | |
resourceQuotas | quota | |
conjob | ||
secrets | ||
serviceAccounts | ||
service | svc | |
storageclasses | sc | |
thirdPartyResources |
这一个命令行中也可以同时对多个资源对象进行操作,以多个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
kubectl 子命令详情
kubectl的子命令非常丰富,涵盖了对kubernetes集群的主要操作,包括资源对象的创建、删除、查看、修改、配置、运行等。
annotate:添加或更新资源对象的annotation信息
kubectl annotate (-f Filename | type name | type/name) k1=v1,k2=v2
api-version:列出当前系统支持的api版本列表,格式为“group/version”
kubectl api-version [flags]
apply:从配置文件或stdin中对资源对象镜像配置更新
kubectl apply -f filename [flags]
attach:附着到一个正在运行的容器上
kubectl attach POD -c container [flags]
auth:检测RBAC权限设置
kubectl auth [flags] [optioins]
autoscale:对deploy,replicaSet或replicationController进行水平自动扩容和缩容的设置
kubectl autoscale (-f filename | type name | type/name)
cluster-info:显示集群master和内置服务的信息
kubectl cluster-info [flags]
completion:输出shell命名的执行结果码(bash或zsh)
kubectl completion shell [flags]
config:修改kubeconfig文件
kubectl config subcommand [flags]
convert:转换配置文件为不同的api版本
kubect convert -f filename [flags]
cordon:将node标记为unschedulable,即隔离出集群调度范围
kubectl cordon node [flags]
create:从配置文件或stdin中创建资源对象
kubectl create -f filename [flags]
delete:从配置文件,stdin,资源名称或labelseletor删除资源对象
kubectl delete (-f filename | type name | -l label) [flags]
describe:描述一个或多个资源对象的详细信息
kubectl describe (-f filename | type name) [flags]
diff:查看配置文件与当前系统中正在运行的资源对象的差异
kubectl diff -f filename [options]
drain:首先将node设置为unschedulable,然后删除在该node上运行的所有pod,但不会删除不用api server管理的pod
kubectl drain node [flags]
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=true] [--recursive=false] [flags]
expose:将已经存在的一个rc、service、deploy或pod暴露为一个新的service
kubectl expose (-f filename | type name)[--port=port] [--target-port=port] [--protocol-TCP|UDP] [--name=name] [----external-ip=external-ip-of-service] [--type=type]
get:显示一个或多个资源对象的概要信息
kubectl get (-f filename | type name | -l label) [--watch] [--sort-by-FIELD] [[-o | --output]=OUTPUT_FORMAT] [flags]
label:设置资源对象的label
kubectl label (-f fileanme | type name) k1=v1...kn=vn [--resource-version=version] [flags]
logs:在屏幕上打印一个容器的日志
kubectl logs pod [-c container] [--follow] [flags]