Kubernetes 高可用性入门:初学者指南

Kubernetes 高可用性解释

  • 引言
  • 一、需要 Kubernetes 高可用性
  • 二、Kubernetes 控制平面的高可用性
    • 2.1、etcd
    • 2.2、API 服务器
    • 2.3、Kube 调度器
    • 2.4、Kube 控制器管理器
    • 2.5、云控制器管理器
  • 三、工作节点的高可用性
  • 四、Kubernetes 集群可用性度量
  • 五、Kubernetes 可用性常见问题
  • 六、总结

引言

在本文中将研究 Kubernetes 的高可用性。以及研究每个 Kubernetes 组件的弹性和容错能力。

Kubernetes 高可用性对于确保应用程序始终可用至关重要。本文提供了 Kubernetes 高可用性的全面的初学者指南,涵盖了基本概念、组件和最佳实践。

文章首先介绍了高可用性的重要性,并概述了 Kubernetes 中实现高可用性的方法。然后,它深入探讨了 Kubernetes 的核心高可用性组件。

实现 Kubernetes 高可用性的最佳实践,例如:

  • 使用多主控制平面: 避免单点故障。
  • 部署高可用节点: 使用多个节点来运行工作负载。
  • 使用自动 Pod 重新调度: 在节点故障时重新启动 Pod。
  • 监控和告警: 主动监控集群并对问题发出警报。

一、需要 Kubernetes 高可用性

Kubernetes 是一个分布式系统,它容易受到多种故障的影响。对于公司来说,拥有高可用性的 Kubernetes 以提供良好的客户体验至关重要。在发生意外中断时,如果集群在一个或多个组件发生故障后仍无法继续运行,则停机可能会导致收入损失、声誉问题等。

通过在 Kubernetes 中实施 HA,可以降低停机风险,在集群上运行的应用程序和服务仍然可用且可供用户访问,并且系统可以在没有人为干预的情况下快速从故障中恢复。在较高级别上,这可以通过部署具有跨多个可用区或区域的网络拓扑的控制平面组件的多个副本来实现。

二、Kubernetes 控制平面的高可用性

Kubernetes 控制平面具有以下核心组件。

  1. API 服务器
  2. Kube 控制器管理器
  3. Kube 调度器
  4. 云控制器管理器(可选)

运行单节点控制平面可能会导致所有控制平面组件出现单点故障。要拥有高度可用的 Kubernetes 控制平面,应至少有三个仲裁控制平面节点,并在所有三个节点上复制控制平面组件。

在这里插入图片描述
现在,了解跨节点部署为多个副本时每个控制平面组件的性质非常重要。因为很少有组件在部署为多个副本时使用 leader-election。

一起看一下每个控制位置组件的高可用性。

2.1、etcd

说到etcd HA架构,有两种模式。

  • 堆叠式 etcd:与控制平面节点一起部署的 etcd。
  • 外部 etcd 集群:运行专用节点的 etcd 集群。此模型具有管理良好的备份和还原选项的优点。

要具有容错能力至少应该有三个节点 etcd 集群。etcd 集群的容错能力如下表所示。

集群大小大多数容错能力
110
220
321
431
532
642
743

在生产部署方面,定期备份 etcd 至关重要。

2.2、API 服务器

API 服务器是一个无状态应用程序,主要与 etcd 集互以存储和检索数据。即API 服务器的多个实例可以跨不同的控制平面节点运行。

为确保集群 API 始终可用,应将负载均衡器放置在 API 服务器副本的前面。工作线程节点、最终用户和外部系统使用此负载均衡器端点与集群进行交互。

2.3、Kube 调度器

当运行多个 kube 调度程序实例时,它遵循 leader-election 方法。这是因为,schedler 组件涉及 pod 调度活动,并且一次只能有一个实例做出决策。因此,当运行调度程序的多个副本时,一个实例将被选为领导者,其他实例将被标记为跟随者。

这确保了始终有一个活动的计划程序,用于制定计划决策,并避免冲突和不一致。如果是领导者,则追随者将被选为领导者并接管所有日程安排决定。这样就拥有了一个具有一致调度的高可用性调度程序。

2.4、Kube 控制器管理器

Kuber 控制器管理器也遵循相同的领导者选举方法。在许多副本中,选出一个控制器管理器,领导者和其他人被标记为追随者。领导控制器负责控制集群的状态。

2.5、云控制器管理器

云控制器管理器 (CCM) 是一个 Kubernetes 组件,它运行与特定于云提供商的 API 交互的控制器,以管理负载均衡器、持久卷和路由等资源。

就像调度程序和 kube-controller 一样,CCM 也使用领导者选举来确保一次只有一个活动副本做出决策并与云提供商 API 交互。

三、工作节点的高可用性

要使工作器节点高可用性,需要运行应用程序所需的多个工作器节点。当存在 Pod 扩展活动或节点故障时,其他工作节点上应有足够的容量来安排 Pod。

在云平台上可以使用自动缩放来缩放工作器节点。因此,当存在扩展活动或资源需求时,工作节点可以扩展到所需的容量。

四、Kubernetes 集群可用性度量

假设没有计划内停机时间,Google SRE 手册中的下表显示了根据不同可用性级别计算允许的停机时间:
在这里插入图片描述

每个组织都有用于群集可用性的 SLO。如果使用的是管理服务,则服务提供商的 SLA 将与 SLO 保持一致。

  1. AWS EKS SLA
  2. GKE SLA
  3. Azure AKS SLA\

五、Kubernetes 可用性常见问题

(1)控制平面故障期间会发生什么?
即使发生控制平面故障,工作器节点上的现有工作负载也会继续为请求提供服务器服务。但是,如果出现节点故障,则不会发生 Pod 调度活动或任何类型的更新活动

(2)如果 Kubernetes 集群中的 DNS 服务失败,会发生什么情况?
如果 DNS 服务(如核心 DNS)发生故障,可能会对群集中运行的应用程序的可用性和功能产生重大影响。它可能会中断服务发现、外部访问、负载均衡、监视和日志记录以及滚动更新,从而导致应用程序故障、错误和中断。

六、总结

Kubernetes 高可用性对于确保应用程序始终可用至关重要。通过了解 Kubernetes 的核心高可用性组件和最佳实践,初学者可以构建高可用且弹性的 Kubernetes 集群。本文提供了 Kubernetes 高可用性的全面概述,是初学者入门并开始使用 Kubernetes 的宝贵资源。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/795230.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构与算法】(二)线性表、顺序表、静态顺序表、动态顺序表

文章目录 【数据结构与算法】(二)线性表、顺序表、静态顺序表、动态顺序表前言2.1 线性表的定义和特点2.2 线性表的类型定义2.3 线性表的顺序存储结构2.3.1 线性表的顺序存储表示(顺序表)2.3.2 静态顺序表的实现2.3.2.1 静态顺序表…

(学习日记)2024.04.07:UCOSIII第三十五节:互斥量实验

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

前端学习<三>CSS进阶——0102-CSS布局样式

前言 css 进阶的主要内容如下。 1、css 非布局样式 html 元素的分类和特性 css 选择器 css 常见属性(非布局样式) 2、css 布局相关 css 布局属性和组合解析 常见布局方案 三栏布局案例 3、动画和效果 属于 css 中最出彩的内容。 多背景多投影特…

如何用putty通过ssh连接ubuntu

1. 下载和安装PuTTY 访问PuTTY官网下载PuTTY的最新版本。 2. 打开PuTTY 解压下载的文件后,找到PuTTY文件并双击打开。 3. 配置SSH连接 在ubuntu下安装ssh服务在安装ssh时,我一直遇到一个问题,原因是我的虚拟机连不上网,反复实…

深入理解 SQL 中的数据集合和数据关联

引言 在数据库管理系统中,数据集合和数据关联是 SQL 查询中常见的概念。它们是构建复杂查询和分析数据的基石。本文将深入探讨 SQL 中的数据集合和数据关联,包括它们的概念、常见用途以及实际示例。 首先引入一下数学中的集合 集合的基本概念&#x…

加速度:电子元器件营销网站的功能和开发周期

据工信部预计,到2023年,我国电子元器件销售总额将达到2.1万亿元。随着资本的涌入,在这个万亿级赛道,市场竞争变得更加激烈的同时,行业数字化发展已是大势所趋。电子元器件B2B商城平台提升数据化驱动能力,扩…

Flutter Don‘t use ‘BuildContext‘s across async gaps.

Flutter提示Don‘t use ‘BuildContext‘s across async gaps.的解决办法—flutter里state的mounted属性

[蓝桥杯 2019 国 C] 数正方形

[蓝桥杯 2019 国 C] 数正方形 题目描述 在一个 N N N \times N NN 的点阵上,取其中 4 4 4 个点恰好组成一个正方形的 4 4 4 个顶点,一共有多少种不同的取法? 由于结果可能非常大,你只需要输出模 1 0 9 7 10^9 7 1097 的…

吴恩达机器学习笔记:第 6 周-11机器学习系统的设计(Machine Learning System Design)11.1-11.5

目录 第 6 周 11、 机器学习系统的设计(Machine Learning System Design)11.1 首先要做什么11.2 误差分析11.3 类偏斜的误差度量11.4 查准率和查全率之间的权衡11.5 机器学习的数据 第 6 周 11、 机器学习系统的设计(Machine Learning System Design) 11.1 首先要做什么 在接…

2024.3.19力扣每日一题——好子数组的最大分数

2024.3.19 题目来源我的题解方法一 双指针 题目来源 力扣每日一题;题序:1793 我的题解 方法一 双指针 左右指针初始指向k-1,k1,表示左右边界。参考官方题解 好子数组必须要包含 nums[k],那么我们可以使用两个指针 left 和 righ…

leetcode.24. 两两交换链表中的节点

题目 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 思路 创建虚拟头节点,画图,确认步骤。 实现 /*** Definition for singly-li…

docker安装、调试qsign签名服务器

go-cqhttp 在 Docker 里早就部署好了,由于没有搭建 qsign 签名服务器,所以迟迟不敢上线。今天终于搞定了在 Docker 下安装 qsign 签名服务器了。这次用的docker市场里找到的镜像,下次找时间制作一个自己的镜像。 1 拉取和运行镜像&#xff1a…

设计模式:生活中的组合模式

想象一下,你正在组织一个大型的家庭聚会。在这个聚会中,你需要准备各种菜肴,每个菜肴又包含不同的食材。你的目标是能够以统一的方式处理整个聚会的准备工作,不论是处理单个食材还是一整道菜肴。 在这个场景中,我们可…

C# MES通信从入门到精通(9)——c#使用visual studio2019社区版部署webservice服务

前言 在上位机软件开发领域,我们经常使用调用webservice接口来和mes系统进行交互,我们在开发Mes程序之前也可以自己先模拟发布客户的webservice接口进行调用从而加快软件开发进度,本文就是详细介绍如何自己发布webservice接口。 1、创建 参考这篇博文:webservice服务创建…

C# lambda表达式

lambda表达式关于参数表达式或语句块一个神奇的例子与总结换句话说 lambda表达式 C# 中的 lambda 表达式是一种简洁的表示匿名函数的方法。Lambda 表达式特别用于 LINQ 查询、事件处理程序、回调函数等场景中,它使得代码更加简洁和易于阅读。 Lambda 表达式的基本…

图像处理与视觉感知---期末复习重点(6)

文章目录 一、图像分割二、间断检测2.1 概述2.2 点检测2.3 线检测2.4 边缘检测 三、边缘连接3.1 概述3.2 Hough变换3.3 例子3.4 Hough变换的具体步骤3.5 Hough变换的法线表示形式3.6 Hough变换的扩展 四、阈值处理4.1 概述4.2 计算基本全局阈值算法4.3 自适应阈值 五、基于区域…

SV学习笔记(四)

OCP Open Closed Principle 开闭原则 文章目录 随机约束和分布为什么需要随机?为什么需要约束?我们需要随机什么?声明随机变量的类什么是约束权重分布集合成员和inside条件约束双向约束 约束块控制打开或关闭约束内嵌约束 随机函数pre_random…

LeetCode-131. 分割回文串【字符串 动态规划 回溯】

LeetCode-131. 分割回文串【字符串 动态规划 回溯】 题目描述:解题思路一:回溯, 回溯三部曲解题思路二:0解题思路三:0 题目描述: 给你一个字符串 s,请你将 s 分割成一些子串,使每个…

微信小程序中选中手机相册图片上传到服务器的方法

思路: 实现图片上传我们需要使用chooseImg和uploadFile这两个api。 1. 微信小程序中的chooseImg是一个API,用于在用户相册或相机中选择图片上传。它可以让用户在小程序中选择上传图片,以便进行下一步操作,例如将其发送给朋友或将其…

vue项目安装下载项目包,报错Clear up some disk space and try again

npm install 报错: Clear up some disk space and try again 解决办法: npm cache clean --force npm cache clear --force && npm install --no-shrinkwrap --update-binary