云网牛站
所在位置:首页 > Linux命令 > 交互式Kubernetes客户端,搭建高效Kubernetes命令行终端

交互式Kubernetes客户端,搭建高效Kubernetes命令行终端

2018-09-18 11:23:29作者:LINUX人稿源:运维之美

本文讲解关于提高操作 Kubernetes 效率的技术,教你搭建起一款高效的 Kubernetes 命令行终端。介绍交互式 Kubernetes 客户端,熟悉与使用 Kubernetes 高效工作是每个用户必备的技能。

 

Kubectl 自动补全

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

1.Bash 用户

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

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

$ source ~/.bashrc

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

2.ZSH 用户

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

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

$ source ~/.zshrc

 

Kube-prompt

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

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

1.安装 Kube-prompt

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

# Linux

$ wget https://github.com/c-bata/kube-prompt/releases/download/v1.0.4/kube-prompt_v1.0.4_linux_amd64.zip

$ unzip kube-prompt_v1.0.4_linux_amd64.zip

# macOS (darwin)

$ wget https://github.com/c-bata/kube-prompt/releases/download/v1.0.4/kube-prompt_v1.0.4_darwin_amd64.zip

$ unzip kube-prompt_v1.0.4_darwin_amd64.zip

# 给 kube-prompt 加上执行权限并移动常用的可搜索路径。

$ chmod +x kube-prompt

$ sudo mv ./kube-prompt /usr/local/bin/kube-prompt

2.Kube-prompt 使用效果图:

交互式Kubernetes客户端,搭建高效Kubernetes命令行终端

交互式Kubernetes客户端,搭建高效Kubernetes命令行终端

 

Kube-shell

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

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

1.Kube-shell 特性

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

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

支持语法高亮。

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

支持 VIM 模式。

2.安装 Kube-shell

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

$ pip install kube-shell

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

3.Kube-shell 使用效果图:

交互式Kubernetes客户端,搭建高效Kubernetes命令行终端

交互式Kubernetes客户端,搭建高效Kubernetes命令行终端

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

 

Kubectl Aliases

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

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

1.安装 Kubectl Aliases

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

1].下载脚本

$ cd $HOME

$ wget https://raw.githubusercontent.com/ahmetb/kubectl-alias/master/.kubectl_aliases

2].配置 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 $@; }

2.Kubectl 别名生成规则

交互式Kubernetes客户端,搭建高效Kubernetes命令行终端

3.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

1.Kubeval 安装

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

# Linux

$ wget https://github.com/garethr/kubeval/releases/download/0.7.3/kubeval-linux-amd64.tar.gz

$ tar xf kubeval-linux-amd64.tar.gz

# macOS (darwin)

$ wget https://github.com/garethr/kubeval/releases/download/0.7.3/kubeval-darwin-amd64.tar.gz

$ tar xf kubeval-darwin-amd64.tar.gz

# 给 kubeval 加上执行权限并移动常用的可搜索路径。

$ chmod +x kubeval

$ sudo mv kubeval /usr/local/bin

2.Kubeval 使用示例

1].Kubernetes manifest 文件正常的情况

$ kubeval nginx-deployment.yaml

The document nginx-deployment.yaml contains a valid Deployment

2].Kubernetes manifest 文件不正常的情况

$ kubeval nginx.yaml

The document nginx.yaml contains an invalid Deployment

---> spec.replicas: Invalid type. Expected: integer, given: string

 

其它一些实用工具

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

1.Kube-ps1

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

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

Kube-ps1 使用效果图:

交互式Kubernetes客户端,搭建高效Kubernetes命令行终端

2.Kubectx

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

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

Kubectx 使用效果图:

交互式Kubernetes客户端,搭建高效Kubernetes命令行终端

3.Kubens

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

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

Kubens 使用效果图:

交互式Kubernetes客户端,搭建高效Kubernetes命令行终端

 

结语

把以上介绍的 Kube-prompt、Kube-shell、Kubectl Aliases、Kubeval、Kube-ps1、Kubectx、Kubens 加以实践在 Kubernetes 中必能大有用处。

 

相关主题

Ubuntu 18.04下安装Kubernetes 1.11 + Istio 1.0组合

Linux命令子频道
精选文章
热门文章