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


    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

  • 相关阅读:
    LeetCode 1748. 唯一元素的和
    LeetCode 2047. 句子中的有效单词数
    LeetCode 1345. 跳跃游戏 IV
    LeetCode 1725. 可以形成最大正方形的矩形数目
    LeetCode 1765. 地图中的最高点
    LeetCode 2034. 股票价格波动
    LeetCode 1996. 游戏中弱角色的数量
    LeetCode 2013. 检测正方形
    LeetCode 1219. 黄金矿工
    LeetCode 2045. 到达目的地的第二短时间
  • 原文地址:https://www.cnblogs.com/sunsky303/p/11023473.html
Copyright © 2020-2023  润新知