为了方便测试以下工具,建议在本机使用 kind 创建一个 Kubernetes 集群,使用 kind 可以便于安装 Kubernetes 集群,并且在结束时容易清理。
# install kind
brew install kind
# create cluster
kind create cluster --name playground --image kindest/node:v1.21.14
1、K9s
K9s 是一个可以和 K8s 集群进行交互的终端 UI 。它可以轻松浏览 namespace、services 、 deployments 等,并持续监视 Kubernetes 的变化,使得管理应用程序变得更加容易。
brew install k9s
2、**Popeye**
Popeye 是一个开源工具,可以扫描实时的 Kubernetes 集群,并且可以报告部署过的资源及配置的潜在问题。它根据部署的内容来清理群集。通过扫描集群检测出配置错误,并帮助我们保证最佳实践。此外,如果 Kubernetes 集群过载,它会报告分配过多/分配不足的资源,在集群容量不足时发出警告。
# Install
brew install derailed/popeye/popeye
# Run
popeye
3、**Kube-bench**
Kube-bench 也是一个方便使用的工具,通过 CIS Kubernetes Benchmark 测试中的记录,检查 Kubernetes 集群是否安全部署。bash
# 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 快速观察群集。
4、**Kubectx Kubens and fzf**
通常情况下,可能会拥有多套集群,开发/测试/生产,本地或云集群。可以使用 Kubectx 和 Kubens 快速地在不同的集群和 namespace 直接切换。除此之外, fzf 提供了交互的方式来切换上下文,因此不必记住任何集群或 namespace。
# Install kubectx, kubens, fzf
brew install kubectx fzf
# Switch between namespaces
kubens
5、**Stern**
Stern 允许在 Kubernetes 上使用多个 Pod ,从不同的 Pod 收集日志,并通过颜色进行区分。
该查询是一个正则表达式,不需要指定确切的 ID,也可以轻松筛选出 Pod 名称。如果一个 Pod 被删除,它就会从尾部移除,如果添加了一个新的 Pod,它会自动被拖到尾部。当一个 Pod 包含多个容器时,Stern 也可以直接查看 Pod 中所有容器的日志,而不必一个个单独查看。在此示例中有 3 个副本,可以通过选择带有关键字的 Pod,来聚合日志。如图所见,每个 Pod 对应不同的颜色。
# Install
brew install stern
# stern <keyword>
stern deploy
6、**Bat**
Bat 可以为我们在 shell 环境中查看 yaml 时,提供语法高亮提示。
# Install bat
brew install bat# Explore themes
bat --list-themes# Bat a file
bat deployment.yaml
参考链接
kind (k8s.io): https://kind.sigs.k8s.io/
GitHub - derailed/k9s: Kubernetes CLI To Manage Your Clusters In Style!: https://github.com/derailed/k9s
GitHub - derailed/popeye: A Kubernetes cluster resource sanitizer: https://github.com/derailed/popeye
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
GitHub - ahmetb/kubectx: Faster way to switch between clusters and namespaces in kubectl: https://github.com/ahmetb/kubectx
GitHub - wercker/stern: Multi pod and container log tailing for Kubernetes: https://github.com/wercker/stern
GitHub - sharkdp/bat: A cat clone with wings: https://github.com/sharkdp/bat