大规模自动化生产级Kubernetes管理的七种方法编排的全部意义在于可靠地使自动化系统能够轻松地大规模部署和管理应用程序,而无需在每一步都进行人工干预。如果您用于Kubernetes的工具不支持自动化,那么您就没有真正利用编排的好处。为此,这七种方法可以让您自动化生产Kubernetes集群的管理。1.日志任何Kubernetes生产环境都会高度依赖日志。在Kenzan,我们通常努力将平台日志与应用程序日志分开。这可以通过不同的工具和应用程序来完成,甚至可以通过在日志本身中进行过滤和标记来完成。与任何分布式系统一样,日志为准确跟踪特定调用提供了重要证据,即使它们针对不同的微服务,也可以查明根本原因。2.自我修复我们认为,如果没有自我修复能力,您的系统几乎不可能实现高正常运行时间,尤其是在分布式环境中。Kubernetes可以定期监控Pod和容器的健康状况,并立即采取行动解决遇到的问题。Kubernetes可以直接识别的两种对象类型是容器状态(podstatus)和容器状态(containerstatus)。容器探测器(livenessProbe和readinessProbe)允许您定义您希望Kubernetes如何监控容器是否处于活动状态和就绪状态。就绪探测特别有用,因为如果探测失败,它实际上会保持pod运行但不会传递任何流量。不过请注意,虽然每半小时重新启动等自我修复功能很有用,但它们也可能掩盖应用程序的问题。您需要足够强大的监控和日志记录功能来发现出现的任何问题。3.弹性测试弹性测试应该是您平台的一部分,具体取决于您的应用程序要求(例如99.999%的正常运行时间)。任何级别的应用程序故障都应该是可恢复的,这样就没有人会遇到任何停机时间。根据我们的经验,只有开发团队事先知道他们的开发工作将经过广泛的弹性测试,才能实现可靠的应用程序。虽然您可以使用最简单的手动方法进行弹性测试,例如手动关闭数据库或随机终止pod,但我们的经验表明,这些方法在自动化时更有效。虽然Netflix的ChaosMonkey是一个非常强大且非常有用的弹性测试工具,它在AmazonWebServices中运行,但它并不是为Kubernetes构建的。幸运的是,Kubernetes领域出现了新兴的弹性测试框架,其中两个是fabric8ChaosMonkey(fabric8IDE的一部分)和kube-monkey。4.例行审计无论你有多少制衡措施,你的Kubernetes生产环境都将受益于例行维护和审计。例行审计将涵盖通常监测未涵盖的领域。传统上,审计是作为手动过程执行的,而该领域的自动化工具正在迅速而显着地改进。5.自动缩放对于Kubernetes,缩放通常意味着以下两种情况之一:缩放pods缩放集群中的节点缩放pods绝对是最常见的缩放形式。这将添加更多服务实例并让它们准备好开始接受流量。通常,使用Heapster指标执行Pod级扩展以确定是否需要创建新实例。实际上,我们通常将最小pod计数设置得非常低,并让KubernetesHorizo??ntalPodAutoscaler正确设置最小副本数。我们总是将最小值设置为大于每个集群的一个副本,以避免出现单点故障情况。缩放节点是一种罕见的情况,但对于高弹性应用程序来说是一种非常有用的缩放机制。节点扩容需要底层IaaS(AWS、GCP等)扩容并注册到Kubernetes集群。此过程可以手动完成,但我们不推荐这样做。通常我们使用可以自动缩放单个节点的工具。节点级自动缩放器将执行两个主要操作,第一个是在需要时添加更多节点,第二个是删除未充分利用的节点。6.资源配额资源配额允许您在Kubernetes平台中限制命名空间,确保一个应用程序不会占用所有资源而影响其他应用程序。设置资源配额可能有点困难。根据我们的经验,将命名空间除以预期负载并使用比率来计算集群的百分比是最安全的方法。运行Heapster允许您使用kubectltop{node|pod}命令,显示当前节点或pod的资源使用情况,有时可以帮助配额。之后,使用监视和审计来确定您的分区是否正确。7.容器资源限制弄清楚单个容器或pod需要多少资源可以说是一门艺术。过去,开发团队估计的资源远远超过实际需要。我们正在尝试进行某种程度的负载测试,观察故障转移的工作方式,然后适当地分配资源。Netflix将此方法称为“挤压测试”。原标题:7WAYSTOAUTOMATEKUBERNETESATSCALEINPRODUCTION,作者:CraigMartin
