Kubernetes 是一个功能强大的容器编排平台,用于自动部署、管理和扩缩容复杂的应用程序。官方提供了一款命令行工具 Kubectl,允许用户使用 CLI (命令行界面)与 Kubernetes 集群进行交互。
这些年来,Kubectl 已经与开源社区开发的其他工具深度结合,不仅改善了用户体验,也让我们的生产工作变得更加高效。下面,我将介绍几个方便大家使用 Kubernetes 的有力工具,供大家参考。
为了方便测试以下工具,建议在本机使用 kind 创建一个 Kubernetes 集群,使用 kind 可以便于安装 Kubernetes 集群,并且在结束时容易清理。(随意)
# install kind
brew install kind
# create cluster
kind create cluster --name playground --image kindest/node:v1.21.14
一、K9S
K9s 是一个可以和 K8s 集群进行交互的终端 UI 。它可以轻松浏览你的 namespace、services 、 deployments 等,并持续监视 Kubernetes 的变化,使得管理应用程序变得更加容易。
brew install k9s
二、Popeye
Popeye 是一个开源工具,可以扫描实时的 Kubernetes 集群,并且可以报告部署过的资源及配置的潜在问题。它根据部署的内容来清理群集。通过扫描集群检测出配置错误,并帮助我们保证最佳实践。此外,如果我们的 Kubernetes 集群过载,它会报告分配过多/分配不足的资源,在集群容量不足时发出警告。
# Install
brew install derailed/popeye/popeye
# Run
popeye
三、Kube-bench
Kube-bench 也是一个方便使用的工具,通过 CIS Kubernetes Benchmark 测试中的记录,检查 Kubernetes 集群是否安全部署。
# Run kube-bench as a job and inspect the logs
curl https://raw.githubusercontent.com/aquasecurity/kube-bench/main/job.yaml | kubectl apply -f -
# get the logs, replace <kube-bench-95cf7> with your pod id
kubectl logs kube-bench-95cf7 -f
Job 运行后,只需选择容器并检查日志即可。同样的,我们在处理群集时可以使用 K9s 快速观察群集。
四、Kubectx Kubens and fzf
通常情况下,你可能会拥有多套集群,开发/测试/生产,本地或云集群。我们可以使用 Kubectx 和 Kubens 快速地在不同的集群和 namespace 直接切换。除此之外, fzf 提供了交互的方式来切换上下文,因此你不必记住任何集群或 namespace。
# Install kubectx, kubens, fzf
brew install kubectx fzf
# Switch between namespaces
kubens
五、Stern
Stern 允许我们在 Kubernetes 上使用多个 Pod ,帮助我们从不同的 Pod 收集日志,并通过颜色进行区分。
该查询是一个正则表达式,不需要指定确切的 ID,也可以轻松筛选出 Pod 名称。如果一个 Pod 被删除,它就会从尾部移除,如果添加了一个新的 Pod,它会自动被拖到尾部。当一个 Pod 包含多个容器时,Stern 也可以直接查看 Pod 中所有容器的日志,而不必一个个单独查看。
# Install
brew install stern
# stern <keyword>
stern deploy
在此示例中有 3 个副本,我们可以通过选择带有关键字的 Pod,来聚合日志。如图所见,每个 Pod 对应不同的颜色。
六、Bat
Bat 可以为我们在 shell 环境中查看 yaml 时,提供语法高亮提示。
# Install bat
brew install bat# Explore themes
bat --list-themes# Bat a file
bat deployment.yaml
希望本文对大家有用,更多与 Kubernetes 协同好用的软件工具,等待我们一起探索和发现。
参考链接:
[1] kind (k8s.io): https://kind.sigs.k8s.io/
[2] GitHub - derailed/k9s: Kubernetes CLI To Manage Your Clusters In Style!: https://github.com/derailed/k9s
[3] GitHub - derailed/popeye: A Kubernetes cluster resource sanitizer: https://github.com/derailed/popeye
[4] GitHub - aquasecurity/kube-bench: Checks whether Kubernetes is deployed according to security best practices as defined in the CIS Kubernetes Benchmark: https://github.com/aquasecurity/kube-bench
[5] GitHub - ahmetb/kubectx: Faster way to switch between clusters and namespaces in kubectl: https://github.com/ahmetb/kubectx
[6] GitHub - wercker/stern: Multi pod and container log tailing for Kubernetes: https://github.com/wercker/stern
[7] GitHub - sharkdp/bat: A cat clone with wings: https://github.com/sharkdp/bat
作者:程锐
云原生研究院产品经理
评论区