「容器云架构」设置高可用性Kubernetes Master

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 「容器云架构」设置高可用性Kubernetes Master

您可以使用kube-up或kube-down脚本为Google Compute Engine复制Kubernetes masters 。本文档介绍了如何使用kube-up / down脚本来管理高可用性(HA) masters,以及如何实现HA masters以与GCE一起使用。

  • 在你开始之前
  • 启动与HA兼容的集群
  • 添加新的主副本
  • 删除主副本
  • 处理主副本故障
  • 复制HA群集的主服务器的最佳做法
  • 实施说明
  • 补充阅读

在你开始之前

您需要具有Kubernetes集群,并且必须将kubectl命令行工具配置为与集群通信。如果您还没有集群,则可以使用Minikube创建一个集群,也可以使用以下Kubernetes游乐场之一:

  • Katacoda
  • Play with Kubernetes

要检查版本,请输入kubectl版本。

启动与HA兼容的集群

要创建新的HA兼容群集,必须在kube-up脚本中设置以下标志:

  • MULTIZONE = true-防止从服务器默认区域以外的区域中删除主副本kubelet。如果要在不同区域中运行主副本,则为必需项(建议)。
  • ENABLE_ETCD_QUORUM_READ = true-确保从所有API服务器进行的读取将返回最新数据。如果为true,则读取将定向到领导者etcd副本。将此值设置为true是可选的:读取将更可靠,但也将更慢。

(可选)您可以指定要在其中创建第一个主副本的GCE区域。设置以下标志:

  • KUBE_GCE_ZONE = zone -第一个主副本将在其中运行的区域。

以下示例命令在GCE区域europe-west1-b中设置了HA兼容的集群:

MULTIZONE=true KUBE_GCE_ZONE=europe-west1-b ENABLE_ETCD_QUORUM_READS=true ./cluster/kube-up.sh

请注意,以上命令创建了一个具有一个主节点的集群;但是,您可以使用后续命令将新的主副本添加到群集中

加新的主副本

创建与HA兼容的群集后,可以向其添加主副本。您可以通过使用带有以下标志的kube-up脚本来添加主副本:

  • KUBE_REPLICATE_EXISTING_MASTER=true-创建现有 masters的副本。
  • KUBE_GCE_ZONE = zone-主副本将在其中运行的区域。必须与其他副本的区域位于同一区域。

您不需要设置MULTIZONE或ENABLE_ETCD_QUORUM_READS标志,因为这些标志是从启动HA兼容群集时继承的。

以下示例命令在现有的HA兼容群集上复制主服务器:

KUBE_GCE_ZONE=europe-west1-c KUBE_REPLICATE_EXISTING_MASTER=true ./cluster/kube-up.sh

删除主副本

您可以使用带有以下标志的kube-down脚本从HA群集中删除主副本:

  • KUBE_DELETE_NODES = false-禁止删除kubelet。
  • KUBE_GCE_ZONE = zone-将要从其中删除主副本的区域。
  • KUBE_REPLICA_NAME =replica_name-(可选)要删除的主副本的名称。如果为空:将删除给定区域中的任何副本。

以下示例命令从现有的HA集群中删除主副本:

KUBE_DELETE_NODES=false KUBE_GCE_ZONE=europe-west1-c ./cluster/kube-down.sh

处理主副本故障

如果高可用性群集中的一个主副本失败,则最佳实践是从群集中删除该副本,并在同一区域中添加一个新副本。以下示例命令演示了此过程:

删除损坏的副本:

KUBE_DELETE_NODES=false KUBE_GCE_ZONE=replica_zone KUBE_REPLICA_NAME=replica_name ./cluster/kube-down.sh

添加一个新副本来代替旧副本:

KUBE_GCE_ZONE=replica-zone KUBE_REPLICATE_EXISTING_MASTER=true ./cluster/kube-up.sh

复制HA群集的主服务器的最佳做法

  • 尝试将主副本放置在不同的区域中。在区域故障期间,放置在区域内的所有主设备都会发生故障。为了使区域失效,还要将节点放置在多个区域中(有关详细信息,请参阅多个区域)。
  • 不要将群集与两个主副本一起使用。更改永久状态时,两副本群集上的共识要求两个副本同时运行。结果,两个副本都是必需的,任何副本的故障都会使群集变为多数故障状态。因此,就HA而言,两个副本群集不如单个副本群集。
  • 添加主副本时,群集状态(etcd)将复制到新实例。如果群集很大,则可能需要很长时间才能复制其状态。可以通过迁移etcd数据目录来加快此操作,如此处所述(我们正在考虑在将来增加对etcd数据目录迁移的支持)。

实施说明


总览

每个主副本将在以下模式下运行以下组件:

  • etcd实例:将使用共识将所有实例聚在一起;
  • API服务器:每个服务器都将与本地etcd通信-群集中的所有API服务器将可用;
  • 控制器,调度程序和集群自动缩放器:将使用租借机制-它们中的每个实例只有一个在集群中处于活动状态;
  • 加载项管理员:每个管理员将独立工作,以使加载项保持同步。

此外,API服务器之前将有一个负载平衡器,它将外部和内部流量路由到它们。

负载均衡

启动第二个主副本时,将创建一个包含两个副本的负载均衡器,并将第一个副本的IP地址提升为负载均衡器的IP地址。同样,在删除倒数第二个主副本之后,将删除负载均衡器,并将其IP地址分配给最后剩余的副本。请注意,创建和删除负载平衡器是复杂的操作,传播它们可能需要一些时间(约20分钟)。

主服务和kubelets

系统没有尝试在Kubernetes服务中保留Kubernetes apiserver的最新列表,而是将所有流量定向到外部IP:

  • 在一个主群集中,IP指向单个主群集,
  • 在多主机集群中,IP指向主机前面的负载均衡器。

同样,外部IP将由kubelet用于与主机通信。

Master证书

Kubernetes为每个副本的外部公共IP和本地IP生成主TLS证书。没有用于副本的临时公共IP的证书;要通过其短暂的公共IP访问副本,必须跳过TLS验证。

集群etcd

为了允许etcd集群,将打开在etcd实例之间进行通信所需的端口(用于内部集群通信)。为了确保这种部署的安全性,etcd实例之间的通信使用SSL授权。


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
14天前
|
人工智能 弹性计算 运维
ACK Edge与IDC:高效容器网络通信新突破
本文介绍如何基于ACK Edge以及高效的容器网络插件管理IDC进行容器化。
|
17天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
157 77
|
3天前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
30 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
1天前
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
15天前
|
人工智能 运维 监控
阿里云ACK容器服务生产级可观测体系建设实践
本文整理自2024云栖大会冯诗淳(花名:行疾)的演讲,介绍了阿里云容器服务团队在生产级可观测体系建设方面的实践。冯诗淳详细阐述了容器化架构带来的挑战及解决方案,强调了可观测性对于构建稳健运维体系的重要性。文中提到,阿里云作为亚洲唯一蝉联全球领导者的容器管理平台,其可观测能力在多项关键评测中表现优异,支持AI、容器网络、存储等多个场景的高级容器可观测能力。此外,还介绍了阿里云容器服务在多云管理、成本优化等方面的最新进展,以及即将推出的ACK AI助手2.0,旨在通过智能引擎和专家诊断经验,简化异常数据查找,缩短故障响应时间。
阿里云ACK容器服务生产级可观测体系建设实践
|
16天前
|
运维 Kubernetes 调度
阿里云容器服务 ACK One 分布式云容器企业落地实践
阿里云容器服务ACK提供强大的产品能力,支持弹性、调度、可观测、成本治理和安全合规。针对拥有IDC或三方资源的企业,ACK One分布式云容器平台能够有效解决资源管理、多云多集群管理及边缘计算等挑战,实现云上云下统一管理,提升业务效率与稳定性。
|
27天前
|
运维 Kubernetes Docker
深入理解容器化技术:Docker与Kubernetes的协同工作
深入理解容器化技术:Docker与Kubernetes的协同工作
48 1
|
27天前
|
Kubernetes Cloud Native 持续交付
容器化、Kubernetes与微服务架构的融合
容器化、Kubernetes与微服务架构的融合
47 1
|
29天前
|
Kubernetes Cloud Native API
深入理解Kubernetes——容器编排的王者之道
深入理解Kubernetes——容器编排的王者之道
43 1
|
1月前
|
Kubernetes Cloud Native 持续交付
深入理解Kubernetes:容器编排的基石
深入理解Kubernetes:容器编排的基石

热门文章

最新文章

推荐镜像

更多