zoukankan      html  css  js  c++  java
  • Kubernetes kubectl 命令概述

    kubectl用于运行Kubernetes集群命令的管理工具。

    语法

    kubectl [command] [TYPE] [NAME] [flags]
    
    • command:指定要在一个或多个资源执行的操作
    • TYPE:指定资源类型Resource types。Resource types会区分大小写,也可以指定单数,复数或缩写的形式
    • Name区分大小写,如果省略Name,则显示所有资源的详细信息
    • 命令行指定的flags将覆盖默认值和任何相应的环境变量

    格式化输出 Formatting output

    所有kubectl命令输出的默认格式是可读的纯文本格式。要以特定的格式向终端窗口输出详细信息,可以将-o或-output flags 添加到支持的kubectl命令中。

    语法

    kubectl [command] [TYPE] [NAME] -o=<output_format>
    

    支持以下输出格式:

    输出格式 描述
    -o=custom-columns=spec 使用逗号分隔的custom columns列表打印一个表
    -o=custom-columns-file=filename 使用文件中的custom columns模板打印表filename
    -o=json 输出JSON格式的API对象
    -o=jsonpath-file=filename 打印由 file中的jsonpath表达式定义的字段filename
    -o=name 仅打印资源名称,而不打印其他内容
    -o=wide 以纯文本格式输出任何附加信息。对于pod,包括node名称
    -o=yaml 输出YAML格式的API对象
    -o=jsonpath=template 打印在jsonpath表达式中定义的字段

    sort排序

    要将对象输出到终端窗口中的排序列表,可以将--sort-by标志添加到kubectl支持的命令中,通过使用--sort-by标志指定任何数字或字符串字段来对对象进行排序,要指定字段,请使用jsonpath表达式。

    $ kubectl [command] [TYPE] [NAME] --sort-by=<jsonpath_exp>
    #打印按名称排序的pod列表
    $ kubectl get pods --sort-by=.metadata.name
    

    kubectl 命令详解

    选项:

          --alsologtostderr[=false]: 同时输出日志到标准错误控制台和文件。
          --api-version="": 和服务端交互使用的API版本。
          --certificate-authority="": 用以进行认证授权的.cert文件路径。
          --client-certificate="": TLS使用的客户端证书路径。
          --client-key="": TLS使用的客户端密钥路径。
          --cluster="": 指定使用的kubeconfig配置文件中的集群名。
          --context="": 指定使用的kubeconfig配置文件中的环境名。
          --insecure-skip-tls-verify[=false]: 如果为true,将不会检查服务器凭证的有效性,这会导致你的HTTPS链接变得不安全。
          --kubeconfig="": 命令行请求使用的配置文件路径。
          --log-backtrace-at=:0: 当日志长度超过定义的行数时,忽略堆栈信息。
          --log-dir="": 如果不为空,将日志文件写入此目录。
          --log-flush-frequency=5s: 刷新日志的最大时间间隔。
          --logtostderr[=true]: 输出日志到标准错误控制台,不输出到文件。
          --match-server-version[=false]: 要求服务端和客户端版本匹配。
          --namespace="": 如果不为空,命令将使用此namespace。
          --password="": API Server进行简单认证使用的密码。
      -s, --server="": Kubernetes API Server的地址和端口号。
          --stderrthreshold=2: 高于此级别的日志将被输出到错误控制台。
          --token="": 认证到API Server使用的令牌。
          --user="": 指定使用的kubeconfig配置文件中的用户名。
          --username="": API Server进行简单认证使用的用户名。
          --v=0: 指定输出日志的级别。
          --vmodule=: 指定输出日志的模块,格式如下:pattern=N,使用逗号分隔。
    

    kubectl run

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

    语法:

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

    示例:

    # 启动nginx实例。
    $ kubectl run nginx --image=nginx
    # 启动hazelcast实例,暴露容器端口 5701。
    $ kubectl run hazelcast --image=hazelcast --port=5701
    # 启动hazelcast实例,在容器中设置环境变量“DNS_DOMAIN = cluster”和“POD_NAMESPACE = default”。
    $ kubectl run hazelcast --image=hazelcast --env="DNS_DOMAIN=cluster" --env="POD_NAMESPACE=default"
    # 启动nginx实例,设置副本数5。
    $ kubectl run nginx --image=nginx --replicas=5
    # 运行 Dry  打印相应的API对象而不创建它们。
    $ kubectl run nginx --image=nginx --dry-run
    

    kubectl annotate

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

    • Annotations由key/value组成。
    • Annotations的目的是存储辅助数据,特别是通过工具和系统扩展操作的数据,更多介绍在这里。
    • 如果--overwrite为true,现有的annotations可以被覆盖,否则试图覆盖annotations将会报错。
    • 如果设置了--resource-version,则更新将使用此resource version,否则将使用原有的resource version。
    • 支持的资源包括但不限于(大小写不限):pods (po)、services (svc)、 replicationcontrollers (rc)、nodes (no)、events (ev)、componentstatuses (cs)、 limitranges (limits)、persistentvolumes (pv)、persistentvolumeclaims (pvc)、 resourcequotas (quota)和secrets。
    $ kubectl annotate [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]
    

    示例:

    # 更新pod “foo”,设置其注解description的值为my frontend。
    # 如果同一个注解被赋值了多次,只保存最后一次设置的值。
    $ kubectl annotate pods foo description='my frontend'
    
    # 更新“pod.json”文件中type和name字段指定的pod的注解。
    $ kubectl annotate -f pod.json description='my frontend'
    
    # 更新pod “foo”,设置其注解description的值为my frontend running nginx,已有的值将被覆盖。
    $ kubectl annotate --overwrite pods foo description='my frontend running nginx'
    
    # 更新同一namespace下所有的pod。
    $ kubectl annotate pods --all description='my frontend running nginx'
    
    # 仅当pod “foo”当前版本为1时,更新其注解
    $ kubectl annotate pods foo description='my frontend running nginx' --resource-version=1
    
    # 更新pod “foo”,删除其注解description。
    # 不需要--override选项。
    $ kubectl annotate pods foo description-
    

    选项:

    --all[=false]: 选择namespace中所有指定类型的资源。
    -f, --filename=[]: 用来指定待升级资源的文件名,目录名或者URL。
    --overwrite[=false]: 如果设置为true,允许覆盖更新注解,否则拒绝更新已存在的注解。
    --resource-version="": 如果不为空,仅当资源当前版本和指定版本相同时才能更新注解。仅当更新单个资源时有效。
    

    其余选项继承自父命令!

    kubectl autoscale

    使用 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
    
    # 使用RC“foo”设定,使其Pod的数量介于1和5之间,CPU使用率维持在80%。
    $ kubectl autoscale rc foo --max=5 --cpu-percent=80
    

    kubectl apply

    通过文件名或控制台输入,对资源进行配置。
    接受JSON和YAML格式的描述文件。

    $ kubectl apply -f FILENAME
    

    示例:

    # 将pod.json中的配置应用到pod
    $ kubectl apply -f ./pod.json
    
    # 将控制台输入的JSON配置应用到Pod
    $ cat pod.json | kubectl apply -f -
    

    选项:

      -f, --filename=[]: 包含配置信息的文件名,目录名或者URL。
      -o, --output="": 输出格式,使用“-o name”来输出简短格式(资源类型/资源名)。
          --schema-cache-dir="/tmp/kubectl.schema": 如果不为空,将API schema缓存为指定文件,默认缓存到“/tmp/kubectl.schema”。
          --validate[=true]: 如果为true,在发送到服务端前先使用schema来验证输入。
    

    kubectl attach

    连接到现有容器中一个正在运行的进程。

    $ kubectl attach POD -c CONTAINER
    

    示例:

    # 获取正在运行中的pod 123456-7890的输出,默认连接到第一个容器
    $ kubectl attach 123456-7890
    
    # 获取pod 123456-7890中ruby-container的输出
    $ kubectl attach 123456-7890 -c ruby-container date
    
    # 切换到终端模式,将控制台输入发送到pod 123456-7890的ruby-container的“bash”命令,并将其输出到控制台/
    # 错误控制台的信息发送回客户端。
    $ kubectl attach 123456-7890 -c ruby-container -i -t
    

    选项:

      -c, --container="": 容器名。
      -i, --stdin[=false]: 将控制台输入发送到容器。
      -t, --tty[=false]: 将标准输入控制台作为容器的控制台输入。
    

    kubectl config

    使用config的子命令修改kubeconfig配置文件,如“kubectl config set current-context my-context”。
    配置文件的读取遵循如下规则:

    • 如果指定了--kubeconfig选项,那么只有指定的文件被加载。此选项只能被设置一次,并且不会合并其他文件。
    • 如果设置了$KUBECONFIG环境变量,将同时使用此环境变量指定的所有文件列表(使用操作系统默认的顺序),所有文件将被合并。当修改一个值时,将修改设置了该值的文件。当创建一个值时,将在列表的首个文件创建该值。若列表中所有的文件都不存在,将创建列表中的最后一个文件。
    • 如果前两项都没有设置,将使用 ${HOME}/.kube/config,并且不会合并其他文件。

    kubectl config set-cluster
    在kubeconfig配置文件中设置一个集群项。 如果指定了一个已存在的名字,将合并新字段并覆盖旧字段。

    $ kubectl config set-cluster NAME [--server=server] [--certificate-authority=path/to/certficate/authority] [--api-version=apiversion] [--insecure-skip-tls-verify=true]
    

    示例

    # 仅设置e2e集群项中的server字段,不影响其他字段
    $ kubectl config set-cluster e2e --server=https://1.2.3.4
    
    # 向e2e集群项中添加认证鉴权数据
    $ kubectl config set-cluster e2e --certificate-authority=~/.kube/e2e/kubernetes.ca.crt
    
    # 取消dev集群项中的证书检查
    $ kubectl config set-cluster e2e --insecure-skip-tls-verify=true
    

    选项

          --api-version="": 设置kuebconfig配置文件中集群选项中的api-version。
          --certificate-authority="": 设置kuebconfig配置文件中集群选项中的certificate-authority路径。
          --embed-certs=false: 设置kuebconfig配置文件中集群选项中的embed-certs开关。
          --insecure-skip-tls-verify=false: 设置kuebconfig配置文件中集群选项中的insecure-skip-tls-verify开关。
          --server="": 设置kuebconfig配置文件中集群选项中的server。
    

    kubectl config set-context
    在kubeconfig配置文件中设置一个环境项。 如果指定了一个已存在的名字,将合并新字段并覆盖旧字段。

    $ kubectl config set-context NAME [--cluster=cluster_nickname] [--user=user_nickname] [--namespace=namespace]
    

    示例

    # 设置gce环境项中的user字段,不影响其他字段。
    $ kubectl config set-context gce --user=cluster-admin
    

    选项

          --cluster="": 设置kuebconfig配置文件中环境选项中的集群。
          --namespace="": 设置kuebconfig配置文件中环境选项中的命名空间。
          --user="": 设置kuebconfig配置文件中环境选项中的用户。
    

    kubectl config set-credentials
    在kubeconfig配置文件中设置一个用户项。 如果指定了一个已存在的名字,将合并新字段并覆盖旧字段。

    客户端证书设置: –client-certificate=certfile –client-key=keyfile
    不记名令牌设置: –token=bearer_token
    基础认证设置: –username=basic_user –password=basic_password
    不记名令牌和基础认证不能同时使用。

    $ kubectl config set-credentials NAME [--client-certificate=path/to/certfile] [--client-key=path/to/keyfile] [--token=bearer_token] [--username=basic_user] [--password=basic_password]
    

    示例

    # 仅设置cluster-admin用户项下的client-key字段,不影响其他值
    $ kubectl config set-credentials cluster-admin --client-key=~/.kube/admin.key
    
    # 为cluster-admin用户项设置基础认证选项
    $ kubectl config set-credentials cluster-admin --username=admin --password=uXFGweU9l35qcif
    
    # 为cluster-admin用户项开启证书验证并设置证书文件路径
    $ kubectl config set-credentials cluster-admin --client-certificate=~/.kube/admin.crt --embed-certs=true
    

    选项

          --client-certificate="": 设置kuebconfig配置文件中用户选项中的证书文件路径。
          --client-key="": 设置kuebconfig配置文件中用户选项中的证书密钥路径。
          --embed-certs=false: 设置kuebconfig配置文件中用户选项中的embed-certs开关。
          --password="": 设置kuebconfig配置文件中用户选项中的密码。
          --token="": 设置kuebconfig配置文件中用户选项中的令牌。
          --username="": 设置kuebconfig配置文件中用户选项中的用户名。
    

    kubectl config set
    在kubeconfig配置文件中设置一个单独的值
    PROPERTY_NAME 使用“.”进行分隔,每段代表一个属性名或者map的键,map的键不能包含“.”。 PROPERTY_VALUE 需要设置的新值。

    $ kubectl config set PROPERTY_NAME PROPERTY_VALUE  
    

    kubectl config unset
    在kubeconfig配置文件中清除一个单独的值。 PROPERTY_NAME 使用“.”进行分隔,每段代表一个属性名或者map的键,map的键不能包含“.”。

    $ kubectl config unset PROPERTY_NAME
    

    kubectl config use-context
    使用kubeconfig中的一个环境项作为当前配置。

    $ kubectl config use-context CONTEXT_NAME
    

    kubectl config view
    显示合并后的kubeconfig设置,或者一个指定的kubeconfig配置文件。 用户可使用–output=template –template=TEMPLATE来选择输出指定的值。

    $ kubectl config view
    

    示例

    # 显示合并后的kubeconfig设置
    $ kubectl config view
    
    # 获取e2e用户的密码
    $ kubectl config view -o template --template='{{range .users}}{{ if eq .name "e2e" }}{{ index .user.password }}{{end}}{{end}}'
    

    选项

          --flatten[=false]: 将读取的kubeconfig配置文件扁平输出为自包含的结构(对创建可迁移的kubeconfig配置文件有帮助)
          --merge=true: 按照继承关系合并所有的kubeconfig配置文件。
          --minify[=false]: 如果为true,不显示目前环境未使用到的任何信息。
          --no-headers[=false]: 当使用默认输出格式时不打印标题栏。
      -o, --output="": 输出格式,只能使用json|yaml|wide|name|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...中的一种。参见golang模板[http://golang.org/pkg/text/template/#pkg-overview]和jsonpath模板[http://releases.k8s.io/release-1.1/docs/user-guide/jsonpath.md]。
          --output-version="": 输出资源使用的API版本(默认使用api-version)。
          --raw[=false]: 显示未经格式化的字节信息。
      -a, --show-all[=false]: 打印输出时,显示所有的资源(默认隐藏状态为terminated的pod)。
          --sort-by="": 如果不为空,对输出的多个结果根据指定字段进行排序。该字段使用jsonpath表达式(如“ObjectMeta.Name”)描述,并且该字段只能为字符串或者整数类型。
          --template="": 当指定了-o=go-template或-o=go-template-file时使用的模板字符串或者模板文件。模板的格式为golang模板[http://golang.org/pkg/text/template/#pkg-overview]。
    

    kubectl create

    通过文件名或控制台输入,创建资源。
    接受JSON和YAML格式的描述文件。

    $ kubectl create -f FILENAME
    

    示例

    # 使用pod.json文件创建一个pod
    $ kubectl create -f ./pod.json
    
    # 通过控制台输入的JSON创建一个pod
    $ cat pod.json | kubectl create -f -
    
    # 创建一个名为my-dep的deployment,运行busybox镜像。
    $ kubectl create deployment my-dep --image=busybox
    
    # 创建一个名为my-namespace的namespace
    $ kubectl create namespace my-namespace
    
    # 创建Service名为my-cs为的clusterIP
    $ kubectl create service clusterip my-cs --tcp=5678:8080
    
    # 创建Service名为my-ns的ExternalName
    $ kubectl create service externalname my-ns --external-name bar.com
    
    # 创建一个Service名为my-lbs的LoadBalancer。
    $ kubectl create service loadbalancer my-lbs --tcp=5678:8080
    
    # 创建service名为my-ns的新的nodeport。
    $ kubectl create service nodeport my-ns --tcp=5678:8080
    
    # 创建一个名为my-service-account的 service account
    $ kubectl create serviceaccount my-service-account
    

    选项

      -f, --filename=[]: 用以创建资源的文件名,目录名或者URL。
      -o, --output="": 输出格式,使用“-o name”来输出简短格式(资源类型/资源名)。
          --schema-cache-dir="/tmp/kubectl.schema": 如果不为空,将API schema缓存为指定文件,默认缓存到“/tmp/kubectl.schema”。
          --validate[=true]: 如果为true,在发送到服务端前先使用schema来验证输入。
    

    kubectl delete

    通过文件名、控制台输入、资源名或者label selector删除资源。 接受JSON和YAML格式的描述文件。
    只能指定以下参数类型中的一种:文件名、资源类型和名称、资源类型和label selector。 注意:delete命令不检查资源版本,如果有人在你进行删除操作的同时进行更新操作,他所做的更新将随资源同时被删除。

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

    示例

    # 通过pod.json文件中指定的资源类型和名称删除一个pod
    $ kubectl delete -f ./pod.json
    
    # 通过控制台输入的JSON所指定的资源类型和名称删除一个pod
    $ cat pod.json | kubectl delete -f -
    
    # 删除所有名为“baz”和“foo”的pod和service
    $ kubectl delete pod,service baz foo
    
    # 删除所有带有lable name=myLabel的pod和service
    $ kubectl delete pods,services -l name=myLabel
    
    # 删除UID为1234-56-7890-234234-456456的pod
    $ kubectl delete pod 1234-56-7890-234234-456456
    
    # 删除所有的pod
    $ kubectl delete pods --all
    

    选项

          --all[=false]: 使用[-all]选择所有指定的资源。
          --cascade[=true]: 如果为true,级联删除指定资源所管理的其他资源(例如:被replication controller管理的所有pod)。默认为true。
      -f, --filename=[]: 用以指定待删除资源的文件名,目录名或者URL。
          --grace-period=-1: 安全删除资源前等待的秒数。如果为负值则忽略该选项。
          --ignore-not-found[=false]: 当待删除资源未找到时,也认为删除成功。如果设置了--all选项,则默认为true。
      -o, --output="": 输出格式,使用“-o name”来输出简短格式(资源类型/资源名)。
      -l, --selector="": 用于过滤资源的Label。
          --timeout=0: 删除资源的超时设置,0表示根据待删除资源的大小由系统决定。
    

    kubectl describe

    输出指定的一个/多个资源的详细信息。
    此命令组合调用多条API,输出指定的一个或者一组资源的详细描述。

    $ kubectl describe TYPE NAME_PREFIX
    

    首先检查是否有精确匹配TYPE和NAME_PREFIX的资源,如果没有,将会输出所有名称以NAME_PREFIX开头的资源详细信息。

    支持的资源包括但不限于(大小写不限):pods (po)、services (svc)、 replicationcontrollers (rc)、nodes (no)、events (ev)、componentstatuses (cs)、 limitranges (limits)、persistentvolumes (pv)、persistentvolumeclaims (pvc)、 resourcequotas (quota)和secrets。

    $ kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | -l label] | TYPE/NAME)
    

    示例

    # 描述一个node
    $ kubectl describe nodes kubernetes-minion-emt8.c.myproject.internal
    
    # 描述一个pod
    $ kubectl describe pods/nginx
    
    # 描述pod.json中的资源类型和名称指定的pod
    $ kubectl describe -f pod.json
    
    # 描述所有的pod
    $ kubectl describe pods
    
    # 描述所有包含label name=myLabel的pod
    $ kubectl describe po -l name=myLabel
    
    # 描述所有被replication controller “frontend”管理的pod(rc创建的pod都以rc的名字作为前缀)
    $ kubectl describe pods frontend
    

    选项

      -f, --filename=[]: 用来指定待描述资源的文件名,目录名或者URL。
      -l, --selector="": 用于过滤资源的Label。
    

    kubectl edit

    使用系统默认编辑器编辑服务端的资源。
    edit命令允许你直接编辑使用命令行工具获取的任何资源。此命令将打开你通过KUBE_EDITOR,GIT_EDITOR 或者EDITOR环境变量定义的编辑器,或者直接使用“vi”。你可以同时编辑多个资源,但所有的变更都只会一次性 提交。除了命令行参数外,此命令也接受文件名,但所直指定的文件必须使用早于当前的资源版本。
    所编辑的文件将使用默认的API版本输出,或者通过–output-version选项显式指定。默认的输出格式是YAML, 如果你需要使用JSON格式编辑,使用-o json选项。
    如果当更新资源的时候出现错误,将会在磁盘上创建一个临时文件,记录未成功的更新。更新资源时最常见的错误 是其他人也在更新服务端的资源。当这种情况发生时,你需要将你所作的更改应用到最新版本的资源上,或者编辑 保存的临时文件,使用最新的资源版本。

    kubectl edit (RESOURCE/NAME | -f FILENAME)
    

    示例

      # 编辑名为“docker-registry”的service
      $ kubectl edit svc/docker-registry
    
      # 使用一个不同的编辑器
      $ KUBE_EDITOR="nano" kubectl edit svc/docker-registry
    
      # 编辑名为“docker-registry”的service,使用JSON格式、v1 API版本
      $ kubectl edit svc/docker-registry --output-version=v1 -o json
    

    选项

      -f, --filename=[]: 用来指定待编辑资源的文件名,目录名或者URL。
      -o, --output="yaml": 输出格式,可选yaml或者json中的一种。
          --output-version="": 输出资源使用的API版本(默认使用api-version)。
    

    kubectl exec

    在容器内部执行命令。

    $ kubectl exec POD [-c CONTAINER] -- COMMAND 
    [args...]
    

    示例

    # 默认在pod 123456-7890的第一个容器中运行“date”并获取输出
    $ kubectl exec 123456-7890 date
    
    # 在pod 123456-7890的容器ruby-container中运行“date”并获取输出
    $ kubectl exec 123456-7890 -c ruby-container date
    
    # 切换到终端模式,将控制台输入发送到pod 123456-7890的ruby-container的“bash”命令,并将其输出到控制台/
    # 错误控制台的信息发送回客户端。
    $ kubectl exec 123456-7890 -c ruby-container -i -t -- bash -il
    

    选项

      -c, --container="": 容器名。如果未指定,使用pod中的一个容器。
      -p, --pod="": Pod名。
      -i, --stdin[=false]: 将控制台输入发送到容器。
      -t, --tty[=false]: 将标准输入控制台作为容器的控制台输入。
    

    kubectl get

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

    $ 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
    
    # 列出Pod以及运行Pod节点信息。
    $ kubectl get pods -o wide
    
    # 列出指定NAME的 replication controller信息。
    $ kubectl get replicationcontroller web
    
    # 以JSON格式输出一个pod信息。
    $ kubectl get -o json pod web-pod-13je7
    
    # 以“pod.yaml”配置文件中指定资源对象和名称输出JSON格式的Pod信息。
    $ kubectl get -f pod.yaml -o json
    
    # 返回指定pod的相位值。
    $ kubectl get -o template pod/web-pod-13je7 --template={{.status.phase}}
    
    # 列出所有replication controllers和service信息。
    $ kubectl get rc,services
    
    # 按其资源和名称列出相应信息。
    $ kubectl get rc/web service/frontend pods/web-pod-13je7
    
    # 列出所有不同的资源对象。
    $ kubectl get all
    

    kubectl label

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

    • label 必须以字母或数字开头,可以使用字母、数字、连字符、点和下划线,最长63个字符。
    • 如果--overwrite 为 true,则可以覆盖已有的 label,否则尝试覆盖 label 将会报错。
    • 如果指定了--resource-version,则更新将使用此资源版本,否则将使用现有的资源版本。
    $ label [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]
    

    示例

    给名为foo的Pod添加label unhealthy=true。
    
    kubectl label pods foo unhealthy=true
    给名为foo的Pod修改label 为 'status' / value 'unhealthy',且覆盖现有的value。
    
    kubectl label --overwrite pods foo status=unhealthy
    给 namespace 中的所有 pod 添加 label
    
    kubectl label pods --all status=unhealthy
    仅当resource-version=1时才更新 名为foo的Pod上的label。
    
    kubectl label pods foo status=unhealthy --resource-version=1
    删除名为“bar”的label 。(使用“ - ”减号相连)
    
    kubectl label pods foo bar-
    

    kubectl logs

    输出pod中一个容器的日志。如果pod只包含一个容器则可以省略容器名。

    $ kubectl logs [-f] [-p] POD [-c CONTAINER]
    

    示例

    # 返回仅包含一个容器的pod nginx的日志快照
    $ kubectl logs nginx
    
    # 返回pod ruby中已经停止的容器web-1的日志快照
    $ kubectl logs -p -c ruby web-1
    
    # 持续输出pod ruby中的容器web-1的日志
    $ kubectl logs -f -c ruby web-1
    
    # 仅输出pod nginx中最近的20条日志
    $ kubectl logs --tail=20 nginx
    
    # 输出pod nginx中最近一小时内产生的所有日志
    $ kubectl logs --since=1h nginx
    

    选项

      -c, --container="": 容器名。
      -f, --follow[=false]: 指定是否持续输出日志。
          --interactive[=true]: 如果为true,当需要时提示用户进行输入。默认为true。
          --limit-bytes=0: 输出日志的最大字节数。默认无限制。
      -p, --previous[=false]: 如果为true,输出pod中曾经运行过,但目前已终止的容器的日志。
          --since=0: 仅返回相对时间范围,如5s、2m或3h,之内的日志。默认返回所有日志。只能同时使用since和since-time中的一种。
          --since-time="": 仅返回指定时间(RFC3339格式)之后的日志。默认返回所有日志。只能同时使用since和since-time中的一种。
          --tail=-1: 要显示的最新的日志条数。默认为-1,显示所有的日志。
          --timestamps[=false]: 在日志中包含时间戳。
    

    kubectl replace

    使用配置文件或stdin来替换资源。
    支持JSON和YAML格式。

    $ replace -f FILENAME
    

    示例

    # 使用pod.json中的数据替换pod。
    $ kubectl replace -f ./pod.json
    
    # 根据传入的JSON替换pod。
    $ cat pod.json | kubectl replace -f -
    
    # 更新镜像版本(tag)到v4
    $ kubectl get pod mypod -o yaml | sed 's/(image: myimage):.*$/1:v4/' | kubectl replace -f -
    
    # 强制替换,删除原有资源,然后重新创建资源
    $kubectl replace --force -f ./pod.json
    

    kubectl scale

    扩容或缩容 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
    
    # 将由“foo.yaml”配置文件中指定的资源对象和名称标识的Pod资源副本设为3。
    $ kubectl scale --replicas=3 -f foo.yaml
    
    # 如果当前副本数为2,则将其扩展至3。
    $ kubectl scale --current-replicas=2 --replicas=3 deployment/mysql
    
    # 设置多个RC中Pod副本数量。
    $ kubectl scale --replicas=5 rc/foo rc/bar rc/baz
    
  • 相关阅读:
    [CSP-S模拟测试]:集合合并(记忆化搜索)
    [CSP-S模拟测试]:小L的数(数位DP+模拟)
    [CSP-S模拟测试]:小Y的图(最小生成树+LCA)
    [CSP-S模拟测试]:小W的魔术(数学 or 找规律)
    [CSP-S模拟测试]:最大值(数学+线段树)
    [CSP-S模拟测试]:最小值(DP+乱搞)
    [CSP-S模拟测试]:中间值(二分)
    [CSP-S模拟测试]:Cover(单调栈++单调队列+DP)
    [JZO6401]:Time(贪心+树状数组)
    BZOJ3193 [JLOI2013]地形生成 【dp】
  • 原文地址:https://www.cnblogs.com/aresxin/p/Kubernetes-kubectl.html
Copyright © 2011-2022 走看看