做云原生开发的,每天都在跟Kubernetes打交道。
kubectl敲命令、看日志、排错、部署,这些日常操作看起来简单,但做多了也会觉得繁琐。特别是集群多了之后,切换上下文、查看资源、调试问题,都很花时间。
这两年K8s更新很快,1.32版本带来了不少新特性。同时,围绕K8s的工具生态也越来越丰富。有很多好用的工具,可以大大提升日常工作的效率。
这篇文章我想推荐一些在K8s 1.32+环境下特别好用的工具。从命令行工具、可视化工具到调试和监控工具,聊聊这些利器如何让日常运维更轻松。
如果你也在用K8s,希望这些工具能帮你提升效率,少敲一些命令,多省一些时间。
kubectx和kubens:快速切换上下文和命名空间
第一个推荐的是kubectx和kubens,这是两个非常实用的小工具。
kubectx用来快速切换K8s集群的上下文。如果你管理多个集群,每次切换都要敲很长的kubectl config use-context命令,很麻烦。用kubectx,直接敲kubectx加上集群名,或者用交互式选择,一秒钟就能切换。
kubens用来快速切换命名空间。默认情况下,kubectl操作的是default命名空间,每次操作其他命名空间都要加-n参数。用kubens,直接切换默认命名空间,之后的命令就不用再加-n了。
这两个工具安装很简单,用kubectl的插件管理器krew就能安装。装完之后,日常操作能省很多时间。特别是管理多个集群、多个命名空间的时候,这两个工具几乎是必备的。
我现在每天用得最多的就是这两个工具。切换集群、切换命名空间,一秒钟搞定,不用再敲长长的命令了。
k9s:终端里的K8s仪表盘
第二个推荐的是k9s,这是一个终端UI工具,可以在终端里管理K8s集群。
k9s提供了一个交互式的界面,可以查看各种资源、查看日志、进入容器、编辑资源、删除资源,几乎所有kubectl能做的事情,k9s都能做,而且更直观、更快捷。
用k9s,不用再记各种kubectl命令了。打开k9s,就能看到所有的Pod、Service、Deployment等资源。用键盘上下选择,按一下键就能查看日志、进入容器、描述资源,非常方便。
k9s还有一些很实用的功能,比如实时监控资源状态、资源变化高亮显示、端口转发、日志过滤等。排错的时候特别好用,一眼就能看到哪个Pod有问题,然后直接查看日志,不用来回敲命令。
k9s支持多个集群,可以在界面里切换上下文。还支持自定义快捷键和颜色主题,可以根据自己的喜好配置。
我现在排错的时候,基本都用k9s,很少直接敲kubectl了。效率提升了不止一倍。
Lens:桌面端的K8s可视化工具
第三个推荐的是Lens,这是一个桌面端的K8s可视化工具。
如果你觉得终端UI还是不够直观,那Lens就是更好的选择。Lens是一个图形界面的工具,可以在桌面上管理K8s集群。它的界面很美观,功能也很丰富。
用Lens,可以图形化地查看集群的所有资源,包括Pod、Deployment、Service、ConfigMap、Secret等。每个资源都有详细的信息页面,可以查看状态、事件、日志、终端等。
Lens还有一个很实用的功能,就是集群概览。打开Lens,就能看到整个集群的状态,有多少个节点、多少个Pod、多少个Service,资源使用率是多少,一目了然。
Lens支持多集群管理,可以同时连接多个集群,在界面里切换。还支持插件扩展,可以安装各种插件来增强功能。
对于不熟悉kubectl命令的人来说,Lens是一个很好的入门工具。对于熟悉命令的人来说,Lens也是一个很好的辅助工具,特别是在查看复杂资源关系的时候,图形界面更直观。
kubectl-tree:查看资源层级关系
第四个推荐的是kubectl-tree,这是一个kubectl插件,用来查看资源的层级关系。
在K8s里,很多资源之间是有关联的。比如一个Deployment创建了ReplicaSet,ReplicaSet创建了Pod;一个Service关联了Pod,一个Ingress关联了Service。这些关系用kubectl describe可以看到,但不够直观。
kubectl-tree可以用树状图的方式,展示一个资源关联的所有其他资源。比如查看一个Deployment,就能看到它创建的ReplicaSet,以及ReplicaSet创建的Pod,还有关联的Service、Ingress等,一目了然。
这个工具在排错的时候特别有用。比如一个Pod起不来,用kubectl-tree查看它的上级资源,就能很快定位是Deployment的问题、ReplicaSet的问题,还是调度的问题。
kubectl-tree用krew安装,装完之后敲kubectl tree加上资源类型和名称,就能看到树状图。简单但实用。
kubectl-debug:调试容器的利器
第五个推荐的是kubectl-debug,这是一个调试容器的工具。
在K8s里调试容器是一件比较麻烦的事情。很多容器为了精简,没有安装常用的调试工具,比如curl、ping、netstat、tcpdump等。进入容器之后,想调试网络问题,发现什么工具都没有,很头疼。
kubectl-debug解决了这个问题。它可以在运行中的Pod旁边,启动一个带有调试工具的辅助容器,这个容器和目标Pod共享网络命名空间,所以可以用辅助容器里的工具来调试目标Pod的网络问题。
用kubectl-debug,敲一条命令,就能启动一个带有各种调试工具的容器,然后在里面用curl、ping、tcpdump等工具调试,非常方便。
kubectl-debug还支持进入容器的文件系统、查看进程、抓包等功能,是排错的一大利器。
对于经常需要调试容器网络问题的人来说,这个工具几乎是必备的。
kube-bench:安全合规检查
第六个推荐的是kube-bench,这是一个K8s安全合规检查工具。
K8s的安全很重要,但很多时候我们不知道自己的集群配置是否安全。kube-bench可以按照CIS Kubernetes Benchmark的标准,自动检查集群的安全配置,找出不安全的地方,并给出修复建议。
kube-bench会检查很多方面,比如API Server的配置、etcd的加密、RBAC的权限、网络策略、容器的安全上下文等。检查完之后会生成一份报告,列出通过的项、失败的项和警告的项,每个失败的项都有详细的说明和修复建议。
这个工具对于安全合规要求高的团队来说特别有用。定期跑一下kube-bench,就能知道集群的安全状况,及时修复不安全的配置。
kube-bench可以在集群里跑,也可以在本地跑。安装很简单,下载二进制文件或者用容器运行都行。
kubescape:漏洞和风险扫描
第七个推荐的是kubescape,这是一个K8s漏洞和风险扫描工具。
和kube-bench不同,kubescape更侧重于扫描集群中的漏洞和风险。它可以扫描容器镜像的漏洞、RBAC权限的风险、网络策略的缺失、配置的错误等,然后给出风险评分和修复建议。
kubescape有一个很大的规则库,覆盖了各种安全框架和最佳实践,比如MITRE ATT&CK、NSA CISA等。它可以按照这些框架来扫描集群,找出潜在的安全风险。
kubescape还支持CI/CD集成,可以在部署之前扫描YAML文件,找出配置中的安全问题,防止不安全的配置部署到集群里。
这个工具对于重视安全的团队来说很有价值。定期扫描,及时发现和修复安全问题,能大大降低被攻击的风险。
Prometheus和Grafana:监控和可视化
第八个推荐的是Prometheus和Grafana,这两个是K8s监控的标配。
Prometheus是一个时序数据库,用来收集和存储监控指标。Grafana是一个可视化工具,用来展示监控数据。这两个配合使用,可以搭建一套完整的K8s监控系统。
用Prometheus,可以收集集群的各种指标,比如节点的CPU、内存、磁盘使用率,Pod的运行状态、资源使用率,Deployment的副本数,Service的请求量等。还可以自定义指标,收集业务相关的监控数据。
用Grafana,可以把这些指标做成漂亮的仪表盘,实时展示集群的运行状态。有各种图表可以选择,折线图、柱状图、饼图、热力图等,还可以设置告警,指标异常的时候自动通知。
现在有很多现成的Grafana仪表盘模板,可以直接导入使用,不用自己从零开始做。比如K8s集群监控、节点监控、Pod监控等模板,都很成熟。
对于生产环境的K8s集群来说,监控是必不可少的。Prometheus加Grafana是最常用、最成熟的方案。
Argo CD:GitOps持续部署
第九个推荐的是Argo CD,这是一个基于GitOps的持续部署工具。
传统的部署方式是用kubectl apply或者CI/CD工具把应用部署到集群里。这种方式有一些问题,比如部署状态不可追溯、集群配置和Git仓库不一致、手动修改难以发现等。
Argo CD采用了GitOps的理念,把Git仓库作为应用配置的唯一真实来源。Argo CD自动同步Git仓库里的配置到K8s集群里,确保集群的状态和Git仓库一致。如果有人手动修改了集群里的配置,Argo CD会检测到不一致,并自动恢复或者告警。
用Argo CD,可以图形化地查看应用的部署状态,包括同步状态、健康状态、资源列表等。还支持回滚,可以一键回滚到之前的版本。
Argo CD还支持多集群管理,可以同时管理多个K8s集群的应用部署。对于有多个集群的团队来说,特别方便。
GitOps是现在云原生领域很火的一个理念,Argo CD是实现GitOps最好的工具之一。如果你的团队还在用传统的部署方式,建议试试Argo CD。
写在最后
上面推荐的这些工具,都是我在日常工作中经常用到的,每一个都实实在在地提升了我的工作效率。
当然,K8s的工具生态非常丰富,还有很多好用的工具没有提到。比如Helm(包管理)、Istio(服务网格)、Velero(备份恢复)、Harbor(镜像仓库)等等,这些都是很常用的工具。
工具是为了提升效率服务的,不是越多越好。根据自己的需求,选择合适的工具,把它们用好,比装一堆工具但都用不熟练要好。
如果你是K8s新手,建议先从kubectx、kubens、k9s这几个工具开始,它们能立刻提升你的日常操作效率。然后再根据需要,逐步引入其他工具。
如果你是K8s老手,也建议看看有没有什么新工具可以尝试。工具生态更新很快,经常有新的工具出现,说不定哪个就能解决你一直头疼的问题。
最后用一句话来结束这篇文章:"工欲善其事,必先利其器。好的工具能让你事半功倍,把时间花在更有价值的事情上。"
愿你在K8s的世界里,找到属于自己的利器,让工作更轻松、更高效。
评论(0)
暂无评论,快来抢沙发~
评论功能仅对会员开放,请先登录
登录