Kubernetes kubectl 命令速查表

目录

#kubectl run - 创建容器镜像

#kubectl expose - 将资源暴露为新的service

#kubectl annotate -更新一个或多个资源的Annotations信息

#kubectl autoscale - Pod水平自动伸缩

#kubectl convert -转换配置文件为不同的API版本

#kubectl create -创建一个集群资源对象

#kubectl create clusterrole -创建ClusterRole

#kubectl create clusterrolebinding -为特定的ClusterRole创建ClusterRoleBinding

#kubectl create configmap -创建configmap

#kubectl create deployment -创建deployment

#kubectl create namespace -创建namespace

#kubectl create poddisruptionbudget -创建pod disruption budget

#kubectl create quota -创建resourcequota

#kubectl create role -创建role

#kubectl create rolebinding -为特定Role或ClusterRole创建RoleBinding

#kubectl create service -使用指定的子命令创建 Service服务

##kubectl create service clusterip

##kubectl create service externalname

##kubectl create service loadbalancer

##kubectl create service nodeport

#kubectl create serviceaccount

#kubectl create secret -使用指定的子命令创建 secret

##kubectl create secret tls

##kubectl create secret generic

##kubectl create secret docker-registry

kubectl delete -删除资源对象

#kubectl edit -编辑服务器上定义的资源对象

kubectl get -获取资源信息

#kubectl label -更新资源对象的label

kubectl patch -使用patch更新资源对象字段

kubectl replace -替换资源对象

kubectl rolling-update -使用RC进行滚动更新

#kubectl scale -扩缩Pod数量

#kubectl rollout -对资源对象进行管理

##kubectl rollout history -查看历史版本

##kubectl rollout pause -标记资源对象为暂停状态

##kubectl rollout resume -恢复已暂停资源

##kubectl rollout status -查看资源状态

##kubectl rollout undo -回滚版本

#kubectl set -配置应用资源

##kubectl set resources -指定Pod的计算资源需求

##kubectl set selector -设置资源对象selector

##kubectl set image -更新已有资源对象中的容器镜像

##kubectl set subject -更新RoleBinding / ClusterRoleBinding中User、Group 或 ServiceAccount



k8s 官方文档地址: 参考 | Kub参考 | Kubernetes参考 | Kub



#kubectl run - 创建容器镜像

  • 创建并运行一个或多个容器镜像。
  • 创建一个deployment 或job 来管理容器。

语法:

kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...]

选项说明

  • --port 暴露容器端口  
  • --env 容器中设置环境变量
  • --replicas  设置副本数
  • --dry-run

示例:

   启动测试实例;。 testapp自定义的启动实例名

 kubectl run testapp --image=wangan:test001

#kubectl expose - 将资源暴露为新的service

将资源暴露为新的Kubernetes Service。

资源包括:

pod(po),service(svc),replication controller(rc),deployment(deploy),replica set(rs)

语法:

kubectl expose (-f FILENAME | TYPE NAME) [--port=port] [--protocol=TCP|UDP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type]

选项说明:


示例:

#kubectl annotate -更新一个或多个资源的Annotations信息

更新一个或多个资源的Annotations信息。

  • Annotations由key/value组成。
  • Annotations的目的是存储辅助数据,特别是通过工具和系统扩展操作的数据。

语法:

 annotate [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]

选项说明:

  • 如果--overwrite为true,现有的annotations可以被覆盖,否则试图覆盖annotations将会报错。
  • 如果设置了--resource-version,则更新将使用此resource version,否则将使用原有的resource version。

示例:

#kubectl autoscale - Pod水平自动伸缩

使用 autoscaler 自动设置在kubernetes集群中运行的pod数量(水平自动伸缩)。

指定Deployment、ReplicaSet或ReplicationController,并创建已经定义好资源的自动伸缩器。使用自动伸缩器可以根据需要自动增加或减少系统中部署的pod数量。

语法:

autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags]

选项说明:

示例

使用 Deployment “foo”设定,使用默认的自动伸缩策略,指定目标CPU使用率,使其Pod数量在2到10之间。

kubectl autoscale deployment foo --min=2 --max=10

#kubectl convert -转换配置文件为不同的API版本

转换配置文件为不同的API版本,支持YAML和JSON格式。

该命令将配置文件名,目录或URL作为输入,并将其转换为指定的版本格式,如果目标版本未指定或不支持,则转换为最新版本。

默认输出将以YAML格式打印出来,可以使用- o选项改变输出格式

语法:

convert -f FILENAME

选项说明:

示例:


#kubectl create -创建一个集群资源对象

通过配置文件名或stdin创建一个集群资源对象。

支持JSON和YAML格式的文件。

语法:

create -f FILENAME

选项说明:

示例

通过pod.json文件创建一个pod。

kubectl create -f ./pod.json


#kubectl create clusterrole -创建ClusterRole

语法:

clusterrole NAME --verb=verb --resource=resource.group [--resource-name=resourcename] [--dry-run]

选项说明:

示例:

创建一个名为“pod-reader”的ClusterRole,允许用户在pod上执行“get”,“watch”和“list”

kubectl create clusterrole pod-reader --verb=get,list,watch --resource=pods

#kubectl create clusterrolebinding -为特定的ClusterRole创建ClusterRoleBinding

为特定的ClusterRole创建ClusterRoleBinding。

语法:

clusterrolebinding NAME --clusterrole=NAME [--user=username] [--group=groupname] [--serviceaccount=namespace:serviceaccountname] [--dry-run]

选项说明:

示例

在集群范围将cluster-admin ClusterRole授予用户user1,user2和group1

kubectl create clusterrolebinding cluster-admin --clusterrole=cluster-admin --user=user1 --user=user2 --group=group1


#kubectl create configmap -创建configmap

根据配置文件、目录或指定的literal-value创建configmap 。

configmap 用来保存一个或多个key/value信息。

当基于配置文件创建configmap时,key将默认为文件的基础名称,value默认为文件文本内容。如果基本名称的key无效,则可以指定另一个key。

当基于目录创建configmap时,key还是文件的基础名称,目录中每个配置文件名都被设置为key,文件内容设置为value。

语法:

configmap NAME [--from-file=[key=]source] [--from-literal=key1=value1] [--dry-run]

选项说明:

示例:
根据文件(路径path/to/bar) 创建一个名为my-config的configmap

kubectl create configmap my-config --from-file=path/to/bar

#kubectl create deployment -创建deployment

创建具有指定名称的deployment 。

语法:

deployment NAME --image=image [--dry-run]

选项说明:

示例:
创建一个名为my-dep的deployment,运行busybox镜像。

kubectl create deployment my-dep --image=busybox


#kubectl create namespace -创建namespace

创建一个具有指定名称的namespace。

语法:

 namespace NAME [--dry-run]

选项说明:

示例:
创建一个名为my-namespace的namespace

kubectl create namespace my-namespace

#kubectl create poddisruptionbudget -创建pod disruption budget

使用指定的name、selector和所需的最小pod数量,创建一个pod disruption budget。

语法:

poddisruptionbudget NAME --selector=SELECTOR --min-available=N [--dry-run]

选项说明:

示例

创建名为my-pdb的pod disruption budget,使用app = rails label #来选择所有po​​d,要求至少1个Pod可用。

kubectl create poddisruptionbudget my-pdb --selector=app=rails --min-available=1


#kubectl create quota -创建resourcequota

创建具有指定名称、hard限制和可选scopes的resourcequota

语法:

quota NAME [--hard=key1=value1,key2=value2] [--scopes=Scope1,Scope2] [--dry-run=bool]

选项说明:

示例:
创建名为my-quota的resourcequota

kubectl create quota my-quota --hard=cpu=1,memory=1G,pods=2,services=3,replicationcontrollers=2,resourcequotas=1,secrets=5,persistentvolumeclaims=10

#kubectl create role -创建role

使用单一规则创建Role。

语法:

role NAME --verb=verb --resource=resource.group/subresource [--resource-name=resourcename] [--dry-run]

选项说明:

示例:

创建名为“pod-reader”的Role ,允许用户在pod上执行“get”,“watch”和“list”

kubectl create role pod-reader --verb=get --verb=list --verb=watch --resource=pods

#kubectl create rolebinding -为特定Role或ClusterRole创建RoleBinding

为特定Role或ClusterRole创建RoleBinding。

语法:

rolebinding NAME --clusterrole=NAME|--role=NAME [--user=username] [--group=groupname] [--serviceaccount=namespace:serviceaccountname] [--dry-run]

选项说明:

示例:
将admin ClusterRole授予user1,user2和group1。

kubectl create rolebinding admin --clusterrole=admin --user=user1 --user=user2 --group=group1

#kubectl create service -使用指定的子命令创建 Service服务

使用指定的子命令创建 Service服务。

##kubectl create service clusterip

创建具有指定Service名的clusterIP。

语法:

 clusterip NAME [--tcp=<port>:<targetPort>] [--dry-run]

选项说明:

示例:
创建Service名为my-cs为的clusterIP

kubectl create service clusterip my-cs --tcp=5678:8080

##kubectl create service externalname

创建指定Service名的ExternalName。

语法:

externalname NAME --external-name external.name [--dry-run]

选项说明:

示例:
创建Service名为my-ns的ExternalName

kubectl create service externalname my-ns --external-name bar.com


 

##kubectl create service loadbalancer

创建一个指定名称的Service的LoadBalancer。

语法:

loadbalancer NAME [--tcp=port:targetPort] [--dry-run]

选项说明:

示例:
创建一个Service名为my-lbs的LoadBalancer。

kubectl create service loadbalancer my-lbs --tcp=5678:8080

##kubectl create service nodeport

创建指定Service名称的nodeport。

语法:

nodeport NAME [--tcp=port:targetPort] [--dry-run]

选项说明:

示例:
创建service名为my-ns的新的nodeport。

kubectl create service nodeport my-ns --tcp=5678:8080

#kubectl create serviceaccount

创建指定名称的service account。

语法:

serviceaccount NAME [--dry-run]

选项说明:

示例:
创建一个名为my-service-account的 service account
 

kubectl create serviceaccount my-service-account

#kubectl create secret -使用指定的子命令创建 secret

使用指定的子命令创建 secret。

##kubectl create secret tls

从给定的(public/private)公钥/私钥对创建TLS secret 。

公共密钥证书必须是.PEM编码并匹配指定的私钥。

语法:

tls NAME --cert=path/to/cert/file --key=path/to/key/file [--dry-run]

选项说明:

示例:
使用指定的key创建名为tls-secret的TLS secret :

kubectl create secret tls tls-secret --cert=path/to/tls.cert --key=path/to/tls.key

##kubectl create secret generic

语法:

根据配置文件、目录或指定的literal-value创建secret。

secret可以保存为一个或多个key/value信息。

当基于配置文件创建secret时,key将默认为文件的基础名称,value默认为文件内容。如果基本名称的key无效,则可以指定另一个key。

当基于目录创建secret时,key还是文件的基础名称,目录中有效的key的每个文件都被打包到secret中,除了常规文件之外的任何目录条目都被忽略(例如subdirectories, symlinks, devices, pipes, etc)

选项说明:

示例:
使用指定的keys创建一个名为my-secret的secret

kubectl create secret generic my-secret --from-file=ssh-privatekey=~/.ssh/id_rsa --from-file=ssh-publickey=~/.ssh/id_rsa.pub

##kubectl create secret docker-registry

创建与Docker registries一起使用的secret。

Dockercfg secrets用于对Docker registries进行安全认证。

当使用Docker命令push镜像时,可以进行Docker registries认证,

 docker login DOCKER_REGISTRY_SERVER --username=DOCKER_USER --
password=DOCKER_PASSWORD --email=DOCKER_EMAIL'.

这时会产生一个 ~/.dockercfg 文件,在“docker push”和“docker pull”命令时,此文件用于registries进行认证。

在创建应用时,当node节点从私有仓库Pull镜像时,需要有相应凭证,才能使用私有Docker仓库。我们可以通过创建dockercfg secret并添加service account来实现。

语法:

docker-registry NAME --docker-username=user --docker-password=password --docker-email=email [--docker-server=string] [--from-literal=key1=value1] [--dry-run]

选项说明:

示例:
如果没有.dockercfg 文件,则可以使用以下命令创建dockercfg secret:
 

kubectl create secret docker-registry my-secret --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL

kubectl delete -删除资源对象

通过配置文件名、stdin、资源名称或label选择器来删除资源。

支持JSON和YAML格式文件。可以只指定一种类型的参数:文件名、资源名称或label选择器。

有些资源,如pod,支持优雅的(graceful)删除,因为这些资源一般是集群中的实体,所以删除不可能会立即生效,这些资源在强制终止之前默认定义了一个周期(宽限期),但是你可以使用--grace-period flag来覆盖该值,或者通过pass --now设置该周期为1。

如果托管Pod的Node节点已经停止或者无法连接API Server,使用delete命令删除Pod需等待时间更长。要强制删除资源,需指定- force flag,且设置周期(宽限期)为0。

如果执行强制删除Pod,则调度程序会在节点释放这些Pod之前将新的Pod放在这些节点上,并使之前Pod立即被逐出。

注意:执行delete命令时不会检查资源版本,如果在执行delete操作时有人进行了更新操作,那么更新操作将连同资源一起被删除。
 

语法:
 

delete ([-f FILENAME] | TYPE [(NAME | -l label | --all)])

选项说明:

示例:
 

使用 pod.json中指定的资源类型和名称删除pod。


 

#kubectl edit -编辑服务器上定义的资源对象

使用默认编辑器 编辑服务器上定义的资源。

使用命令行工具获取的任何资源都可以使用edit命令编辑。edit命令会打开使用KUBE_EDITOR,GIT_EDITOR 或者EDITOR环境变量定义的编辑器,可以同时编辑多个资源,但所编辑过的资源只会一次性提交。edit除命令参数外还接受文件名形式。

文件默认输出格式为YAML。要以JSON格式编辑,请指定“-o json”选项。

如果在更新资源时报错,将会在磁盘上创建一个临时文件来记录。在更新资源时最常见的错误是几个用户同时使用编辑器更改服务器上资源,发生这种情况,你需要将你的更改应用到最新版本的资源上,或者更新保存的临时副本。

语法:
 

edit (RESOURCE/NAME | -f FILENAME)

选项说明:

示例:
编辑名为'docker-registry'的service:

kubectl edit svc/docker-registry

kubectl get -获取资源信息

获取列出一个或多个资源的信息。

可以使用的资源包括:

  • all
  • certificatesigningrequests (aka 'csr')
  • clusterrolebindings
  • clusterroles
  • clusters (valid only for federation apiservers)
  • componentstatuses (aka 'cs')
  • configmaps (aka 'cm')
  • controllerrevisions
  • cronjobs
  • daemonsets (aka 'ds')
  • deployments (aka 'deploy')
  • endpoints (aka 'ep')
  • events (aka 'ev')
  • horizontalpodautoscalers (aka 'hpa')
  • ingresses (aka 'ing')
  • jobs
  • limitranges (aka 'limits')
  • namespaces (aka 'ns')
  • networkpolicies (aka 'netpol')
  • nodes (aka 'no')
  • persistentvolumeclaims (aka 'pvc')
  • persistentvolumes (aka 'pv')
  • poddisruptionbudgets (aka 'pdb')
  • podpreset
  • pods (aka 'po')
  • podsecuritypolicies (aka 'psp')
  • podtemplates
  • replicasets (aka 'rs')
  • replicationcontrollers (aka 'rc')
  • resourcequotas (aka 'quota')
  • rolebindings
  • roles
  • secrets
  • serviceaccounts (aka 'sa')
  • services (aka 'svc')
  • statefulsets
  • storageclasses
  • thirdpartyresources

语法:
 

 get [(-o|--output=)json|yaml|wide|custom-columns=...|custom-columns-file=...|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...] (TYPE [NAME | -l label] | TYPE/NAME ...) [flags]

选项说明:

示例:
列出所有运行的Pod信息。

kubectl get pods

#kubectl label -更新资源对象的label

更新(增加、修改或删除)资源上的 label(标签)。

  • label 必须以字母或数字开头,可以使用字母、数字、连字符、点和下划线,最长63个字符。

语法:
 

 label [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]

选项说明:

  • 如果--overwrite 为 true,则可以覆盖已有的 label,否则尝试覆盖 label 将会报错。
  • 如果指定了--resource-version,则更新将使用此资源版本,否则将使用现有的资源版本。

示例:
给名为foo的Pod添加label unhealthy=true。

kubectl label pods foo unhealthy=true

kubectl patch -使用patch更新资源对象字段

使用(patch)补丁修改、更新资源的字段。

支持JSON和YAML格式。

语法:
 

 patch (-f FILENAME | TYPE NAME) -p PATCH

选项说明:

示例:
使用patch更新Node节点。
 

kubectl patch node k8s-node-1 -p '{"spec":{"unschedulable":true}}'

kubectl replace -替换资源对象

使用配置文件或stdin来替换资源。

支持JSON和YAML格式。如果替换当前资源,则必须提供完整的资源规范。可以通过以下命令获取:

kubectl get TYPE NAME -o yaml

语法:

replace -f FILENAME

选项说明:

示例:
使用pod.json中的数据替换pod。
 

kubectl replace -f ./pod.json

kubectl rolling-update -使用RC进行滚动更新

执行指定ReplicationController的滚动更新。

该命令创建了一个新的RC, 然后一次更新一个pod方式逐步使用新的PodTemplate,最终实现Pod滚动更新,new-controller.json需要与之前RC在相同的namespace下。

http://kubernetes.io/images/docs/kubectl_rollingupdate.svg

语法:
 

rolling-update OLD_CONTROLLER_NAME ([NEW_CONTROLLER_NAME] --image=NEW_CONTAINER_IMAGE | -f NEW_CONTROLLER_SPEC)

选项说明:

示例:
使用frontend-v2.json中的新RC数据更新frontend-v1的pod。
 

kubectl rolling-update frontend-v1 -f frontend-v2.json

#kubectl scale -扩缩Pod数量

扩容或缩容 Deployment、ReplicaSet、Replication Controller或 Job 中Pod数量。

scale也可以指定多个前提条件,如:当前副本数量或 --resource-version ,进行伸缩比例设置前,系统会先验证前提条件是否成立。

语法:

scale [--resource-version=version] [--current-replicas=count] --replicas=COUNT (-f FILENAME | TYPE NAME)

选项说明:

示例:
将名为foo中的pod副本数设置为3。

kubectl scale --replicas=3 rs/foo

#kubectl rollout -对资源对象进行管理

对资源进行管理

可用资源包括:

  • deployments
  • daemonsets

##kubectl rollout history -查看历史版本

查看之前推出的版本(历史版本)。

语法:

 history (TYPE NAME | TYPE/NAME) [flags]

选项说明:

示例
查看deployment的历史记录
 

kubectl rollout history deployment/abc

##kubectl rollout pause -标记资源对象为暂停状态

将提供的资源标记为暂停

被pause命令暂停的资源不会被控制器协调使用,可以是“kubectl rollout resume”命令恢复已暂停资源。

目前仅支持的资源:deployments。


语法:

pause RESOURCE

选项说明:

示例:

将deployment标记为暂停。
只要deployment在暂停中,使用deployment更新将不会生效。

kubectl rollout pause deployment/nginx


##kubectl rollout resume -恢复已暂停资源

恢复已暂停的资源

语法:

 resume RESOURCE

选项说明:

示例:
恢复已暂停的 deployment

kubectl rollout resume deployment/nginx


##kubectl rollout status -查看资源状态

查看资源的状态。

语法:
 

status (TYPE NAME | TYPE/NAME) [flags]

选项说明:

  • —watch = false 来查看当前状态,需要查看特定修订版本状态 请使用--revision = N 来指定。

示例
查看deployment的状态

kubectl rollout status deployment/nginx

##kubectl rollout undo -回滚版本

回滚到之前的版本。

语法:

undo (TYPE NAME | TYPE/NAME) [flags]

选项说明:
 

示例:
回滚到之前的deployment版本
 

kubectl rollout undo deployment/abc

#kubectl set -配置应用资源

配置应用资源。

使用这些命令能帮你更改现有应用资源一些信息。


##kubectl set resources -指定Pod的计算资源需求

资源对象中的pod可以指定计算资源需求(CPU-单位m、内存-单位Mi),即使用的最小资源请求(Requests),限制(Limits)的最大资源需求,Pod将保证使用在设置的资源数量范围。

对于每个Pod资源,如果指定了Limits(限制)值,并省略了Requests(请求),则Requests默认为Limits的值。

可用资源对象包括(支持大小写):replicationcontroller、deployment、daemonset、job、replicaset。

语法:

resources (-f FILENAME | TYPE NAME) ([--limits=LIMITS & --requests=REQUESTS]

选项说明:

  • Requests:计算资源最小数量。
  • Limits:资源最大允许数量。

示例:
将deployment的nginx容器cpu限制为“200m”,将内存设置为“512Mi”

kubectl set resources deployment nginx -c=nginx --limits=cpu=200m,memory=512Mi


 

##kubectl set selector -设置资源对象selector

设置资源的selector(选择器)。如果在调用"set selecto"命令之前已经存在选择器,则新创建的选择器将覆盖原来的选择器。

selector必须以字母或数字开头,最多包含63个字符,可使用:字母、数字、连字符" - " 、点"."和下划线" _ "。如果指定了--resource-version,则更新将使用此资源版本,否则将使用现有的资源版本。注意:目前selector命令只能用于Service对象。

语法:

selector (-f FILENAME | TYPE NAME) EXPRESSIONS [--resource-version=version]

选项说明:

示例:
在创建deployment/service对之前设置labels和selector。

kubectl create service clusterip my-svc --clusterip="None" -o yaml --dry-run | kubectl set selector --local -f - 'environment=qa' -o yaml | kubectl create -f -
kubectl create deployment my-dep -o yaml --dry-run | kubectl label --local -f - environment=qa -o yaml | kubectl create -f -

##kubectl set image -更新已有资源对象中的容器镜像

更新现有的资源对象的容器镜像。

可使用资源对象包括(不区分大小写):

pod (po)、replicationcontroller (rc)、deployment (deploy)、daemonset (ds)、job、replicaset (rs)

语法:
 

image (-f FILENAME | TYPE NAME) CONTAINER_NAME_1=CONTAINER_IMAGE_1 ... CONTAINER_NAME_N=CONTAINER_IMAGE_N

选项说明:

示例:
将deployment中的nginx容器镜像设置为“nginx:1.9.1”。

kubectl set image deployment/nginx busybox=busybox nginx=nginx:1.9.1


 

##kubectl set subject -更新RoleBinding / ClusterRoleBinding中User、Group 或 ServiceAccount

更新RoleBinding / ClusterRoleBinding中User、Group 或 ServiceAccount。

语法:
 

subject (-f FILENAME | TYPE NAME) [--user=username] [--group=groupname] [--serviceaccount=namespace:serviceaccountname] [--dry-run]

选项说明:

示例:
更新一个ClusterRoleBinding 的 serviceaccount1
 

kubectl set subject clusterrolebinding admin --serviceaccount=namespace:serviceaccount1


Kubernetes kubectl 命令表 _ Kubernetes(K8S)中文文档_Kubernetes中文社区

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值