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命令的梳理的更多相关文章

  1. 常用rsync命令操作梳理

    作为一个运维工程师,经常可能会面对几十台.几百台甚至上千台服务器,除了批量操作外,环境同步.数据同步也是必不可少的技能.说到“同步”,不得不提的利器就是rsync.rsync不但可以在本机进行文件同步 ...

  2. k8s 命令

    Kubernetes 常用安装和使用命令总结 获取所有命名空间上的pod kubectl get pod -o wide --all-namespaces 查看pod IP时使用 kubectl ge ...

  3. k8s命令行web代理神器gotty

    目录 介绍 安装 使用示例 -p 指定端口 -c 指定账号密码 -w 支持tty交互 --permit-arguments 支持get参数传参 --random-url 生成随机地址 --reconn ...

  4. k8s命令补全方法

    正常安装了k8s后,使用kubect 工具后接的命令不能直接tab补全 命令补全方法: yum -y install bash-completionsource /usr/share/bash-com ...

  5. K8S命令-Kubectl 命令大全

    参考1:https://jimmysong.io/kubernetes-handbook/guide/kubectl-cheatsheet.html?h=kubectl Kubctl 命令是操作 ku ...

  6. k8s命令集锦

    集群环境相关命令$kubectl vertion --short=true #显示当前使用的客户端及服务端程序版本信息$kubectl cluster-info #获取集群信息$kubectl api ...

  7. k8s命令自动补全

    Linux yum install -y bash-completion source /usr/share/bash-completion/bash_completion source <(k ...

  8. K8S命令大总结

    一.k8s-kubectl命令大全 Kubectl命令行管理对象类型 命令 描述 基础命令 create 通过文件名或标准输入创建资源. expose 将一个资源公开为一个新的Kubernetes服务 ...

  9. k8s 命令创建pod

    [root@master kubernetes]# kubectl create deploy ngx-dep --image=nginx:1.14-alpine deployment.apps/ng ...

随机推荐

  1. 解决虚拟机克隆的linux系统ip无法正常使用问题

    当我们克隆centos虚拟机无法正常获取IP地址,重启网卡也提示Bringing up interface eth0:  Device eth0 does not seem to be present ...

  2. Codeforces 348E 树的中心点的性质 / 树形DP / 点分治

    题意及思路:http://ydc.blog.uoj.ac/blog/12 在求出树的直径的中心后,以它为根,对于除根以外的所有子树,求出子树中的最大深度,以及多个点的最大深度的lca,因为每个点的最长 ...

  3. Java 注解处理器

    在Android开发中常用到一些第三方注解框架来简化代码.加快开发,如ButterKnife,androidannotations. 虽然常会用到,但没研究过其生成代码的原理,趁年后不忙,又温习了注解 ...

  4. Java异常架构与异常关键字

    Java异常简介 Java异常是Java提供的一种识别及响应错误的一致性机制. Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性.在有效使用异常的情况 ...

  5. Dart编程实例 - Dynamic 关键字

    Dart编程实例 - Dynamic 关键字 void main() { dynamic x = "tom"; print(x); } 本文转自:http://codingdict ...

  6. js设计模式——2.外观模式

    js设计模式——2.外观模式

  7. 天照(amaterasu)

    天照(amaterasu) 有些时候,出题人真的不想写背景. 总而言之,天照现在有一个长度为 $ N $ 序列,她有 $ M $ 次询问,对于第 $ i $ 次询问 $ l_i,r_i,x_i $ 你 ...

  8. JXOI2017 加法

    题目描述: 可怜有一个长度为 \(n\) 的正整数序列 \(A\),但是她觉得 \(A\) 中的数字太小了,这让她很不开心. 于是她选择了 \(m\) 个区间 \([l_i, r_i]\) 和两个正整 ...

  9. java 后台 实现简单的验证码

    private int width =80;private int height=30;private Random r=new Random();private String fontnames[] ...

  10. (转)Openfire 中SASL的认证方式之:PLAIN,DIGEST-MD5,anonymous

    转:http://blog.csdn.net/coding_me/article/details/39524137 SASL  的认证方式包括:     1. PLAIN:plain是最简单的机制,但 ...