Kubernetes推动了IT行业的竞争。如今,作为一项成熟的技术,全球各地的企业都在迅速采用基于微服务,容器驱动的方法来交付软件。Kubernetes是行业标准。行业领导者正在帮助它如雨后春笋般发展,基于Kubernetes核心开发全面的应用程序和生态系统。由于它能够支持应用程序可以创建的各种需求和约束,因此它是最受欢迎的开源容器编排平台。
我们推荐了15个最佳Kubernetes工具,这些工具能更加完善Kubernetes,并提高开发效率。也能让我们更多的了解到Kubernetes。
Kubernetes监控工具
cAdvisor:https://github.com/google/cadvisor
cAdvisor是一款开源的Kubernetes监控工具,由Google维护。主要用于监视资源使用情况和性能。cAdvisor支持Docker,并与Kubelet集成,且支持任何容器类型。cAdvisor能够自动发现服务中所有运行的容器,然后收集、处理以及分发容器的信息。但是它有个缺点,就是无法存储长期的监控指标数据。cAdvisor的容器抽象基于Imctfy。它继承了嵌套的层次结构行为。
Kubernetes Dashboard:https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/
Kubernetes Dashboard是一款基于网页的Kubernetes用户界面,适用于规模较小的集群。它提供了一个用于管理Kubernetes的UI,其中功能包括了服务发现、负载均衡以及监控管理。它还具备了对容器应用排错。监控CPU和内存的使用情况以及监控Pod的运行状况。安装的时候可直接使用现成的YAML模板进行安装部署。Cabin是Kubernetes Dashboard的移动版本,它为iOS和Android提供类似的功能。
Kubelet:https://github.com/kubernetes/kubelet
kubelet是在每个Node节点上运行的主要“节点代理”,它通过在API server上注册节点。kubelet是基于PodSpec来工作的,每个PodSpec是一个描述Pod的YAML或JSON对象,所以Kubelet能够通过PodSpec监控这些节点。另外,Kubelet接受来自API server提供的一组PodSpec,但是无法管理它们。比如,Docker的cAdvisor就是这种类型的,它主要的好处在于可以监控整个集群。
Kubernetes安全工具
容器对于安全性的要求是独一无二的,它们不像其他类型的托管,比如VPS。因为它们需要被一层一层的保护起来,包括运行中的容器、协调器以及应用程序的镜像。以下是一些专用工具。
Twistlock:https://www.twistlock.com/
Twistlock是一个全生命周期的容器安全解决方案。它具有VMS,可持续扫描Kubernetes以及任何易受攻击的区域。扫描容器镜像是Twistlock另外一个重要的功能,支持使用Node.js和Docker镜像。Twistlock专注于容器安全性的两个方面。首先它会持续扫描容器镜像,因为每天都会有新的威胁出现。另一方面,它着重于容器运行时的安全性,前提是需要先设置正常行为的基准,之后便可以轻松监控容器的安全。
Falco:https://falco.org/
Falco是一种行为活动监视器,用于检测应用程序异常。它源自Sysdig项目,目前已经成为一款商业产品。Falco通过跟踪内核系统调用来监控容器性能。Falco允许使用一组规则持续监视和检测容器、应用程序、主机和网络活动。支持Kubernetes和容器,可以为每个Kubernetes集群构建唯一的规则,这些规则可以在所有容器内强制执行。Falco还为容器运行时提供本地支持。
Aqua Security:https://www.aquasec.com/
Aqua Security在部署之前扫描镜像,会把镜像设置成只读,这样一来镜像不容易受到威胁。此外,它还能够轻松检测异常,这些扫描检测是在每个应用程序上下文中完成的。保护多租户环境是它的核心功能之一。Aqua Security在确保租户之间隔离的同时执行此任务,隔离是指数据和访问;它扫描多个安全问题,其中包括已知威胁,嵌入式机密和恶意软件。它会运行其他测试来检查设置和权限中的问题。除了Kubernetes之外,Aqua Security还与十多个容器供应商兼容。
Kubernetes部署工具
Helm:https://helm.sh/
Helm是一个Kubernetes应用的包管理工具,它使用的是一种叫做charts的yaml文件。类似homebrew,apt或yum rpm。charts用于定义,安装以及升级Kubernetes。它们是一种模板,甚至支持最复杂的Kubernetes。charts被设计的便于创建和维护,它们可以互相共享并用于发布Kubernetes。charts包含说明文件以及至少一个模板,其中模板包含了Kubernetes清单文件。它们可以多次部署重复使用。如果多次安装同一个charts,则将创建一个新的版本。
Apollo:https://github.com/logzio/apollo/wiki/Getting-Started-with-Apollo
Apollo提供自助UI,用于部署和创建Kubernetes服务,Apollo允许管理员单击一下即可查看日志并且可以将部署恢复到任何时间点。它是Kubernetes中连续部署的轻量级工具,可以与任何现有的构建过程集成,只需要通知“就绪工件”即可。Apollo允许用户管理多个Kubernetes集群,这些集群中的每个集群都可以具有多个命名空间。另外,它还具有实时查询功能允许查看当前的部署状态,也支持查看Pod状态,查看日志以及重启Pod。它由Java客户端和用于监控的REST API组成。
Kubespray:https://kubernetes.io/docs/setup/production-environment/tools/kubespray/
Kubespray为Kubernetes部署和配置提供一组Ansible角色。Kubespray支持AWS,Google Cloud Environment,Azure和OpenStack。Kubespray对于已经了解Ansible的人来说,是一个不错的选择,因为不需要使用其他工具进行配置和编排。Kubespray支持连续集成测试,对大多数Linux发行版均提供支持。
Kubernetes命令行工具
Kubectl:https://kubernetes.io/docs/tasks/tools/install-kubectl/
Kubectl是Kubernetes默认的命令行工具。它支持与Kubernetes相关的所有操作。通过在$HOME中配置文件检测节点。kubectl也接受其他kubeconfig文件,只需要设置相关的环境变量,也可以使用-kubeconfig参数指定其它kubeconfig文件。Docker用户可以使用kubectl与API服务进行交互。kubectl命令类似Docker命令,不过有一些细微的差异。
kubectx:https://github.com/ahmetb/kubectx
kubens:https://github.com/ahmetb/kubectx/blob/master/kubens
这两个Kubernetes工具都可以通过共享存储库使用。它们通过kubectl提供其他功能。在多集群环境中,可以使用kubectx在集群之间切换上下文,避免使用kubectx关键字执行复杂的命令。kubectx的一个显着优点是可以为群集名称添加别名。此功能允许使用“kubectx [alias]”命令切换上下文。kubectx会记住之前的上下文,接着可以通过“kubectx-”切换回去。kubectx在Windows上不可用,使用kubectxwin代替。kubens是一个类似的工具,对于在Kubernetes命名空间之间切换非常有用。“kubens-”命令将切换回上一个上下文。
Kube-shell:https://github.com/cloudnativelabs/kube-shell
Kube-shell是另一个Kubernetes工具,可用于补充kubectl。它是在kubectl之上构建的shell。它通过为命令提供自动完成功能来提高效率。它根据键入的值建议命令。执行命令后,Kube-shell将提供内联描述。另一个重要功能是循环浏览以前的功能。可以使用方向键进行滚动。
Kubernetes Serverless工具
Kubeless:https://kubeless.io/
Kubeless用于部署小型应用程序的本地Kubernetes工具。它使用Kubernetes资源来执行许多任务,这有利于自动扩容、路由API、监控以及故障排查。Kubeless支持自定义资源,也就是允许Kubernetes创建自定义的Kubernetes资源,随后可以使用集群内的控制器对其进行监控。它还能够根据需要去运行。这些运行时可以通过HTTP使用。此外,还可以使用PubSub机制。
Fission software logo:https://fission.io/
Fission可以运行在本地计算机上或者是公有/私有云上。它提供对许多编程语言的支持。例如Python,NodeJS,Go,C#和PHP。然后可以将这些功能映射到HTTP请求或其他触发器。部署是通过单个命令完成的,无需担心构建容器。此功能与管理Docker注册表相同。像许多Serverless工具一样,Fission专注于代码,管道留给框架和协调器。Fission的基本功能是其工作流程。它通过逻辑门链接多个Serverless功能,无需处理网络或消息队列之类的问题。
IronFunction:https://open.iron.io/
IronFunction是另外一个用Golang编写的开源Serverless工具。它支持任何编程语言。支持AWS Lambda函数,这是主要的功能之一。可以导入Lambda函数并在任何平台上运行它们。它节省了使用成本。这方面与不考虑其用途的活动API不同。Serverless功能仅在使用时产生费用。这些成本是按时间划分的。扩展是另一个增强的领域。我们要做的就是增加IronFunction节点的数量,每个应用程序都没有缩放比例。
关于选择Kubernetes工具的最终决定
我们已经研究了Kubernetes工具的五种重要类型。尽管Kubernetes可以使用部分开放源代码工具列表,但是所有这些工具都可以使我们对容器管理体验更高效,更省力。
Kubernetes不断发展并由社区驱动。多亏了这个超级活跃的社区,这些漏洞很快被扩展,内置插件,附加组件和Bonus插件填补,这使该容器编排框架成为运行工作负载的最佳选择。
原文链接:https://phoenixnap.com/blog/kubernetes-tools
基于Kubernetes的DevOps实战培训
基于Kubernetes的DevOps实战培训将于2020年6月19日在上海开课,3天时间带你系统掌握Kubernetes,学习效果不好可以继续学习。本次培训包括:容器特性、镜像、网络;Kubernetes架构、核心组件、基本功能;Kubernetes设计理念、架构设计、基本功能、常用对象、设计原则;Kubernetes的数据库、运行时、网络、插件已经落地经验;微服务架构、组件、监控方案等,点击下方图片或者阅读原文链接查看详情。