Kubernetes 作为云原生时代的操作系统,熟悉和使用它是每名用户的必备技能。本文将介绍一些提高操作 Kubernetes 效率的技巧以及如何打造一个高效的 Kubernetes 命令行终端的方法。

Kubectl 自动补全

Kubectl 这个命令行工具非常重要,与之相关的命令也很多。我们也记不住那么多的命令,而且也会经常写错,所以命令行自动补全是很有必要的。Kubectl 工具本身就支持自动补全,只需简单设置一下即可。

  • Bash 用户

大多数用户的 Shell 使用的是 Bash,Linux 系统可以通过下面的命令来设置:

$ echo "source <(kubectl completion bash)" >> ~/.bashrc
$ source ~/.bashrc

如果发现不能自动补全,可以尝试安装 bash-completion 然后刷新即可!

  • ZSH 用户

如果你使用的 Shell 是 ZSH,可以通过下面的命令来设置:

$ echo "source <(kubectl completion zsh)" >> ~/.zshrc
$ source ~/.zshrc

交互式 Kubernetes 客户端

Kube-prompt

Kube-prompt 可以让你在命令行下接受与 Kubectl 相同的命令,并且不需要提供 Kubectl前缀。Kube-prompt 还提了交互式会话下的命令提示、自动补全等功能。

项目地址:https://github.com/c-bata/kube-prompt

安装 Kube-prompt

Kube-prompt 使用 Go 语言开发,天生良好的跨平台性。安装起来非常简单,只需下载各平台对应的二进制版本就可以开箱即用。

# Linux
$ wget https://github.com/c-bata/kube-prompt/releases/download/v1.0.3/kube-prompt_v1.0.3_linux_amd64.zip
$ unzip kube-prompt_v1.0.3_linux_amd64.zip # macOS (darwin)
$ wget https://github.com/c-bata/kube-prompt/releases/download/v1.0.3/kube-prompt_v1.0.3_darwin_amd64.zip
$ unzip kube-prompt_v1.0.3_darwin_amd64.zip # 给 kube-prompt 加上执行权限并移动常用的可搜索路径。
$ chmod +x kube-prompt
$ sudo mv ./kube-prompt /usr/local/bin/kube-prompt

Kube-prompt 使用效果图

Kube-shell

Kube-shell 可以为 Kubectl 提供自动的命令提示和补全,Kube-shell 与 Kube-prompt 的使用方法类似。

项目地址: https://github.com/cloudnativelabs/kube-shell

Kube-shell 特性

  • 命令提示,给出命令的使用说明。

  • 自动补全,列出可选命令并可以通过 TAB 键自动补全,支持模糊搜索。

  • 支持语法高亮。

  • 使用 TAB 键可以列出可选的对象。

  • 支持 VIM 模式。

安装 Kube-shell

Kube-shell 安装非常的简单,使用 PIP 就可以一键安装了。

$ pip install kube-shell

注:kube-shell 必须用 root 用户运行。如果是普通用户运行会报 /bin/sh: 1: kubectl: not found 错误。即使使用了 sudo  kube-shell 同样也是不行的。

Kube-shell 使用效果图

注:Kube-prompt 和 Kube-shell 我都使用过,更推荐 Kube-prompt。Go 的原生性更好一些,并且 Kube-prompt 也不需要 root 权限。

Kubectl Aliases

Kubectl Aliases 是一个通过编程方式生成的 Kubectl 别名脚本。如果你需要频繁地使用 Kubectl 和 Kubernetes API 进行交互,使用别名将会为你节省大量的时间。

项目地址: https://github.com/ahmetb/kubectl-aliases

安装 Kubectl Aliases

Kubectl Aliases 就只是一个 SHELL 脚本,你只需直接下载 .kubectl_aliases 文件并将其保存在 $HOME 目录中,然后在 SHELL 配置文件中调用即可。

  • 下载脚本

$ cd $HOME$ wget https://raw.githubusercontent.com/ahmetb/kubectl-alias/master/.kubectl_aliases
  • 配置 SHELL

Bash 用户

$ vim ~/.bashrc

[ -f ~/.kubectl_aliases ] && source ~/.kubectl_aliases

ZSH 用户

$ vim ~/.zshrc

[ -f ~/.kubectl_aliases ] && source ~/.kubectl_aliases

如果你想在运行之前打印完整的 Kubectl 命令,可以加上以下行。

function kubectl() { echo "+ kubectl $@"; command kubectl $@; }

Kubectl 别名生成规则

Kubectl 别名使用示例

  • 简单别名示例

$ kd → kubectl describe
  • 高级别名示例

$ kgdepallw → kubectl get deployment –all-namespaces –watch

Kubeval

如果你手动写 Kubernetes manifest 文件,检查 manifest 文件的语法是否有误是很困难的,特别是当你有多个不同版本的 Kubernetes 集群时,确认配置文件语法是否正确更是难上加难。

Kubeval 是一个用于校验 Kubernetes YAML 或 JSON 配置文件的工具,支持多个 Kubernetes 版本,可以帮助我们解决不少的麻烦。

项目地址:https://github.com/garethr/kubeval

Kubeval 安装

Kubeval 同样是一款使用 Go 语言开发,天生良好的跨平台性。安装起来非常简单,只需下载各平台对应的二进制版本就可以开箱即用。

# Linux
$ wget https://github.com/garethr/kubeval/releases/download/0.7.1/kubeval-linux-amd64.tar.gz
$ tar xf kubeval-linux-amd64.tar.gz # macOS (darwin)
$ wget https://github.com/garethr/kubeval/releases/download/0.7.1/kubeval-darwin-amd64.tar.gz
$ tar xf kubeval-darwin-amd64.tar.gz # 给 kubeval 加上执行权限并移动常用的可搜索路径。
$ chmod +x kubeval
$ sudo mv kubeval /usr/local/bin

Kubeval 使用示例

  • Kubernetes manifest 文件正常的情况

$ kubeval nginx-deployment.yaml
The document nginx-deployment.yaml contains a valid Deployment
  • Kubernetes manifest 文件不正常的情况

$ kubeval nginx.yaml

The document nginx.yaml contains an invalid Deployment
---> spec.replicas: Invalid type. Expected: integer, given: string

其它一些实用工具

下面这几个工具也挺不错的,使用起来都很简单。就不展开讲了,如果有兴趣可以去看下官方文档具体的使用方法。

  • Kube-ps1

该工具主要作用为命令行终端增加一个提示符。

项目地址:https://github.com/jonmosco/kube-ps1

Kube-ps1 使用效果图

  • Kubectx

该工具主要作用是快速在多个 Kubernetes 集群中切换。

项目地址:https://github.com/ahmetb/kubectx

Kubectx 使用效果图

  • Kubens

该工具可以帮助您快速的在 Kubernetes 的多个命名空间之间切换。

项目地址:https://github.com/ahmetb/kubectx

Kubens 使用效果图

参考文档

http://www.google.comhttp://t.cn/RD6vxGfhttp://t.cn/RD6vbc1

手把手教你打造高效的 Kubernetes 命令行终端的更多相关文章

  1. Android:手把手教你打造可缩放移动的ImageView(下)

    在上一篇Android:手把手教你打造可缩放移动的ImageView最后提出了一个注意点:当自定义的MatrixImageView如ViewPager.ListView等带有滑动效果的ViewGrou ...

  2. Docker Kubernetes 命令行创建容器

    Docker Kubernetes 命令行创建容器 环境: 系统:Centos 7.4 x64 Docker版本:18.09.0 Kubernetes版本:v1.8 管理节点:192.168.1.79 ...

  3. [转]12款最佳Linux命令行终端工具

    摘要 “工欲善其事必先利其器”,作为菜鸟,也是从别人那里偷学来的一些东东.今天看到同事用到一个终端命令行工具,觉得自己弱爆了.然后在网上搜了下该工具.发现类似的工具还是挺多的,只是自己不知道罢了. 原 ...

  4. 12款最佳Linux命令行终端工具, 20款优秀的 Linux 终端仿真器

    12款最佳Linux命令行终端工具     如果你跟我一样,整天要花大量的时间使用Linux命令行,而且正在寻找一些可替代系统自带的老旧且乏味的终端软件,那你真是找对了文章.我这里搜集了一些非常有趣的 ...

  5. 12款最佳Linux命令行终端工具

    12款最佳Linux命令行终端工具 如果你跟我一样,整天要花大量的时间使用Linux命令行,而且正在寻找一些可替代系统自带的老旧且乏味的终端软件,那你真是找对了文章.我这里搜集了一些非常有趣的终端软件 ...

  6. 转:linux/unix命令行终端的光标及字符控制快捷键

    from:http://linux.chinaunix.net/techdoc/system/2007/11/23/973027.shtml 在使用linux/unix的命令行终端时,有时候会碰到键盘 ...

  7. 在命令行终端运行 Elisp 脚本

    通常,我们在 Emacs 中运行 Elisp 代码片段,但是也可能需要在命令行终端运行 Elisp 脚本程序.在命令行终端运行 Elisp 脚本需要使用 --script 选项,例如: emacs - ...

  8. Linux中命令行终端切换工具screen

    screen命令 本文转自:http://man.linuxde.net/screen Screen是一款由GNU计划开发的用于命令行终端切换的自由软件.用户可以通过该软件同时连接多个本地或远程的命令 ...

  9. Mac系统打开命令行终端及查看操作系统版本号的方法

    Mac系统打开命令行终端的方法: 应用程序 --> 实用工具 --> 终端 Mac系统终端查看操作系统版本号的方法: 输入:#more /System/Library/CoreServic ...

随机推荐

  1. 如何保证MQ的顺序性?比如Kafka

    三.如何保证消息的顺序性 1. rabbitmq 拆分多个queue,每个queue一个consumer,就是多一些queue而已,确实是麻烦点:或者就一个queue但是对应一个consumer,然后 ...

  2. [技术博客]使用adb命令获取app(游戏)错误和警告日志

    adb命令的使用 直接在命令行中输入: adb logcat *:W 注意:这句命令的意思是显示所有优先级大于等于警告(Warning)的日志,查找崩溃问题一般用: adb logcat *:E 注意 ...

  3. sql server查看表大小

    查看SqlServer 数据库中各个表多少行 : SELECT A.NAME ,B.ROWS FROM sysobjects A JOIN sysindexes B ON A.id = B.id WH ...

  4. SonarQube7.4安装和使用

    声明 本文转自:https://www.jianshu.com/p/dd4a4bc59fc3?from=singlemessage 正文 近期比较关注代码的检测,之前由于用的findbugs,因此没有 ...

  5. 通过 UNSAFE 来实现一个 Atomic 的 CAS 辅助类【原创】

    public abstract class AbstractUnSafeCas<T> { @SuppressWarnings("unused") private vol ...

  6. 015 vue的项目

    一:搭建项目 1.框架 在原有的基础上 src: 2.index.html <!DOCTYPE html> <html lang="en"> <hea ...

  7. 在Windows平台下使用Gitblit搭建Git服务器图文解说

    Windows平台下Git服务器搭建 一.java环境变量的设置 下载jdk并配置jdk的环境变量,JAVA_HOME,CLASSPATH以及PATH,最后在DOS窗口输入java -version检 ...

  8. xcode简单教程

    1.使用Xcode软件.Xcode是一个苹果系统上的集成开发环境(IDE),就是说用Xcode就能编写C语言程序,并编译运行.也能开发ios程序等,是一种软件.在windows上类似这种能编c语言的还 ...

  9. 'object ''/usr/local/lib/libdns.so'' from /etc/ld.so.preload cannot be preloaded: ignored.'

    做了如下操作后: rm -rf xxx.jar kill -9 xx 重启Jar包,出现如下错误: ld.so: object '/usr/local/lib/libdns.so' from /etc ...

  10. 记录一次TraceId的问题

    多服务部署的时候,各个服务通过httpClient进行调用时候,有时候出现问题,需要进行追查.但是如果没有一个标记,就会很迷茫,特别是多个服务来回调用,就无法快速定位问题.这个时候一般是使用MDC的 ...