Kubernetes使用中的关键,你get到了吗?

Kubernetes使用中的7个关键

如今,业界已不再质疑容器的价值,考虑到采用DevOps和云架构的趋势,利用容器功能来实现企业业务自动化已变得至关重要。Google Kubernetes(K8S),作为一个开源的容器编排系统,已经成为云本地应用程序的事实上的标准,越来越多的企业正在使用Kubernetes创建由微服务和无服务器功能组成的可无缝扩展的现代系统架构。

1

然而,投资于基于容器的应用程序的企业通常难以实现Kubernetes和容器技术的价值,这主要是由于运维挑战所致。在本文中,我们将分享国际大型企业围绕其Kubernetes投资所需的七种基本能力,以便能够有效地实施并利用它来推动其业务。

托管Kubernetes服务确保SLA并简化操作

虽然对一些人来说可能存在争议,但让我们从关键的一点开始:对于生产环境,任务关键型应用程序-不要落入KubernetesDIY陷阱。

是的,Kubernetes很好用,容器是现代软件交付的未来,而且Kubernetes是编排容器的最佳实践。但众所周知,管理企业工作负载非常复杂,其中SLA至关重要。

简单地说,Kubernetes能够控制如何调度、部署和扩展组成应用程序的容器组(Pod),以及它们如何利用网络和底层存储。部署Kubernetes群集后,IT运营团队必须确定如何通过请求路由将这些Pod暴露给消费应用程序,以及如何确保这些Pod的运行状况、HA、零宕机环境升级等。随着群集的增长,IT需要使开发人员能够在几秒钟内上线,启用监控和故障排除,并确保顺利运行。

2

我们发现客户面临的最大挑战是Kubernetes安装后的运维。第一次安装后,各种问题就会出现:

1.   大规模配置持久存储和网络

2.   跟上Kubernetes快速移动的社区版本的最新动态

3.   修补应用程序和底层Kubernetes版本的安全性以及定期更新

4.   设置和维护监控和日志记录

5.   灾难恢复

6.   其他

管理生产级Kubernetes的运维的痛苦由于全行业的人才稀缺和技能缺口而更加复杂。如今,大多数组织都难以聘请备受追捧的Kubernetes专家,而且他们自己也缺乏先进的Kubernetes经验,无法确保规模上的顺利运营。

托管Kubernetes服务基本上提供了企业级Kubernetes,没有运营负担。这些服务可以是由AWSGoogle Cloud公有云提供商独家提供的服务,也可以是使组织能够在自己的数据中心或混合/多云环境中运行Kubernetes的解决方案。

即使使用托管服务,也需要注意不同类型的解决方案将使用“托管”或“Kubernetes-as-a-Service”来描述非常不同的管理体验级别。有些服务仅允许您以简单的自助服务方式部署Kubernetes群集,而其他服务将接管管理此群集的一些正在进行的操作,而其他服务仍提供完全托管的服务,该服务将为您完成所有繁重的工作,并提供SLA保证,并且不需要客户提供任何管理开销或Kubernetes专业知识。

例如,使用第三方托管的Kubernetes作为一项服务,您可以在不到一小时的时间内启动并运行企业级Kubernetes,这些Kubernetes可以在任何环境下工作。该服务通过将Kubernetes作为完全托管的服务提供,从而在规模上消除了Kubernetes的操作复杂性,包括开箱即用的所有企业级功能:自动升级、多群集操作、高可用性、监控等-所有这些都是自动处理的,并由24x7x365 SLA支持。

Kubernetes将是您的软件创新的中坚力量。使用DIY方法将造成业务的不必要的困扰,从一开始就选择托管服务,将为企业的成功做好准备。

集群监控和日志记录

Kubernetes的生产部署通常可扩展到数百个Pod,缺乏有效的监控和日志记录可能导致无法诊断导致服务中断并影响客户满意度和业务的严重故障。

监控提供Kubernetes基础设施的可见性和详细指标。这包括所有云服务商或本地数据中心、区域、服务器、网络、存储和单个VM或容器的使用情况和性能的细粒度指标。这些指标的关键用途应该是提高本地和公有云资源的数据中心效率和利用率(将转化为成本)

日志记录是有效监控所需的补充功能。日志记录可确保捕获架构每一层的日志:从Kubernetes基础设施及其组件以及应用程序,以便进行分析、故障排除和诊断。集中式、分布式的日志管理和可视化是一项关键功能,可以使用专有工具或开源工具(FluentBitFluentdElasticsearchKibana(也称为EFK堆栈)来满足)

监控不仅应全天候进行,而且还应针对生产中可能出现的瓶颈或问题提供主动警报,以及基于角色的仪表板,其中包含有关性能、容量管理等方面的KPI

注册表和包管理-Helm/Terraform

私有注册服务器是一个重要的功能,因为它可以安全地存储Docker映像。注册表支持映像管理工作流,包括映像签名、安全性、LDAP集成等。包管理器(Helm)提供了一个模板(Helm中称为“图表”)来定义、安装和升级基于Kubernetes的应用程序。

一旦开发人员成功地Build了他们的代码,他们理想的做法是使用注册表重新生成Docker映像,该映像最终使用Helm图表部署到一组目标Pod上。

这简化了基于Kubernetes的应用程序的CI/CD管道和发布流程。开发人员可以更轻松地在他们的应用程序、版本代码更改上进行协作,确保部署和配置的一致性,确保合性和安全性,并在需要时回滚到以前的版本。注册表与包管理一起确保将正确的映像部署到正确的容器中,并且安全性也集成到流程中。

用于DevOpsCI/CD工具链

启用CI/CD管道对于提高基于Kubernetes的应用程序的质量、安全性和加快发布速度至关重要。

今天,持续集成管道(如单元测试、集成测试等)和连续交付管道(例如从开发环境一直到生产环境的部署流程)通常使用GitOps方法和工具进行配置,开发人员工作流通常以“git push”开始-每个代码签入通常都会触发构建、测试和部署流程。这包括使用Spinnaker或其他工具进行蓝绿或金丝雀自动部署。更重要的是,Kubernetes基础设施可以轻松地“插入”到这些CI/CD工具中,以使您的开发人员能够提高他们的生产力和发布的质量。

集群供应和负载平衡

生产级Kubernetes基础设施通常需要创建高可用性、多主机、多etcd Kubernetes集群,这些集群可以跨越私有云或公有云环境中的可用区。这些集群的供应通常涉及AnsibleTerraform等工具。

一旦设置了集群并为正在运行的应用程序创建了Pod,这些Pod就会由负载均衡器负责将流量路由到服务。负载平衡器不是开源Kubernetes项目中的本机功能,因此您需要与Nginx入口控制器、HA ProxyELB(AWS VPC)等产品或其他工具集成,这些工具可扩展Kubernetes中的入口插件以提供负载平衡。

安全

毋庸置疑,安全性是云本地应用程序的关键部分,需要从一开始就考虑和设计。安全性是贯穿容器生命周期的常量,它影响基于容器的应用程序的设计、开发、DevOps实践和基础设施选择。有一系列技术选择可用于涵盖各种领域,例如应用程序级安全性以及容器和基础设施本身的安全性。这些工具包括使用基于角色的访问控制、多因子身份验证(MFA)、使用OAuthOpenIDSSO等协议的A&A(身份验证和授权);为容器本身内部的内容提供认证和安全的不同工具(如图像注册表、图像签名、打包)CVE扫描等。

治理

围绕治理、审计和合的流程是Kubernetes日益成熟的标志,以及基于Kubernetes的应用程序在大型企业和受监管行业中的日益增多。您的Kubernetes基础设施和相关发布流程需要与工具集成,以便为Kubernetes应用程序或基础设施的任何更新的不同任务和权限级别提供可见性和自动审核跟踪,从而实现正确的合性强制执行。

总之,为企业、任务关键型应用程序启用Kubernetes需要的不仅仅是部署Kubernetes集群。使用公有云上托管地Kubernetes服务将帮助企业用户很好地涵盖以上7个关键考虑事项,并帮助企业确保Kubernetes基础设施的设计适合生产工作负载。

上海冠闵信息科技有限公司专注于为企业客户提供专业的公有云上架构咨询设计、部署实施服务、云上运维服务以及云上账单管理服务。针对企业客户云上部署容器服务的痛点和难点,Silver Lining能够更好的帮助企业实现容器快速安全的部署、维护和部署!