.1. k1s 是 kubectl 辅助工具

so easy, so fast.

   _   _   _
  / \ / \ / \
 ( k | 1 | s )
  \_/ \_/ \_/
        by 百里(github.com/yezihack/k1s)
    so easy, so fast.
 version: 2.0.0 

README-k1s

.2. 什么是 k1s

k1s 主要是用于 kubernetes 管理的命令行工具。对 kubectl 命令实现快捷操作。

github 源码:https://github.com/yezihack/k1s 欢迎点星星。

.3. k1s 特色

  • 支持 28 种 kubernetes 资源操作。
  • 缩减命令长度。
  • 使用更人性化的组合操作。如日志,进入容器等,见下文的实例。
  • 支持部署或更新 YAML 前的差异显示与模拟。

.4. 安装

直接下载脚本,仅依赖 kubectl。

wget https://raw.githubusercontent.com/yezihack/k1s/master/k1s
chmod +x k1s
sudo mv k1s /usr/local/bin

.5. 快速上手

设置命名空间

export K1S_NS=kube-system

基本操作命令

# 查看帮助
k1s

# 查看 pods 列表
k1s po

# 查看 pods describe 
k1s po xxx desc

# 查看 pods YAML 
k1s po xxx yaml

# 查看 pods 日志(xxx 表示 pods 名称)
k1s po xxx logs

# 查看 pods 最近10条日志(xxx 表示 pods 名称)
k1s po xxx logs 10

# 进入容器内部 
k1s po xxx exec

.6. 功能

命令格式:

#  环境变量
k1s resources <param> action <extend>

.6.1. Resources 列表( kubectl 系统对应)

资源(Resources) 列表详情, 与 api-resources 显示一致,未全列出,只列出常用的资源名称.

NoNameShortNameDescribe
01componentstatusescsk8s 组件健康状态
02configmapscm配置管理资源
03endpointsep端点
04eventsev事件
05limitrangeslimits为pod自定义资源管理限制
06namespacesns命名空间
07nodesnode, no节点资源
08persistentvolumeclaimspvc声明持久卷
09persistentvolumespv持久卷
10podspo,psk8s 管理最小单元
11replicationcontrollersrc副本控制器
12resourcequotasquota硬性资源限额
13secretssecret, sec机密数据配置资源
14servicessvc服务负载资源
15daemonsetsds守护进程资源
16deploymentsdeploy,d控制器资源
17replicasetsrs副本集合资源
18statefulsetssts有状态控制器
19horizontalpodautoscalershpaPod 水平自动扩缩器
20cronjobsbj定时任务器
21jobsjob一次性任务器
22ingressesing对外负载器
23ingressclassesingcIngress 分类器
24clusterrolebindingscrbRBAC 集群角色绑定
25serviceaccountssaRBAC 服务帐号
26clusterrolescrRBAC 集群角色
27rolebindingsrbRBAC 角色绑定
28rolesroRBAC 角色

.6.2. Resources 列表(扩展功能)

NoNameShortNameDescribe
1applyp开始部署/重新部署
2execauto, e进入容器
3cleanc清理无用 Pod

.6.3. Action 列表

操作某资源时可以使用不同的动作(action)从而实现多功能操作。

NoNameShortNameDescribe
01listls显示列表(默认显示)
02describedesc查看详情
03yamly,yml查看 YAML
04widew查看更多信息
05exece,auto进入容器操作
06deletedel,rm删除资源操作
07logslog查看日志操作,也兼容 tail
08tail查看 Pod 最近日志
09tailf监听日志变化
10like模糊查找
11edit编辑 YAML

.6.4. Extend 扩展功能

动态的参数,如操作 logs 日志。见下面实例。

NoExtendDescribe
1container-name选择不同容器名称
210显示日志最近条数

.6.5. 环境变量

NoNameDefaultDescribe
1K1S_NSdefault命名空间名称
2K1S_PATH~构建目录,默认本用户目录下

.7. 使用说明

举例说明,只列举常用资源

.7.1. 设置环境变量

# 设置命名空间名称
export K1S_NS=default

# 设置构建路径,主要用于 apply 部署或重建时用到。
export K1S_PATH=/home/dev/

小技巧:对于常操作的命令空间,可以设置别名

vim ~/.bashrc
# 或
vim ~/.zshrc

alias k1s-sys='export K1S_NS=kube-system && export K1S_PATH=/opt/deploy/'

.7.2. 日志查看

别名:logs, log

参数:

  • pod名称:kube-cc-7789c5f6d6-szqwk
  • 容器名称:client

模式:

共四种模式操作

  • 普通模式:k1s po [pod 名称] logs
  • 最近模式:k1s po [pod 名称] logs 10 查看最近10条日志
  • 选择模式:k1s po [pod 名称] logs client 查看 client 容器名称日志
  • 选择最近模式:k1s po [pod 名称] logs client 10 查看 client 容器最近10条日志

实例操作:

# 普通模式
k1s po kube-cc-7789c5f6d6-szqwk logs
# 最近模式
k1s po kube-cc-7789c5f6d6-szqwk logs 10
# 选择模式
k1s po kube-cc-7789c5f6d6-szqwk logs client
# 选择最近模式
k1s po kube-cc-7789c5f6d6-szqwk logs client 10
  • 查看多容器 pod 的日志,有选择性查看容器日志。

.7.3. 进入容器

别名:exec, auto, e

参数:

  • pod名称:kube-cc-7789c5f6d6-szqwk
  • 容器名称:client

模式:

共四种模式操作

  • 普通模式:k1s exec [pod 名称]
  • 普通选择模式:k1s exec [pod 名称] client 进入 client 容器内
  • 便捷模式:k1s po [pod 名称] exec
  • 选择便捷模式:k1s po [pod 名称] exec client 进入 client 容器内
# 普通模式
k1s exec kube-cc-7789c5f6d6-szqwk
# 普通选择模式
k1s exec kube-cc-7789c5f6d6-szqwk client
# 便捷模式
k1s po kube-cc-7789c5f6d6-szqwk exec
# 选择便捷模式
k1s po kube-cc-7789c5f6d6-szqwk exec client

.7.4. 资源操作

只列举常用的几种资源,其它资源查找大同小异。

  • nodes
  • pods
  • deployments
  • daemonsets
  • services

支持的 action 动作:

  • list 列表,默认值
  • wide 更多显示
  • like 模糊查找
  • yaml 显示 yaml
  • desc 显示详情
  • exec 进入容器
  • delete 删除资源
  • log 日志

.7.4.1. nodes 资源

别名:nodes, node, no

参数:

  • kube node 节点的前缀名称
  • kube-10 node 节点完整名称

模式:

  • 普通模式: k1s no
  • 模糊搜索模式: k1s no [关键字] like
  • 单模式: k1s no [节点名称]
  • YAML 模式: k1s no [节点名称] yaml
  • 详情模式: k1s no [节点名称] desc
# 普通模式
k1s no
# 模糊搜索模式 ->  模糊查找含有 kube 的节点名称
k1s no kube like
# 单模式 -> 显示单个资源
k1s no kube-10
# YAML 模式  -> 查看资源的 YAML
k1s no kube-10 yaml
# 详情模式 -> 查看资源的 describe 详细
k1s no kube-10 desc

.7.4.2. pods 资源

别名:pods, po, ps

参数:

  • kube-box pod 前缀名称
  • kube-box-685fb75bb-cvmgz pod 的完整名称

模式:

  • 普通模式: k1s po
  • 模糊搜索模式: k1s po [关键字] like 模糊查找含有 kube 的节点名称
  • 单模式: k1s po [pod名称]
  • YAML 模式: k1s po [pod名称] yaml
  • 详情模式: k1s po [pod名称] desc
  • 删除模式: k1s po [pod名称] delete
# 普通模式 -> 简约列表
k1s po
# 模糊搜索模式 -> 模糊查找资源列表 
k1s po kube-box like
# 单模式 -> 显示单个资源
k1s po kube-box-685fb75bb-cvmgz
# YAML 模式 -> 查看资源的 YAML
k1s po kube-box-685fb75bb-cvmgz yaml
# 详情模式 -> 查看资源的 describe 详细
k1s po kube-box-685fb75bb-cvmgz desc
# 删除模式
k1s po kube-box-685fb75bb-cvmgz delete

.7.4.3. deployments 资源

别名:deployments, deploy, d

参数:

  • kube deploy 前缀名称
  • kube-box deploy 的完整名称

模式:

  • 普通模式: k1s d
  • 模糊搜索模式: k1s d [关键字] like 模糊查找含有 kube 的节点名称
  • 单模式: k1s d kube-box
  • YAML 模式: k1s d kube-box yaml
  • 详情模式: k1s d kube-box desc
# 普通模式 -> 简约列表
k1s d
# 模糊搜索模式 -> 模糊查找资源列表 
k1s d kube-box like
# 单模式 -> 显示单个资源
k1s d kube-box
# YAML 模式 -> 查看资源的 YAML
k1s d kube-box yaml
# 详情模式 -> 查看资源的 describe 详细
k1s d kube-box desc

.7.4.4. daemonsets 资源

别名:daemonsets, ds

参数:

  • kube daemonsets 前缀名称
  • kube-proxy daemonsets 的完整名称

模式:

  • 普通模式: k1s ds
  • 模糊搜索模式: k1s ds [关键字] like 模糊查找含有 kube 的节点名称
  • 单模式: k1s ds [daemonset 名称]
  • YAML 模式: k1s ds [daemonset 名称] yaml
  • 详情模式: k1s ds [daemonset 名称] desc
# 普通模式 -> 简约列表
k1s ds
# 模糊搜索模式 -> 模糊查找资源列表 
k1s ds kube like
# 单模式 -> 显示单个资源
k1s ds kube-proxy
# YAML 模式 -> 查看资源的 YAML
k1s ds kube-proxy yaml
# 详情模式 -> 查看资源的 describe 详细
k1s ds kube-proxy desc

.7.4.5. services 资源

别名:services, svc

参数:

  • kube daemonsets 前缀名称
  • kube-dns daemonsets 的完整名称

模式:

  • 普通模式: k1s svc
  • 模糊搜索模式: k1s svc [关键字] like 模糊查找含有 kube 的节点名称
  • 单模式: k1s svc [service名称]
  • YAML 模式: k1s svc [service名称] yaml
  • 详情模式: k1s svc [service名称] desc
# 普通模式 -> 简约列表
k1s svc
# 模糊搜索模式 -> 模糊查找资源列表 
k1s svc kube like
# 单模式 -> 显示单个资源
k1s svc kube-dns
# YAML 模式 -> 查看资源的 YAML
k1s svc kube-dns yaml
# 详情模式 -> 查看资源的 describe 详细
k1s svc kube-dns desc

.7.4.6. 清理垃圾

# 查看不同空间下统计的错误信息
k1s clean 

# 清理指定空间下的错误信息
k1s clean dev

.8. 关于作者

我的博客:https://yezihack.github.io

欢迎关注我的微信公众号【空树之空】,一日不学则面目可憎也,吾学也。

空树之空