zoukankan      html  css  js  c++  java
  • Kubernetes容器编排技术---kubectl命令行工具用法详解(三)

    kubectl命令行工具用法详解

    kubect用法概述

      kubectl命令行的语法如下:  

    $ kubectl [command] [TYPE] [NAME] [flags]
    
    •  command:子命令,用于操作Kubernetes集群资源对象的命令,例如create、delete、describe、get、apply等。
    •  TYPE:资源对象的类型,区分大小写,能以单数形式、负数形式或者简写形式表示。
    •  NAME:  资源对象的名称,区分大小写。如果不指定名称,则系统将返回属于TYPE的全部对象的列表。
    •  flags:kubectl子命令的可选参数

    可以通过命令查看可操作的资源类型

    通过如下命令查看可操作性资源类型
    # kubectl api-resources
    通过如下命令查看可操作性资源的具体用法
    # kubectl explain <资源名称>
    kubectl可操作的资源对象类型
                         资源对象的名称                                缩写          

    componentstatuses

    cs
    daemonsets ds
    deployments  
    events ev
     endpoints  ep
     horizontalpodautoscalers  hpa
     ingresses  ing
     jobs  
     limitranges  limits
     nodes  no
     namespaces  ns
     pods  po
     persistentvolumes  pv
     persistentvolumeclaims  pvc
     resourcequotas  quota
     replicationcontrollers  rc
     secrets  
     serviceaccounts  
     services  svc

    kubectl参数列表

      kubectl的子命令非常丰富,涵盖了对Kubernetes集群的主要操作,包括资源对象的创建、删除、查看、修改、配置、运行等。

    kubectl子命令详解
    子命令 语法 说明
    annotate kubectl annotate [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]
    [options]
    添加或更新资源对象的annotation信息
    api-versions kubectl api-versions [flags] [options] 列出当前系统支持的API版本列表,格式为“group/version”
    apply kubectl apply (-f FILENAME | -k DIRECTORY) [options] 从配置文件或stdin中对资源对象进行配置更新
    attach kubectl apply (-f FILENAME | -k DIRECTORY) [options] 附着到一个正在运行的容器
    atuoscale kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [options] 对Deployment、ReplicaSet或ReplicationController进行水平自动扩缩容的设置
    cluster-info kubectl cluster-info [flags] [options] 显示集群信息
    completion kubectl completion SHELL [options] 输出shell命令的执行结果码(bash或zsh)
    config kubectl config SUBCOMMAND [options] 修改kubeconfig文件
    convert kubectl convert -f FILENAME [options] 转换配置文件为不同的API版本
    cordon kubectl cordon NODE [options] 将Node标记为unschedulable,即“隔离”出集群调度范围
    delete kubectl delete ([-f FILENAME] | [-k DIRECTORY] | TYPE [(NAME | -l label | --all)]) [options] 根据配置文件、stdin、资源名称或label selector删除资源对象
    describe kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | -l label] | TYPE/NAME) [options] 描述一个或多个资源对象的详细信息
    drain kubectl drain NODE [options] 首先将Node设置为unschedulable,然后删除该Node上运行的所有Pod,但不会删除不由apiserver管理的Pod
    edit kubectl edit (RESOURCE/NAME | -f FILENAME) [options] 编辑资源对象的属性,在线更新
    exec kubectl exec (POD | TYPE/NAME) [-c CONTAINER] [flags] -- COMMAND [args...] [options]  执行一个容器中的命令
    explain kubectl explain RESOURCE [options] 对资源对象属性的详细说明
    expose kubectl expose (-f FILENAME | TYPE NAME) [--port=port] [--protocol=TCP|UDP|SCTP] [--target-port=number-or-name]
    [--name=name] [--external-ip=external-ip-of-service] [--type=type] [options]
    将已经存在的一个RC、Service、Deployment或Pod暴露为一个新的Service
    get kubectl get
    [(-o|--output=)json|yaml|wide|custom-columns=...|custom-columns-file=...|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...]
    (TYPE[.VERSION][.GROUP] [NAME | -l label] | TYPE[.VERSION][.GROUP]/NAME ...) [flags] [options]
    显示一个或多个资源对象的概要信息
    label kubectl label [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]
    [options]
    设置或更新资源对象的labels
    logs kubectl logs [-f] [-p] (POD | TYPE/NAME) [-c CONTAINER] [options] 屏幕打印
    namespace   已被kubectl config set-context替代
    patch kubectl patch (-f FILENAME | TYPE NAME) -p PATCH [options] 以merge形式对资源对象的部分字段的值进行修改
    port-forward kubectl port-forward TYPE/NAME [options] [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N] 将本机的某个端口号映射到Pod端口号,通常用于测试工作
    proxy kubectl proxy [--port=PORT] [--www=static-dir] [--www-prefix=prefix] [--api-prefix=prefix] [options] 将本机某个端口号映射到apiserver
    replace kubectl replace -f FILENAME [options] 从配置文件或stdin替换资源对象
    rolling-update kubectl rolling-update OLD_CONTROLLER_NAME ([NEW_CONTROLLER_NAME] --image=NEW_CONTAINER_IMAGE | -f
    NEW_CONTROLLER_SPEC) [options]
    对RC进行滚动升级
    rollout kubectl rollout SUBCOMMAND [options] 对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] [--command] -- [COMMAND] [args...] [options]
    基于一个镜在Kubernetes集群上启动一个Deployment
    scale kubectl scale [--resource-version=version] [--current-replicas=count] --replicas=COUNT (-f FILENAME | TYPE NAME)
    [options]
    扩容、缩容一个Deployment、ReplicaSet、RC或Job中Pod的数量
    set kubectl set SUBCOMMAND [options] 设置资源对象的某个特定信息,目前仅支持修改容器的镜像
    taint kubectl taint NODE NAME KEY_1=VAL_1:TAINT_EFFECT_1 ... KEY_N=VAL_N:TAINT_EFFECT_N [options] 设置Node的taint信息,用于将特定的Pod调度到特定的Node的操作,为Alpha版本功能
    uncordon kubectl uncordon NODE [options] 将Node设置为schedulable
    version kubectl version [flags] [options] 打印系统版本信息

    kubectl输出格式

    常用的输出格式示例如下:

    显示pod的更多信息

    # kubectl get pod <pod-name> -o wide
    

    以yaml格式显示pod的详细信息

    # kubectl get pod <pod-name> -o yaml
    

     另外,还可以将输出结果按某个字段排序,通过--strt-by参数以jsonpath表达式进行指定:

    # kubectl [command] [TYPE] [NAME] --sort-by=<jsonpath_exp>
    

     例如:按照名字进行排序

    # kubectl get pods --sort-by=.metadata.name
    

     kubectl操作示例

    1. 创建资源对象

    根据yaml配置文件一次性创建service和rc 

    # kubectl create -f my-service.yaml -f my-rc.yaml
    

    根据<directory>目录下所有.yaml、.yml、.json文件的定义进行创建操作

    # kubectl create -f <directory>
    

     2.查看资源对象

    查看所有pod列表

    # kubectl get pods
    

    查看rc和service列表

    # kubectl get rc,service
    

     3. 描述资源对象

    显示Node的详细信息

    # kubectl describe nodes <node-name>
    

     显示Pod的详细信息

    # kubectl describe pods/<pod-name>
    

     显示有RC管理的Pod的信息

    # kubectl describe pods <rc-name>
    

     4.删除资源对象

    基于pod.yaml定义的名称删除Pod:

    # kubectl delete -f pod.yaml
    

     删除所有包含某个label的Pod和service

    # kubectl delete pods,services -l name=<label-name>
    

     删除所有Pod

    # kubectl delete pods --all
    

     5.执行容器的命令

    执行Pod的date命令,默认使用Pod中的第1个容器执行

    # kubectl exec <pod-name> date
    

     指定Pod中某个容器执行date命令

    # kubectl exec <pod-name> -c <container-name> date
    

     通过bash获得Pod中某个容器的TTY,相当于登录容器

    # kubectl exec -it <pod-name> -c <container-name> /bin/bash
    

     6.查看容器的日志

    查看容器输出到stdout的日志

    # kubectl logs <pod-name>
    

     跟踪查看容器的日志,相当于tail -f命令的结果

    # kubectl logs -f <pod-name> -c <container-name>
    

      

  • 相关阅读:
    maven项目中各文件都没有报错,但是项目名称有红叉
    executeFind()方法和execute()方法区别
    数据库查询
    getHibernateTemplate出现的所有find方法的总结
    HQL和SQL的区别
    Java创建对象的方式
    xml中的<![CDATA[]]>和转义字符
    DWRUtil.addOptions
    dwr
    response.setHeader("Cache-Control","no-cache");的作用
  • 原文地址:https://www.cnblogs.com/weidongliu/p/11413871.html
Copyright © 2011-2022 走看看