Homebrew 安装清单
这里记录的是我在 MacOS 上通过 Homebrew 安装的软件包清单,包含一些常用的工具软件和开发相关的软件包,方便日后回顾和重新安装,部分工具按照功能分类进行了整理
更多命令行工具整理在CLI Tools
kubectl 插件(增强 kubectl 的输出和功能)
krew
kubectl krew,一个命令行 kubectl 插件管理工具,可以用来安装和管理 kubectl 插件等信息,krew收录了大量的 kubectl 插件,可以通过 kubectl krew search 来搜索插件,通过 kubectl krew install <plugin-name> 来安装插件,通过 kubectl krew list 来列出已安装的插件,通过 kubectl krew upgrade <plugin-name> 来升级插件,通过 kubectl krew uninstall <plugin-name> 来卸载插件等操作,例如
安装krew参考官方文档即 可
kustomize
kustomize 是一个 Kubernetes 配置管理工具,可以用来定制和管理 Kubernetes 资源的配置,例如可以用来创建和管理 Kubernetes 资源的 YAML 文件,支持多种配置选项和功能
kubectl 全彩输出
kubecolor,可以用来为 kubectl 的输出添加颜色,使其更易于阅读和理解,最新版本使用brew install kubecolor安装
安装后进行配置
~ echo '# set kubecolor \
alias kubectl="kubecolor" \
# make completion work with kubecolor \
compdef kubecolor=kubectl '>> ~/.zshrc
~ source ~/.zshrc
设置颜色风格,可以去官网找更多预设风格
~ echo 'preset: protanopia-dark' >> ~/.kube/color.yaml
在终端前显示当前的集群和 namespace
kube-ps1,一个命令行 kubectl 插件,可以在终端前显示当前的 Kubernetes 集群和 namespace 等信息
~ brew install kube-ps1 # 安装 kube-ps1
~ vim .zshrc # 在 .zshrc 文件中添加以下内容来启用 kube-ps1
# set kube-ps1
source "/usr/local/opt/kube-ps1/share/kube-ps1.sh"
PROMPT='$(kube_ps1) '$PROMPT
# 启用和禁用
~ kubeoff # 本shell禁用
~ kubeoff -g # 全局禁用
~ kubeon # 本shell启用
~ kubeon -g # 全局启用
多集群切换
kubectx,一个命令行 kubectl 插件,可以用来快速切换 Kubernetes 集群和 namespace 等信息
~ brew install kubectx # 安装 kubectx
~ kubectx # 列出所有集群
~ kubectx <cluster-name> # 切换到指定的集群
~ kubens # 列出所有 namespace
~ kubens <namespace-name> # 切换到指定的 namespace
kubectl debug
kubectl-debug,一个命令行 kubectl 插件,可以用来在 Kubernetes 集群中调试容器和应用等信息,安装方式:brew install aylei/tap/kubectl-debug,现在已经被合并到 Kubernetes 官方的 kubectl 中,可以直接使用 kubectl debug 命令来调试容器和应用等信息,例如
~ kubectl debug -n <namespace> <pod-name> --image=busybox --target=<container-name> -- sleep 3600
此工具运行后会在指定的 pod 中创建一个新的 debug 容器,并将新容器加入到目标容器的 pid, network, user 以及 ipc namespace 中, 这时我们就可以在新容器中直接用 netstat, tcpdump 这些熟悉的工具来解决问题了, 而旧容器可以保持最小化, 不需要预装任何额外的排障工具方便我们进行调试和排查问题等操作
kubeconfig合并
kubecm,一个命令行 kubectl 插件,可以用来合并和管理 Kubernetes 的 kubeconfig 文件等信息
brew install kubecm # 通过 Homebrew 安装 kubecm
kubectl krew install kc # 通过 kubectl krew 安装 kubecm 插件
使用参考,常用命令如下
# list
kubecm list # 列出所有 kubeconfig
# add
kubecm add -f test.yaml # 将 test.yaml 文件中的 kubeconfig 添加到 .kube/config 文件中
# delete
kubecm delete <kubeconfig-name> # 将 .kube/config 文件中指定的 kubeconfig 删除
# merge
kubecm merge 1st.yaml 2nd.yaml 3rd.yaml # 将 1st.yaml、2nd.yaml 和 3rd.yaml 文件中的 kubeconfig 合并到 .kube/config 文件中
# rename
kubecm rename <old-name> <new-name> # 将 .kube/config 文件中指定的 kubeconfig 重命名
# export
kubecm export <kubeconfig-name> -f test.yaml # 将 .kube/config 文件中指定的 kubeconfig 导出到 test.yaml 文件中
集群容量查看
kube-capacity,可以用来查看 Kubernetes 集群的容量和资源使用情况等信息
安装
brew tap robscott/tap
brew install robscott/tap/kube-capacity
使用
kube-capacity # 查看node
kube-capacity --pods # 查看pod
kube-capacity --util # 查看利用率
kube-capacity --pods --util # 查看pod利用率
kube-capacity --util --sort cpu.util # 排序
kube-capacity --pod-count # 显示pod个数
# 过滤
kube-capacity --pod-labels app=nginx
kube-capacity --namespace 默认
kube-capacity --namespace-labels team=api
kube-capacity --node-labels kubernetes.io/role=node
# 格式化输出
kube-capacity --pods --output json
kube-capacity --pods --containers --util --output yaml
# 查看某个node上pod使用的资源
kube-capacity --node-labels kubernetes.io/hostname=cn-beijing.10.245.38.25 --pods --util
k8s yaml校验
kubeconform,安装方式:brew install kubeconform
使用
# 验证单个有效文件
~ kubeconform fixtures/valid.yaml
~ echo $? # 输出0表示验证成功
# 验证单个无效文件,将输出设置为json
~ kubeconform -summary -output json fixtures/invalid.yaml
{
"resources": [
{
"filename": "fixtures/invalid.yaml",
"kind": "ReplicationController",
"version": "v1",
"status": "INVALID",
"msg": "Additional property templates is not allowed - Invalid type. Expected: [integer,null], given: string"
}
],
"summary": {
"valid": 0,
"invalid": 1,
"errors": 0,
"skipped": 0
}
}
~ echo $?
1
除了kubeconform外,也可以使用kubeval
yaml 精简
kubectl-neat,精简 Kubernetes 资源的 YAML 文件等信息,安装方式:kubectl krew install neat,使用方式如下
kubectl get pod mypod -o yaml | kubectl neat
grep 过滤
kubectl-grep,类似于 grep,可以用来在 Kubernetes 资源中进行文本搜索等信息,安装方式:kubectl krew install grep,使用方式如下
# 使用普通的grep
kubectl get pods -n star-lab | grep "flash"
# 使用kubectl-grep
kubectl grep pods -n star-lab flash