@levinzhang
2018-09-18T21:50:16.000000Z
字数 2457
阅读 690
Kubernetes是最为流行的容器管理和编排平台,本文总结了Kubernetes集群中经常用到的应用程序及其用途。
本文最初发表于kubedex,经该网站授权由InfoQ中文站翻译分享。
在崭新的Kubernetes集群上,经常会安装的helm chart都有哪些呢?下面这个清单代表了我们的观点。
序号 | 名称 | 理由 |
---|---|---|
1 | nginx-ingress | 世界上最常见的前端代理,非常易于搭建,功能具有通用性。根据场景的不同,可能会有更好的Ingress,但是它的份额占到了99%。 |
2 | coredns | Kubernetes上最好的DNS服务器。默认的KubeDNS比较糟糕,所以毫无疑问你需要将它切换掉。借助coredns你还可以启用一些很酷的插件,使其能够与其他的应用程序协作,比如Prometheus。 |
3 | Prometheus | 每个人都应该使用Prometheus,它提供了自定义的时序监控功能,允许你instrument代码并在Grafana中以图形化的方式进行监视。你还可以搭建告警功能,当生产环境崩溃或延迟让顾客感到不满时,你能得到提醒。它同时还需要Grafana和kube-state-metrics chart。 |
4 | Istio | 通过Istio服务网格连接微服务能够解锁大量很酷的特性,包括流量控制、认证与授权、加密和可观察性。你可以移除微服务中大量的应用程序逻辑,让Istio来处理它。 |
5 | Nuclio | Nuclio是我们目前最喜欢的FaaS应用,它为实时和数据驱动应用提供了Serverless Function,与AWS Lambda的处理方式相同,只不过是在你的集群中运行。 |
6 | Jaeger | 为你的应用提供分布式跟踪功能,它能够跟踪每个微服务的每次API调用。我们都知道,微服务最大的问题就是可观察性。在解决这个问题方面,我们走过了很长的道路。 |
7 | Fluentd | 捕获日志并将其发送至ElasticSearch,这样我们就可以通过搜索错误日志判断微服务中出现了什么问题。在使用它的时候,还需要Kibana chart。 |
8 | Anchore | 如今,谁的应用会不关注安全性呢。我们需要它来捕获安全漏洞并与CI/CD管道进行集成。 |
9 | Jenkins | 为容器提供CI/CD功能。几乎每个人都在运行它,不过喜欢它的人似乎并不多,但是它非常流行,在安装Gitlab之前,它是默认的方案。 |
10 | NATS | 一个非常酷的PubSub消息系统,因为并非所有的内部通信都需要通过API,它还有一些很酷的流特性。 |
将我们最喜欢的应用限制在10个确实非常困难。除此之外,还有一些非常棒的应用程序并没有能够包含进来。我们最终优先考虑的是核心功能的升级以及为开发人员所带来的帮助。
Heptio Ark是一个用来管理灾难恢复的工具,尤其适用于Kubernetes集群资源和持久化卷。
其实,没有人愿意编写备份和恢复脚本。我们推荐你了解一下这个应用,它可以为你解决这些问题。
可以说,Gitlab比Jenkins更好,应该取代它出现在列表中。但是,我们不能忽视一个事实就是几乎每个人都在运行Jenkins,所以这一次我们将票投给了流行度。
另外一个有争议性的就是在列表中排名第一的nginx-ingress。很多人可能会说“我希望将nginx换成Traefik或Ambassador”。
这次,我们站在了新人和流行度这一边。随着时间的推移,会有更多高级用户最终放弃nginx-ingress,转而研究这两个可选方案。
我们在大多数集群上都运行external-dns,它自动管理我们外部DNS记录的更新。
相对于列表中的其他条目,它并没有提供太多的功能,但有时候你可能还是需要安装它,以避免手动配置。
Magic Namespace是用来管理namespace之间安全性的helm chart。如果你运行多租户集群的话,毫无疑问你将会遇到这方面的问题。
每个人都喜欢混乱的monkey测试(chaos monkey)。
但是我们不能一开始就告诉人们安装一个chart,让它任意地杀死集群中的pod。如果有人足够自信,能够忍受混沌过程的考验,那么Chaoskube就是为他们准备的。
这些仪表盘应用并没有包含在列表中。如果你喜欢使用漂亮的UI界面来展现集群状态的话,那么kube-ops-view非常棒。如果你更喜欢点击按钮的操作方式的话,那么Kubernetes Dashboard可能更适合你。
cert-manager是一个Kubernetes应用程序,用于自动化管理和发布来自不同发行源的TLS证书。
如果你已经厌倦了围绕像LetsEncrypt之类的服务创建自定义自动化功能,那么可以了解一下cert manager。
这个有点悲剧色彩,Envoy是非常棒的edge和服务代理,但是没有人会以helm chart的形式来使用它。它会打包到某个chart中,比如前十列表中的Istio。我在这里将它列出来,也是某种程度上为它伸张正义。
Spinnaker是非常流行的CI/CD平台,它是由Netflix开源的。它未能跻身前十,是因为它有些复杂。它需要不少规划工作才能搭建起来,此外,它是可配置的,很多内容都是围绕Terraform完成的。如果你的团队有不少人,应用非常复杂,需要一个强大的方案来替代通过各种hacked手段连接在一起的Jenkins job的话,那么可以了解一下Spinnaker。
如果你要暴露API给外部世界的话(运行Kubernetes的场景下基本都会这样做),那么你应该了解一下Kong,它是一个API网关,能够帮助我们管理很多标准的功能,比如认证、路由、日志等等。它还有一个插件系统,借助该系统能够为其扩展一些非常棒的特性。