文档章节

构建企业级Kubernetes平台,你需要的工具都在这里!

RancherLabs
 RancherLabs
发布于 09/09 10:41
字数 2128
阅读 45
收藏 0

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

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

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

图1 搭建容器技术栈

图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/charts/tree/master/stable/elasticsearch

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

Prometheus Github repo:

https://github.com/helm/charts/tree/master/stable/prometheus

然而,Prometheus缺少用户界面,因此需要Grafana,这是一个数据可视化工具。它能够连接到Prometheus server,提供监控用的图表和dashboard。

Grafana Github repo:

https://github.com/helm/charts/tree/master/stable/grafana

管理和自动化

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/charts/tree/master/stable/elasticsearch

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

Prometheus Github repo:

https://github.com/helm/charts/tree/master/stable/prometheus

然而,Prometheus缺少用户界面,因此需要Grafana,这是一个数据可视化工具。它能够连接到Prometheus server,提供监控用的图表和dashboard。

Grafana Github repo:

https://github.com/helm/charts/tree/master/stable/grafana

持久化存储

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

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

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

https://github.com/portworx/helm/tree/master/charts/portworx

容器安全

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

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

https://github.com/neuvector/neuvector-helm

负载均衡

一旦应用程序部署在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集群在企业中成为现实。

© 著作权归作者所有

RancherLabs
粉丝 93
博文 251
码字总数 542187
作品 0
深圳
程序员
私信 提问
如何在MacOS上安装Docker Desktop和Kubernetes

虽然Linux可能是构建大多数企业级业务的基础,但其需要各个平台协助才能保持这种状态。其中一个经常被视为理想开发者环境的平台是苹果公司的macOS。它非常可靠,运行在市面上一些最好的硬件上...

Docker
08/23
0
0
企业落地Kubernetes的问题与对策

在当今云计算领域,“容器技术”已经从三四年前的炒作期正式进入了产业落地期,而Kubernetes作为容器平台的标准已经得到了广泛应用。 Kubernetes从2014年6月由Google宣布开源,到2015年7月发...

云容器大师
2018/11/30
0
0
什么样的持续交付工具和平台最适合你的组织?

持续交付和DevOps的方法论及实践已经存在很很多年,其主要要解决的问题就是,如何快速,安全的完成从开发到发布、运维,及后续的线上监控等一系列活动。 持续交付和DevOps包含了很多内容,比...

猫耳m
2018/05/02
75
0
容器加速业务创新,Serverless Kubernetes之解读

2018云栖大会武汉峰会企业研发云专场,阿里云高级技术专家汤志敏带来“容器加速业务创新,Serverless Kubemetes之解读”的精彩演讲,本文首先介绍了云原生架构的概念,其次详细阐述了标准的Kub...

云迹九州
2018/05/29
0
0
K8S 周岁庆生| 上海 Meetup 聊聊开源落地那些事儿

活动流程 12:30 - 13:00 签到 13:00 - 13:10 K8sMeetup「上海」开场 13:10 - 13:20 Keynote CNCF :Keith Chan 13:20 - 13:40 Keynote 谷歌:李锐 《谷歌 AI:把人工智能的益处带给每...

Caicloud
2018/06/23
161
0

没有更多内容

加载失败,请刷新页面

加载更多

golang-字符串-地址分析

demo package mainimport "fmt"func main() {str := "map.baidu.com"fmt.Println(&str, str)str = str[0:5]fmt.Println(&str, str)str = "abc"fmt.Println(&s......

李琼涛
今天
4
0
Spring Boot WebFlux 增删改查完整实战 demo

03:WebFlux Web CRUD 实践 前言 上一篇基于功能性端点去创建一个简单服务,实现了 Hello 。这一篇用 Spring Boot WebFlux 的注解控制层技术创建一个 CRUD WebFlux 应用,让开发更方便。这里...

泥瓦匠BYSocket
今天
6
0
从0开始学FreeRTOS-(列表与列表项)-3

FreeRTOS列表&列表项的源码解读 第一次看列表与列表项的时候,感觉很像是链表,虽然我自己的链表也不太会,但是就是感觉很像。 在FreeRTOS中,列表与列表项使用得非常多,是FreeRTOS的一个数...

杰杰1号
今天
8
0
Java反射

Java 反射 反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的 Class,Class 类 用于表示.class 文件(字节码)) 一、反射的概述 定义:JAVA 反射机制是在运行状态中,对于任...

zzz1122334
今天
5
0
聊聊nacos的LocalConfigInfoProcessor

序 本文主要研究一下nacos的LocalConfigInfoProcessor LocalConfigInfoProcessor nacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java p......

go4it
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部