美文网首页
K8S命令的梳理

K8S命令的梳理

作者: 小孩真笨 | 来源:发表于2018-11-16 09:13 被阅读0次

    K8S命令的梳理

    kubectl是一个基础的K8S集群管理命令,可以实现对K8S资源的查询,创建,删除,更新,回退等各种各样的操作。由于其复杂的功能体系,命令灵活度又高,因此需要进行常见的一些命令和使用场景的梳理。

    1 K8S命令的组成

    K8S基础命令由三段式组成:

    kubectl 动作 资源 [选项]
    

    2 K8S命令的基础动作

    常见的K8S命令有8个动作。分别是:

    • get:展示一个或者多个资源
    • create:通过资源配置文件名或者键盘输入创建资源
    • expose:选择一个RC,Service,Deployment或者Pod,并且暴露为新的K8s服务
    • run:在集群上运行指定镜像
    • set:在对象上设置指定属性
    • explain:资源的文档
    • edit:编辑服务器上的资源
    • delete:通过资源创建的文件名,键盘输入,资源名,或者选择器标签等删除资源

    此外,kubectl还提供了一些高级的用法。在日常开发中除非特定的场景,否则一般不会用到。这些命令包括:

    • 部署类的命令
      • rollout:管理deployment的部署
      • rolling-update:实现滚动升级,并最终输出RC
      • scale:为Deployment, ReplicaSet, RC或者Job设置新的大小
      • autoscale:自动伸缩Deployment, ReplicaSet, ReplicationController
    • 集群管理类的命令
      • certificate:修改认证资源
      • cluster-info:显示集群信息
      • top:显示(CPU/Memory/Storage)资源的使用
      • cordon:标记节点为unschedulable
      • uncordon:标记节点为schedulable
      • drain:Drain node in preparation for maintenance
      • taint:Update the taints on one or more nodes
    • 故障定位和排除类的命令
      • describe:显示指定资源或者资源组的详情
      • logs:打印某个pod中容器的日志
      • attach:附加在一个运行的容器上执行,使用该命令注意不要关闭容器并退出
      • exec:在一个容器中执行命令,不影响现在运行的容器中的功能
      • port-forward:转发一个或者多个端口到pod中
      • proxy:运行porxy以实现到Kubernetes API server的功能转发
      • cp:与容器之间进行文件拷贝
    • 其他更高级的命令
      • apply:Apply a configuration to a resource by filename or stdin
      • patch:Update field(s) of a resource using strategic merge patch
      • replace:Replace a resource by filename or stdin
      • convert:Convert config files between different API versions
    • 设置命令
      • label:Update the labels on a resource
      • annotate:Update the annotations on a resource
      • completion:Output shell completion code for the given shell (bash or zsh)
    • 其他的系统级命令
      • api-versions:以group/version的形式打印服务器上支持的API版本
      • config:修改kubeconfig文件
      • help:帮助命令
      • version:打印客户端和服务器的版本号

    2.1 基础动作 get 的命令

    get 是kubectl中最基础的命令,也是使用最多的命令。
    该命令的使用格式如下:

    get 资源 [选项]
    

    因此,使用改命令需要首先分清楚,paas上到底有多少中资源类型。那么,paas上面有多少中资源呢?

    2.1.1 get命令中的资源类型

    请见下表(需要区分的是,kubectl工具中认为的资源,并不等同于k8s上面可以创建出的与pod相关的资源类型)

    序号 资源 资源缩写
    1 cloud cld
    2 clusters 只有在联邦apiservers下才合法
    3 componentstatuses cs
    4 configmaps cm
    5 daemonsets ds
    6 deployments deploy
    7 endpoints ep
    8 events ev
    9 horizontalpodautoscalers hpa
    10 ingresses ing
    11 jobs -
    12 limitranges limits
    13 namespaces ns
    14 networks net
    15 networkmappings nm
    16 networkpolicies -
    17 nodes no
    18 persistentvolumeclaims pvc
    19 persistentvolumes pv
    20 physicalnetworks pn
    21 processlifecycles plc
    22 pods po
    23 podsecuritypolicies psp
    24 podtemplates -
    25 replicasets rs
    26 replicationcontrollers rc
    27 resourcequotas quota
    28 secrets -
    29 serviceaccounts sa
    30 services svc
    31 statefulsets -
    32 storageclasses -
    33 thirdpartyresources -
    34 clusterversions -

    2.1.2 几个常用的get命令组合

    使用get 命令需要注意的一点是:该命令会隐藏一些资源信息,如运行情况等。要显示这些信息,可以通过在命令最后加上--show-all 标记进行实现。

    get 的几个常用命令组合:

    1. 显示所有的pod信息,格式如linux下的ps命令(精简)
    kubectl get pods
    
    1. 全面显示pod 信息,增加 -o wide选项
    kubectl get pods -o wide
    
    1. 查看单个指定RC名称的信息
    kubectl get replicationcontroller web
    
    1. 使用json格式展示指定的pod信息
    kubectl get -o json pod web-pod-13je7
    
    1. 把yaml形式的pod信息展示位json格式
    kubectl get -f pod.yaml -o json
    
    1. 查看指定pod信息中的某一段
    kubectl get -o template pod/web-pod-13je7 --template={{.status.phase}}
    
    1. 同时输出所有的RC和service资源实例列表
    kubectl get rc,services
    
    1. 通过资源类型和名字获取具体的实例信息
    kubectl get rc/web service/frontend pods/web-pod-13je7
    

    2.1.3 get中的重要选项

    1. 跨命名空间查询对象
    --all-namespaces=false
    
    1. 指定配置文件名
      使用-f或者--filename=[]

    2. 指定输出格式
      使用-o或者--output=''指定输出格式,输出格式必须为下表中的一个

    1. 显示所有的输出信息
      -a选项可以输出所有的信息。

    相关文章

      网友评论

          本文标题:K8S命令的梳理

          本文链接:https://www.haomeiwen.com/subject/riepfqtx.html