Kubernetes最佳实践 Kubernetes零停机集群升级

Kubernetes最佳实践创建小型容器
Kubernetes最佳实践。具有Kubernetes
最佳实践命名空间的Kubernetes组织。 Kubernetes可行性测试与就绪性和活力测试Kubernetes
最佳实践。设置查询和资源限制
Kubernetes最佳实践。正确终止
禁用Kubernetes最佳实践。映射外部服务

每个人都知道使您的应用程序保持最新是多么的好。 Kubernetes和Docker可以简化升级过程,因此您可以创建具有更新依赖关系的新容器并轻松部署它。除了更新应用程序依赖关系外,Kubernetes还在不断更新功能和安全策略。
因此,Kubernetes的基本节点和基础结构必须是最新的。在本系列中,我们将学习Google Kubernetes Engine如何轻松升级Kubernetes集群。

因此,在更新集群时,您需要更新向导和节点,并且必须先更新向导。让我们看看如何使用Google Kubernetes Engine更新两个元素。该系统在发布点版本时自动更新向导。但是,通常,它不会自动更新到新版本,例如1.7-1.8。当您准备升级到新版本时,只需在GKE控制台中单击“升级可用”链接,然后在屏幕上将出现一个对话框。它包含警告,更改主版本可能需要几分钟,在此期间您无法编辑此群集,而在升级向导期间,您的部署和服务将继续正常运行。但是,需要Kubernetes API的整个基础架构将无法正常工作。



这意味着QPTL和所有使用Kubernetes API获取集群信息的应用程序将被禁用,并且您将无法对集群进行任何更改。

让我们看看如何通过零停机时间更新向导来解决此问题。



虽然标准GKE区域群集仅支持一个向导,但是您可以创建提供多区域高可用性向导的区域群集。因此,在创建集群时,请确保选择区域选项。

您的节点和向导将在三个区域中自动创建,并且向导将具有负载平衡的IP地址。这将使Kubernetes API在升级过程中保持平稳运行。

更新节点时,可以使用几种不同的策略。我想将您的注意力集中在两件事上-滚动滚动更新和使用节点池的迁移。

更新Kubernetes节点最简单的方法是使用滚动更新,滚动更新是GKE用于更新节点的默认更新机制。它的工作原理如下。



旧版本的节点陆续停用,以便所有模块都无法在其中运行。然后,这些节点被删除,而不是它们,更新的Kubernetes版本的新节点一个接一个地出现。一个节点开始工作后,另一节点继续进行更新过程,此过程一直持续到所有节点都更新为止。您可以通过选择“启用”来启用节点池中节点的自动更新,以让GKE为您管理此过程。



如果不这样做,则在有新更新可用时,GKE仪表板会警告您。在这种情况下,要执行更新,您需要单击自动节点更新链接,然后按照说明进行操作。



同时,确保使用副本集,有状态集或类似集合控制您的Pod非常重要。这样,自主炉床将不会进行重组。

尽管使用GKE进行滚动更新非常容易,但仍存在一些缺点。其中之一是,升级时,群集的容量将减少一个节点。通过添加额外的容量并在更新后减少它来扩展节点池,可以轻松消除此缺点。

此外,滚动更新的完全自动化特性使更新变得更容易,但使您对流程的控制较少。如果出了点问题,您必须回滚到旧版本,这将花费一些时间来停止滚动更新并放弃已进行的任何更改。让我们看看如何使用来自多个节点的池来升级集群。



因此,无需使用滚动更新来更新活动的节点池,而是创建一个全新的节点池,等待所有节点启动,然后一次转移一个节点的工作负载。当您自己执行这些命令时,您将获得对迁移过程的更多控制,而GKE继续管理您的节点。
假设Kubernetes集群包含3个虚拟机。您可以使用get nodes命令查看节点。



要创建名为pool-two的新节点池,您需要使用适当的命令,并将其设置方式与旧池的命令完全相同。



(可选)您也可以使用GUI创建新的节点池。有关此的更多信息,请使用此视频下方的“节点池创建”链接。

如果再次检查节点数,则会找到三个具有两个池名称的新节点,但是,吊舱仍将位于旧节点上。



让我们将它们移动到新的节点池中,以滚动模式一次移动一个节点。为此,对每个旧节点使用cordon命令来保护它们并防止在其中形成新的炉膛。



一旦所有旧节点都被隔离,将仅在新节点中规划炉床的创建。这意味着您可以开始从旧节点中删除Pod,Kubernetes将自动计划在新节点中创建它们。然后,您需要“排水”每个节点,这将导致节点中所有炉床的移除。



在一个节点上执行此操作之后,请确保新的Pod已准备就绪并且已经可以工作,然后继续进行下一个节点。如果在迁移过程中遇到任何问题,请对旧池运行uncordon,然后对新池运行警戒线和排水装置。在这种情况下,豆荚将自动转移回旧池。一旦安全地传输了所有的Pod,就可以删除旧池。为此,将默认池替换为要删除的池。



借助Google Kubernetes引擎,只需单击几下,即可使Kubernetes集群保持最新。我强烈建议对高可用性向导和自动节点更新使用GKE区域群集,以确保正确且无故障的更新。

如果您需要对节点更新过程的其他控制,则可以在池的帮助下为其提供控制,而不必放弃GKE提供的管理平台的优势。

如果未使用GKE,则使用滚动更新滚动方法或节点池节点来更新群集的节点。但是请记住,在这种情况下,您需要手动将新节点添加到集群并亲自执行关键更新,这可能并不十分简单。

即将继续...


一点广告:)


感谢您与我们在一起。你喜欢我们的文章吗?想看更多有趣的资料吗?通过下订单或向您的朋友推荐给开发人员的基于云的VPS,最低价格为4.99美元这是我们为您发明的入门级服务器 独特类似物:关于VPS(KVM)E5-2697 v3(6核)的全部真相10GB DDR4 480GB SSD 1Gbps从$ 19还是如何划分服务器?(RAID1和RAID10提供选件,最多24个内核和最大40GB DDR4)。

阿姆斯特丹的Equinix Tier IV数据中心的戴尔R730xd便宜2倍吗?在荷兰2台Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100电视戴尔R420-2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB-$ 99起!阅读有关如何构建基础设施大厦的信息。使用Dell R730xd E5-2650 v4服务器花费一欧元9000欧元的c类?

All Articles