手把手教你打造高效的 Kubernetes 命令行终端

栏目: 服务器 · 发布时间: 6年前

内容简介:Kubernetes 作为云原生时代的操作系统,熟悉和使用它是每名用户的必备技能。本文将介绍一些提高操作 Kubernetes 效率的技巧以及如何打造一个高效的 Kubernetes 命令行终端的方法。Kubectl 这个命令行工具非常重要,与之相关的命令也很多。我们也记不住那么多的命令,而且也会经常写错,所以命令行自动补全是很有必要的。Kubectl 工具本身就支持自动补全,只需简单设置一下即可。大多数用户的 Shell 使用的是 Bash,Linux 系统可以通过下面的命令来设置:

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 使用效果图

手把手教你打造高效的 Kubernetes 命令行终端

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 使用效果图

手把手教你打造高效的 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

安装 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 别名生成规则

手把手教你打造高效的 Kubernetes 命令行终端

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 使用效果图

手把手教你打造高效的 Kubernetes 命令行终端

  • Kubectx

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

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

Kubectx 使用效果图

手把手教你打造高效的 Kubernetes 命令行终端

  • Kubens

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

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

Kubens 使用效果图

手把手教你打造高效的 Kubernetes 命令行终端

参考文档


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Code

Code

Charles Petzold / Microsoft Press / 2000-10-21 / USD 29.99

Paperback Edition What do flashlights, the British invasion, black cats, and seesaws have to do with computers? In CODE, they show us the ingenious ways we manipulate language and invent new means of ......一起来看看 《Code》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码