Active Network实践:构建Kubernetes平台的最佳工具

本文是Active Network公司IT副总裁Nate的分享,他将在文中介绍他们构建Kubernetes平台中用到的各种工具,为你构建稳定、可靠、便捷的K8S平台分享经验和建议。

Kubernetes已经成为业界公认的容器编排事实标准,它几乎无所不在。如今已经很难遇到一个从未了解Kubernetes这一技术的IT从业者。软件开发、测试以及基础设施都在其“业务范围”内。node

在建立一个生产就绪的Kubernetes平台以前,你须要准备好将应用程序从传统环境中迁移出来,而这毫不是一项简单的任务。你须要一个etcd数据库、kube-controller、kube-scheduler、证书、core-DNS等。它还要投入资源和时间来调研以肯定合适的组件组合以及可靠、自适应的测试方法以便在交换或加强组件时能够快速更改。git

除了建立环境和管理流程以外,公司战略战术的规划也格外重要。不多有公司仅仅为了知足基础设施的需求而开始采用容器。你的容器环境设计和技术栈更可能须要支持新旧计算形态,同时要避免重复使用资产、资源和费用。(技术栈和设计的功能示例以下图)github

图1 搭建容器技术栈docker

图2 容器环境设计数据库

管理和自动化

Rancher是一个开源的企业级Kubernetes管理平台,为企业用户提供Kubernetes-as-a-Service (Kubernetes即服务),它简洁直观的界面风格及操做体验,极大程度解决了业界遗留已久的Kubernetes原生UI易用性不佳以及学习曲线陡峭的问题。经过使用Rancher,你能够远离手动建立Kubernetes集群的痛苦而且能够一键自动设置集群。它还提供一套K8s集群所需的功能集,包括配置、访问控制、全局DNS、灾备和恢复、监控、日志以及集群升级。使用Ansible将能够为K8s节点配置 CentOS VMs。后端

日志和监控

Rancher具备内置的FluentD部署,可用于构建EFK堆栈。能够将每一个集群配置为把FluentD日志推送到Elasticsearch实例。安全

Kibana是一个开源的可视化平台,能够极为方便地查看和搜索Elasticsearch日志。服务器

Elasticsearch Github repo:网络

https://github.com/helm/chart...架构

Prometheus是一个收集监控指标的优质方案,Prometheus server可用于存储时间序列数据,alert-manager可用于管理告警,node-exporter可从节点导出指标,Kube-state-metrics能够为全部k8s对象生成指标。

Prometheus Github repo:

https://github.com/helm/chart...

然而,Prometheus缺乏用户界面,所以须要Grafana,这是一个数据可视化工具。它可以链接到Prometheus server,提供监控用的图表和dashboard。

Grafana Github repo:

https://github.com/helm/chart...

管理和自动化

Rancher是一个开源的企业级Kubernetes管理平台,为企业用户提供Kubernetes-as-a-Service (Kubernetes即服务),它简洁直观的界面风格及操做体验,极大程度解决了业界遗留已久的Kubernetes原生UI易用性不佳以及学习曲线陡峭的问题。经过使用Rancher,你能够远离手动建立Kubernetes集群的痛苦而且能够一键自动设置集群。它还提供一套K8s集群所需的功能集,包括配置、访问控制、全局DNS、灾备和恢复、监控、日志以及集群升级。使用Ansible将能够为K8s节点配置 CentOS VMs。

日志和监控

Rancher具备内置的FluentD部署,可用于构建EFK堆栈。能够将每一个集群配置为把FluentD日志推送到Elasticsearch实例。

Kibana是一个开源的可视化平台,能够极为方便地查看和搜索Elasticsearch日志。

Elasticsearch Github repo:

https://github.com/helm/chart...

Prometheus是一个收集监控指标的优质方案,Prometheus server可用于存储时间序列数据,alert-manager可用于管理告警,node-exporter可从节点导出指标,Kube-state-metrics能够为全部k8s对象生成指标。

Prometheus Github repo:

https://github.com/helm/chart...

然而,Prometheus缺乏用户界面,所以须要Grafana,这是一个数据可视化工具。它可以链接到Prometheus server,提供监控用的图表和dashboard。

Grafana Github repo:

https://github.com/helm/chart...

持久化存储

在Kubernetes里的一切都是动态的和无状态的,这违背了传统存储方案的原则。所以,选择一个可行的持久化存储方案是你将面临的其中一个难题。市场上有许多流行的解决方案,如Ceph、Rook、StarageIO以及Portworx。

其中,Portworx具备数据移动性、高可用性、平台独立性、持久卷的动态加密配置。在worker节点上,咱们建议anotherdisk(vmdk)经过Portworx建立存储池。Portworx配备了名为stork的智能调度程序,能够经过仅在几个工做节点上安装Portworx来节省许可成本。

你可使用这个helm chart部署Portworx:

https://github.com/portworx/h...

容器安全

容器安全在一直不断发展,因为pod的动态特性,让容器内发生的全部进程和通讯具备可见性和可控制变得相当重要。Neuvector能够提供主机和pod的连续运行时保护,它能够经过扫描Kubernetes集群、节点、pod以及容器镜像来保护容器不受安全漏洞的影响。此外,还有一个附带的优点是可以为集群提供docker和kubernetes基准。它还能经过学习pod/service的良好行为来成为网络防火墙,而且基于此动态建立安全策略。当service在“保护模式”中时,它可以防止任何未经受权的进程或网络通讯为该pod或服务运行。

你可以使用这个helm chart 部署 Neuvector:

https://github.com/neuvector/...

负载均衡

一旦应用程序部署在K8S集群中后,有几个选项能够将它们暴露到集群外部。另外一个须要考虑的因素是,若是你是将应用程序从传统基础架构迁移到容器中来,而且但愿保留回滚的状态或想要在传统环境中保留如今已经迁移到K8S集群中的服务。

AVI Networks能够提供软件定义的负载均衡器,它有一个控制平面和一个服务平面。这一负载均衡器提供负载均衡、流量管理、弹性伸缩以及端到端的自动化K8S服务。AVI在K8S云上将服务引擎部署为PODS,它能够处理南北流量(即客户端和服务器之间的流量),以及K8S服务的负载均衡。

每次在K8S云中建立ingress时,AVI都配置了DNS服务器和IPAM池,能够自动建立虚拟服务。它将从IPAM分配一个IP,建立一个DNS入口而且配置后端的pod池。AVI同时可以经过ingress的注释添加各类HTTP策略以及网络安全策略的功能。

CI/CD工具

因为全部东西及其依赖项都被打包到容器中,所以Kubernetes可使得持续部署成为现实,它还能从特定的工做节点中调度工做负载。而滚动更新策略能够零停机执行持续部署。

Jenkins是一个十分出色的持续集成和镜像构建的工具,它提供与Gitlab、Nexus、JFrog artifactory、SonarQube、Neuvector、Fority、Helm和Rancher进行进行集成,以构成一个完整的CI/CD 流水线。

Helm打包整个应用程序栈到chart中,包括应用程序所需的pod、服务、secert、ingress、持久化存储等。Helm还能在跨不一样环境的状况下保持部署一致。(以下图)

图3 容器组件

总而言之,如今有不少方法能够帮助构建Kubernetes平台,将应用程序部署在K8S集群中变得比以往任什么时候候都更容易。我但愿这能让你更好地了解须要关注的领域以及知道哪些工具或平台可以让K8S集群在企业中成为现实。

相关文章
相关标签/搜索