zoukankan      html  css  js  c++  java
  • kubectl命令行工具

    kubectl说明:

    当没有使用ui,api ,操作kubernetes集群时,使用kubectl来操作集群的 增删改查 

    kubectl 相当于一个客户端cli  来与kube-apiserver进行交互,达到操控集群的作用。

    kubectl 语法:

    kubectl命令行语法:

    kubectl [command] [type] [name] [flags]
    • command

    用于操作kubernetes集群资源对象的命令,如create delete apply logs describe get rollout exec  edit等

    • type

    资源对象的类型,如 pod  deployment  service 等。。。。

    • name

    资源对象的名称,区分大小写,如果不指定具体的资源对象名称,系统将返回 该type的所有资源对象,例如kubectl get pods  系统将返回所有default 名称空间下的所有pod 

    • flags

    kubectl的子命令的可选参数,例如 -s 指定 apiserver的 url地址,而不使用默认的。

    kubectl可操作的资源对象类型

    type:

    image.png

    kubectl的子命令:

    command:

    image.png

    image.png

    image.png

    image.png

    kubectl 可选参数:

    flags:

    image.png

    kubectl的输出格式:

    kubect支持结果以多种格式输出显示,使用-o 参数指定

    自定义字段输出

    kubectl [command] [type] -o=<output_format>

    image.png

    kubectl get pod -o=custom-columns=NAME:.metadata.name,RSRC:.metadata.resourceVersion

    image.png

    # cat template.txt   #第一行自定义的字段名称,第二行对应的集群内的字段 字段之间使用空格隔开
    NAME RSRC
    metadata.name metadata.resourceVersion
    # kubectl get pod -o=custom-columns-file=template.txt

    image.png

    jsonpath和jsonpath-file

    kubectl get pods -o=jsonpath='{.items[0]}{"
    "}'
    kubectl get pods -o=jsonpath='{.items[0].apiVesion}{"
    "}' #其中.items[0] 可以省略
    kubectl get pods -o=jsonpath='{.items[0].metadata.labels.app}{"
    "}'
    # kubectl get pods -o=jsonpath-file=json.txt 
    v1
    nginx
    # cat json.txt 
    {.items[0].apiVersion}
    {.items[0].metadata.labels.app}
    

    image.png

    image.png

    按照某个字段排序 --sort-by=<jsonpath-exp>

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

    kubectl 常用命令

    一、get

    获取所有namespace:

    kubectl get ns

    在指定的namespace下获取资源:

    kubectl -n {$nameSpace} get pods

    以yaml格式输出资源:

    kubectl -n {$nameSpace} -o yaml

    通用格式:

    kubectl get {$sourceType} --all-namespaces

    常用的资源类型({$resourceType})有:

    po(pod)

    ns(命名空间namespace)

    instance(实例)

    svc(service服务):定义了一个 Pod 的逻辑分组,一种可以访问它们的策略(微服务)。

    cm(configMap):存储全局配置变量的,将分布式系统中不同模块的环境变量统一到一个对象中管理。

    ds(deamonSet):在每台计算节点上运行一个守护进程(如日志采集等),有时pod处于pending可能是因为某个deamonSet没起来。

    deploy(deployment):用于启动(上线/部署)一个Pod或者ReplicaSet。这个如果有问题,那么其他依赖它来部署的资源就肯定不会正常了。

    二、describe 

    描述一个资源:

    kubectl -n {$nameSpace} describe {$resourceType} {$resourceName}

    三、logs

    查看日志,--tail指定只看最后1000行:

    kubectl -n {$nameSpace} logs --tail=1000 {$podName} | less

    四、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

    五、create

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

    kubeclt create -f {$yamlorJsonFilePath}

    六、edit

    编辑一个资源文件,这里以编辑configMap资源对象为例(yaml格式):

    kubectl -n {$nameSpace} edit {$resourceType} {$resourceName} -o yaml

    七、rolling-update

    执行指定ReplicationController的滚动更新。该命令会创建一个新的RC,等新pod完全起来后删除一个旧的pod,之后重复操作,直到替换掉所有的pod。

    kubectl rolling-update {$resourceName} -f {$yamlFile}

    八、delete

    指定资源类型和名字删除一个资源:

    kubectl -n {$nameSpace} delete {$resourceType} {$resourceName}

    批量删除资源:

    kubectl -n {$nameSpace} delete {$resourceType} -l {$label}={$labelValue}

    九、exec

    exec主要作用是在容器内部执行命令(一般为查看容器内部日志),这里以一个小例子说明kubectl exec命令的作用。

    kubectl exec -it nginx-86c57db685-kqndx bash
    kubectl exec -it nginx-86c57db685-kqndx -c nginx bash  #-c指定pod 中的具体容器

    十、autoscale

    使用 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

    参考:

    http://docs.kubernetes.org.cn/683.html

    kubernetes权威指南第二版

  • 相关阅读:
    winform窗体扁平化设置,窗体移动,关闭
    WPF按钮控件模板
    C#连接Sqlite报错:{"试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)"}
    C#SQLite使用教程笔记
    C#自定义控件导航菜单(自定义事件,属性)
    LCS局域网屏幕监控系统安装指导
    System.Data.SQLite.dll 未安装或者版本冲突,按下面步骤操作即可 1、从Nuget卸载所有项目的System.Data.SQLite.dll 和SqlSugar,检查引用中是否还存在,存在直接删掉引用,然后Nuget重新安装即可
    C#项目脱落NuGet
    JavaScript跨域总结与解决办法
    回流与重绘:CSS性能让JavaScript变慢?
  • 原文地址:https://www.cnblogs.com/benjamin77/p/12446740.html
Copyright © 2011-2022 走看看