内容字号:默认大号超大号

段落设置:段首缩进取消段首缩进

字体设置:切换到微软雅黑切换到宋体

消息队列_天翼云盘好用吗_新用户

2021-06-09 11:13 出处:欧普曼云计算 人气: 评论(0

消息队列_天翼云盘好用吗_新用户

与许多组织一样,您采用各种风险管理和风险缓解策略来保持系统运行,包括Google Kubernetes引擎(GKE)环境。这些策略确保了在可预测和不可预测的停机期间的业务连续性,现在,当您努力限制流感大流行对您的业务的影响时,它们尤其重要,我们将提供关于如何在所谓的第0天设置GKE集群以提高可用性的建议和最佳实践。然后,请继续关注第二篇文章,它描述了集群启动并运行后第2天的高可用性最佳实践。

在考虑GKE集群的高可用性时,第0天常常被忽略,因为许多人认为中断和维护是第2天运行的一部分。实际上,在部署工作负载之前,有必要仔细规划GKE集群的拓扑和配置。

为工作负载选择正确的拓扑、规模和运行状况检查

在创建GKE环境和部署工作负载之前,需要确定一些重要的设计点。

选择正确的拓扑对于您的集群,gke提供两种集群:区域集群和区域集群。在分区集群拓扑中,集群的控制平面和节点都运行在创建集群时指定的单个计算区域中。在区域集群中,控制平面和节点跨单个区域内的多个区域复制。

区域集群由三个Kubernetes控制平面仲裁组成,提供比区域集群可以为集群的控制平面API提供更高的可用性。尽管在控制平面不可用的情况下,节点上运行的现有工作负载不会受到影响,但有些应用程序高度依赖于集群API的可用性。对于这些工作负载,您最好使用区域集群拓扑。

当然,选择区域集群也不足以保护GKE集群:扩展、调度和替换pod是控制平面的责任,如果控制平面不可用,则可能会影响集群的可靠性,这可能会导致只有当控制平面再次可用时才恢复。

您还应该记住,区域集群有冗余的控制平面和节点。在区域拓扑中,节点在不同区域之间是冗余的,这可能会导致昂贵的跨区域网络流量。

最后,尽管区域群集自动缩放尽最大努力在三个区域之间分布资源,但除非发生缩放操作,否则不会自动重新平衡资源。

总之,为了获得更高的可用性为了最大限度地减少在控制平面上维护时对群集的中断,我们建议您设置一个区域群集,其中节点部署在三个不同的可用性区域中,并注意自动缩放。

横向和纵向缩放容量规划很重要,但您无法预测一切。为确保您的工作负载在峰值负载时正常运行,并在正常或低负载时控制成本,我们建议探索GKE最适合您需求的自动缩放功能。

将垂直Pod自动缩放(VPA)与节点自动配置(NAP a.k.a.)结合使用。,Nodepool Auto Provisioning)允许GKE有效地横向(pods)和纵向(nodes)扩展集群。VPA自动为CPU、内存请求和容器限制设置值。NAP自动管理节点池,并从用户创建的节点池集中删除仅启动新节点的默认限制。

以上建议优化了成本。例如,NAP通过在未充分利用的时段关闭节点来降低成本。但也许您不太关心成本,而更关心延迟和可用性在这种情况下,您可能希望从一开始就创建一个大型集群,并使用GCP预留来保证您所需的容量。但是,这可能是一种成本更高的方法。

检查默认的监视设置Skubernetes非常擅长观察工作负载的行为,并确保负载在开箱即用的情况下均匀分布。然后,通过将工作负载中的特定信号暴露给Kubernetes,可以进一步优化工作负载可用性。这些信号,即就绪和活跃度信号,为Kubernetes提供有关您的工作负载的额外信息,帮助它确定它是否正常工作并准备好接收流量。让我们来检查准备就绪和活跃性探测之间的差异。

每个应用程序的行为都不同:有些应用程序可能需要比其他应用程序更长的时间来启动;有些是运行更长时间的批处理进程,可能会被错误地认为不可用。就绪性和活跃性探测器正是为此目的而设计的,目的是让Kubernetes知道工作负载的可接受行为。例如,trustdata大数据,一个应用程序可能需要很长时间才能启动,行业大数据,在此期间,您不希望Kubernetes开始向它发送客户流量,因为它还没有准备好为流量提供服务。当应用程序完成初始化并准备好为最终用户服务时,使用就绪探测,您可以向Kubernetes提供准确的信号。

确保设置就绪探测,以确保Kubernetes知道您的工作负载何时真正准备好接受流量。同样地,当一个工作负载实际上没有响应或者只是忙于执行CPU密集型工作时,设置一个活跃度探测会告诉Kubernetes。

最后,准备和活跃度探测只有在它们被定义和编码时才是好的。确保您测试并验证您创建的任何探测。

正确设置部署

每个应用程序都有一组不同的特征。有些是批处理工作负载,有些基于无状态微服务,有些基于有状态数据库。为了确保Kubernetes了解您的应用程序约束,您可以使用Kubernetes部署来管理您的工作负载。部署描述所需的状态,并与Kubernetes计划一起更改实际状态以满足所需状态。

您的应用程序是否有状态?如果您的应用程序需要在会话之间保存其状态,例如数据库,那么请考虑使用StatefulSet,国内的云服务器,这是一个Kubernetes控制器,它以正确处理有状态应用程序的独特特性的方式管理和维护一个或多个pod。它与其他Kubernetes控制器类似,后者管理诸如复制集和部署之类的pod。但与部署不同的是,Statefulset并不认为pod是可互换的。

要保持状态,Statefulset还需要持久卷,以便托管应用程序可以跨重启保存和恢复数据。Kubernetes提供存储类、持久卷和持久卷声明,作为云存储之上的抽象层。

了解Pod相关性是否希望所有副本都安排在同一节点上?如果那个节点失败了会发生什么?一次丢失所有副本可以吗?您可以使用Kubernetes Pod affinity和anti affinity规则控制Pod及其任何副本的放置。

为避免单点故障,请使用Pod anti affinity命令Kubernetes不要将Pod放在同一节点上。对于有状态的应用程序,这可能是一个关键的配置,特别是当它需要最少数量的副本(即仲裁)才能正常运行时。

例如,Apache ZooKeeper需要一个服务器仲裁才能成功地提交数据。对于三服务器集成,两台服务器必须正常才能成功写入。因此,弹性部署必须确保跨故障域部署服务器。

因此,为了避免因节点丢失而导致停机,我们建议您避免在同一台计算机上同时部署应用程序的多个实例。你可以通过使用Pod反亲和力来做到这一点。

另一方面,有时你希望一组Pod位于同一个节点上,这得益于它们的邻近性,因此在相互通信时延迟更少,性能更好。您可以使用Pod affinity来实现这一点。

例如,另一个有状态应用程序Redis可能正在为您的web应用程序提供内存缓存。在此部署中,您希望web服务器尽可能与缓存位于同一位置,以避免延迟并提高性能。

预计中断

一旦您配置了GKE群集和在其上运行的应用程序,企业信息化应用,是时候考虑一下在负载增加或中断的情况下您将如何应对。

全数字化需要更好的容量规划在GKE上运行Kubernetes群集可以让您摆脱对物理基础设施和如何扩展的思考。尽管如此,还是强烈建议执行容量规划,特别是当您认为可能会增加负载时。

考虑使用保留实例来保证任何预期的资源需求激增。GKE支持特定(机器类型和规格)和非特定保留。一旦设置了预订,节点将自动在后台使用为您保留的唯一资源池中的预订。

分享给小伙伴们:
本文标签: 消息队列天翼好用新用户用户

相关文章

评论

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

签名: 验证码: 点击我更换图片

评论列表