膜拜大佬!阿里内部都在强推的K8S(kubernetes)学习指南,不能再详细了

2023-10-31

过去几年,以 docker、kubernetes 为代表的容器技术已发展为一项通用技术,BAT、滴滴、京东、头条等大厂,都争相把容器和 k8s 项目作为技术重心,试图“放长线钓大鱼”。

就说阿里吧,目前基本所有业务都跑在云上,其中有一半已迁移到自己定制 kubernetes 集群上。据说,今年计划完成 100% 基于 k8s 集群的业务部署。而服务网格这块儿,在阿里的一些部门(比如蚂蚁金服),已经有线上业务在用了。

这充分说明了容器在当今软件研发领域的地位。所以,掌握容器技术自然成为很多公司在招聘时的重要选项。

但是,容器技术本身偏向运维,namespace 资源隔离、cgroups 资源限制等概念,对开发者来说,理解起来比较困难。这几年,在跟朋友探讨 k8s 落地时,也有一些问题被反反复复地提及,比如:

  • 为什么容器里只能跑“一个进程”?

  • 原先一直用的某个 JVM 参数,在容器里就不好使了?

  • 为什么 kubernetes 不能固定 IP 地址?容器网络连不通,该如何 debug?

  • k8s 中 statefulSet 和 operator 到底什么区别?pv 和 pvc 又该怎么用?

这些问题的答案和原理并不复杂。但对初学者来说,很难用一两句话就解释清楚。因为容器技术涉及操作系统、网络、存储、调度、分布式原理等等方方面面的知识,是个名副其实的全栈技术。

而其技术体系里那些“牵一发而动全身”的主线,比如 Linux 进程模型对容器本身的重要意义,“控制器”模式对整个 k8s 项目提纲挈领的作用等等,并不会详细展现在 docker 或 kubernetes 官方文档中,但偏偏就是它们,才是掌握容器技术体系的精髓所在

在这里分享我偶然间得到的一份文档,该文档将K8S分为理论和实践两个部分进行讲解,双管齐下,事半功倍,让我们来看看文档内容

理论模块

理解集群控制器

基本上来说,K8S集群的控制器,其实扮演着集群大脑的角色。有了控制器,K8S集群才有机会摆脱机械和被动,变成一个自动、智能、有大用的系统。

  • 控制器原理
  • 统一入口
  • 控制器
  • 控制器管理器
  • SharedInformer
  • ListWatcher
  • 服务控制器
  • 路由控制器

集群网络详解

我们主要通过网络搭建和通信两个角度去分析K8S集群网络。其中网络搭建包括初始阶段,集群阶段,节点阶段以及Pod阶段,这么分类有助于我们理解这些复杂的配置。而理解了各个配置,集群通信原理就比较容易理解了。

  • 集群网络搭建
  • 通信

集群伸缩原理

总体上来说,K8S集群节点的增加与减少,主要涉及四个组件,分别是Cluster Autoscaler,ESS, 管控以及节点本身(准备或清理)。根据场景不同,我们需要排查不同的组件。其中Cluster Autoscaler是一个普通的Pod,其日志的获取和其他Pod无异;ESS弹性伸缩有其专门的控制台,我们可以在控制台排查其伸缩配置、伸缩规则等相关子实例日志和状态;而管控的日志,可以通过查看日志功能来查看;最后,对于节点的准备与清理,其实就是排查对应的脚本的执行过程。

  • 节点增加原理
  • 手动添加已有节点
  • 自动添加已有节点
  • 集群扩容
  • 自动伸缩
  • 节点减少原理

认证与调度

在这节中,我们以一个简单的容器化web程序为例,着重分析了客户端怎么样通过Kubernetes集群API Server认证,以及容器应用怎么样被分派到合适节点这两件事情。

  • “关在笼子里”的程序
  • 双向数字证书验证
  • KubeConfig文件
  • Pod配置

集群服务的三个要点和一种实现

  • K8S集群服务的本质是什么
  • 自带通信员
  • 把服务照进现实
  • 过滤器框架
  • 节点网络
  • 升级过滤器框架
  • 用自定义链实现服务的反向代理

镜像拉取

  • 理解OAuth2.0协议
  • Docker扮演的角色
  • K8s实现的私有镜像自动拉取
  • 阿里云实现的Acr credential helper

实践

读懂这一篇,集群节点不下线

  • 需要知道的Kubernetes知识
  • 什么是PLEG
  • 容器runtime
  • Docker Daemon调用栈分析
  • Containerd调用栈分析
  • 什么是Dbus
  • RunC请求Dbus
  • Systemd
  • Live Debugging
  • 问题修复

节点下线姊妹篇

  • 问题现象
  • 止步不前的 PLEG
  • 无响应的 Terwayd

我们为什么会删除不了集群的命名空间?

  • 从集群入口开始
  • Controller 在做什么?
  • API、Group、Version
  • Controller 为什么不能删除命名空间里的资源
  • 节点与 Pod 之间的通信
  • Route Controller 为什么不工作?
  • 集群节点访问云资源

阿里云ACK产品安全组配置管理

  • 安全组在 ACK 产品中扮演的角色
  • 安全组与 ACK 集群网络
  • 怎么样管理 ACK 集群的安全组规则
  • 限制集群访问外网
  • IDC 与集群互访
  • 使用新的安全组管理节点
  • 典型问题与解决方案
  • 使用多个安全组管理集群节点
  • 限制集群访问公网或者运营级 NAT 保留地址
  • 容器组跨节点通信异常

二分之一活的微服务

  • 代理与代理的生命周期管理
  • 就绪检查的实现
  • 控制面和数据面

半夜两点Ca证书过期问题处理惨况总结

  • 不断重启的 Citadel
  • 一般意义上的证书验证
  • Citadel 证书体系

以上就是这份文档的概况,一次搞懂6个核心原理吃透基础理论,学会6个典型问题的华丽操作,不管是架构师还是开发者,又或是运维,都能够从中学到不少。

以上的文档已整理成册,如何获得这份优质的资料呢?

快速入手通道:(点这里)下载!诚意满满!!!

Java面试精选题、架构实战文档传送门:https://docs.qq.com/doc/DRW1nUkdhZG5zeGVi

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断!!!

驾驭命运的舵是奋斗。不抱有一丝幻想,不放弃一点机会,不停止一日努力。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

膜拜大佬!阿里内部都在强推的K8S(kubernetes)学习指南,不能再详细了 的相关文章

  • 中断并标签,“标签 MyLabel 丢失”

    我有这样的代码 if condition1 break MyLabel while true some code here MyLabel if condition2 break more code here 我收到此错误 标签 MyLab
  • 在 portlet 中设置 SearchContainer 以使用 EL 和 JSTL 在 JSP 中使用它

    我正在尝试使用SearchContainer在我的liferay应用程序中 目前我必须使用 JSP Scriplets 来设置results in
  • Java EE 6 和单例

    谁能解释一下在 Java EE 6 应用程序中实现 Singleton 的完整过程 我假设我不应该以声明静态变量的典型方式创建单例 而应该使用 Singleton注解 我必须这样做吗 难道只是声明一下的情况 Singleton就是这样 我还
  • 我在使用 JavaFX 绘制十字时遇到问题

    我正在尝试编写代码 在网格上对角绘制 3 个形状 前两个形状是正方形和圆形 我能做到 然而 第三种形状让我有些悲伤 我应该画一个十字 T 版本 而不是 X 每次我写出代码时 它看起来就像一个侧面 我知道我只是错过了一些简单的东西 但我真的很
  • Java:while循环冻结程序

    我正在制作一个游戏 我需要每 3 秒更新一次 JProgressBar 为此 我使用 while 循环 问题是我的程序由于 while 循环而冻结 我在其他问题中读到它 他们没有帮助我解决这个问题 我不知道如何解决 这是我的代码 publi
  • 解析 (yyyy-MM-dd) 格式的字符串日期

    我有一个 2013 09 18 形式的字符串 我想将其转换为 java util Date 我正在做这个 SimpleDateFormat sdf new SimpleDateFormat yyyy MM dd Date converted
  • 如何将完整的日期格式拆分为日期和时间?

    我有很多格式为我的示例所示的字符串 我必须解析它们 我正在尝试确定今天是哪根弦 我的问题是 时间快到了 我只需要比较那个日期 接下来我想检查时间是否在 after 和 before 的两个时间戳 HH mm ss 之间 但存在问题 日期几乎
  • Android:TelephonyManager 类

    我不明白为什么 API 文档中这么写TelephonyManager类是public 但是当我尝试创建一个实例时 它说它不是公共类 并且无法从包中访问 我看到它也说使用Context getSystemService Context TEL
  • WSDL2Java 抛出无法找到主类:org.apache.axis.wsdl.WSDL2Java

    我正在尝试从远程 Web 服务创建 java 文件 我下载了axis 1 4 将lib文件夹复制到c data axis lib其中包含这些文件 axis jar 轴 ant jar commons discovery 0 2 jar co
  • Eclipse Oxygen - 该项目未构建,因为其构建路径不完整

    我刚刚安装了 Eclipse Oxygen 并尝试在工作台中打开现有项目 但收到此错误 该项目未构建 因为其构建路径不完整 不能 找到 java lang Object 的类文件 修复构建路径然后尝试 建设这个项目 我尝试右键单击该项目 转
  • 合并和颜色样式不适用于 Apache POI excel 2003 格式

    在 Apache POI 中 我为某些单元格应用了一些样式并合并了这些单元格 当我在 2010 年或 2007 年打开时 它工作正常 但在 2003 年 格式样式消失了 每次保存 2003 Excel 文件之前都会弹出兼容性检查对话框 请参
  • ThreadPoolExecutor 和队列

    我以为使用线程池执行器 http docs oracle com javase 6 docs api java util concurrent ThreadPoolExecutor html我们可以提交Runnables 要在以下位置执行B
  • 如何在 QueryDSL 中选择文字

    我目前正在开发一个使用 queryDSL 和 hibernate 的项目 其中它需要一个选择文字 按照发布的示例here https stackoverflow com questions 18691317 querydsl how to
  • Java 声音可视化器

    我正在尝试制作一个java声音可视化工具 但我完全不知道如何在实时处理音频后立即从提取的音频中获取字节 我可以将程序与 wav 文件同步 但这不是我想要做的 我想用程序生成声音 然后播放它 而不将其保存在任何地方 谢谢您的帮助 本文可以帮助
  • Jersey 和 Spring 中的全局异常处理?

    我正在使用 Jersey 和 Spring 3 2 以及 Open CMIS 开发 RESTful Web 服务 我没有使用 Spring 的 MVC 模式 它只是 Spring IOC 和 Jersey SpringServlet 控制器
  • Eclipse Juno 指标插件

    Eclipse JUNO 版本有哪些 Eclipse 指标插件 我尝试了一些通用指标插件 但没有一个能够在 Eclipse 的 JUNO 版本中正常运行 差点忘了 我们正在使用 Java 作为编程语言 我想要诸如圈复杂度 代码行数 方法长度
  • gwt 文本框添加更改处理程序

    我有一个从设计师那里收到的文本框 但是我在 GWT 中编写了操作 问题是文本框为空 但是当通过按下按钮用值填充文本框时 将显示警报框 通知值已更改 但没有成功 帮助我 TextBox zip1 null function onModuleL
  • 如何在 Hibernate 中自动递增复合主键中的 Id?

    我有一个带有复合主键的表 groupId and batchId 实体类看起来像 Entity name EMPLOYEE public class Employee EmbeddedId private EmployeePK employ
  • java中什么是静态接口?

    我正在阅读Map Entry界面 当我注意到它是一个static界面 我不太明白什么是静态接口 它与常规接口有什么不同 public static interface Map Entry
  • 将其元素添加到另一个列表后清除列表

    我正在做一个程序 它获取更多句子作为参数 我制作了 2 个列表 一个称为 propozitie 其中包含每个句子 另一个称为 propozitii 其中包含所有句子 问题是 当我在遇到 后清除 propozitie 列表时 它也会清除 pr

随机推荐

  • win7下安装深度linux双系统_深度学习

    简介 本教程是在win7系统下安装ubuntu系统的教程 安装成功后可以在开机启动项选择ubuntu或win7进入不同系统 2 准备工作 u盘 大于等于16G的就行 ubuntu安装包2G左右 注意要提前备份u盘内容 ubuntu镜像文件
  • 【学习笔记】双虚拟机双机调试教程

    本文作者 未念 二进制逆向星球学员 这个教程以 Windows7虚拟机作为被调试的虚拟机 Windows10虚拟机作为调试的虚拟机 Windows7虚拟机的设置跟着老师的Win7x86双机调试视频设置就行 就是跟着视频教程输入那四段语句 然
  • Java实现栈和队列

    前言 栈和队列是两种特有的存储数据的结构 栈是后进先出的一种结构 队列是先进先出的一种结构 由于这种特有的结构 在选择底层存储方式也有差异 由于栈是后进先出的结构 其实就是尾删 尾增操作 如果用顺序表来存储 尾删 尾增时间复杂度则是O 1
  • 华院计算

    一 让我们从一个简单的游戏开始 在一个很大 理论上无穷大 的围棋棋盘上 让黑子代表 生 而空格 称为白子 代表 死 在棋盘上的任何9个格子组成的正方形区域里 见图1 对处于中心位置的黑子或白子来说 它上下左右和两对角线外的黑子 如果存在 都
  • 解决-echarts点击左边柱状图的任意一个柱子,右边柱状图动态呈现相应的数据过程中的-方法

    效果就是这样 当我点击左边柱状图的任意一个柱子的时候 右边就呈现该柱子里面的你想要呈现的数据 第一步 首先肯定是创建容器来存放柱状图啦 div class BigBox div style width 100 height 500px di
  • 【AngularJS】5.AngularJS 工具方法以及AngularJS中使用jQuery

    1 Angularjs 工具方法 参考AngularJS API https docs angularjs org api官方文档 1 angular isArray value 判断是否是数组 返回true false div isArr
  • PHP导出excel文件的多种方式

    1 第一种实现的方法 set time limit 0 逐条导出数据 ob end clean header Content type application vnd ms excel header Content Disposition
  • 【CMake 入门与进阶(10)】 CMakeLists.txt 语法规则_循环语句(附使用代码)

    cmake 中除了 if 条件判断之外 还支持循环语句 包括 foreach 循环 while 循环 foreach 循环 1 foreach 基本用法 foreach 循环的基本用法如下所示 foreach loop var arg1 a
  • Javascript 实现类似 Excel 的公式解析计算功能

    目录 背景 思路 实现 背景 最近在做一个工资系统 有的工资项可以根据用户自定义的公式来自动计算 类似于Excel中定义好公式后 可以计算一样 比如应发工资计算公式为 应发工资 基本工资 绩效考核奖 加班工资 实发工资 应发工资 代扣养老保
  • AndroidMainfest.xml详解——

    语法
  • 【二分+贪心】用 N 根绳子裁剪出 M 根等长绳子

    有 N 根绳子 第 i 根绳子的长度为 l i 现在需要 M 根等长的绳子 你可以对这 N 根绳子进行任意裁剪 不能拼接 请你计算出这 M 根绳子最长的长度 输入描述 第一行包括两个整数 N M 含义如题所述 1 lt N M lt 100
  • Vulkan入门精要

    Vulkan入门精要 fuxiii github io https fuxiii github io Essentials of Vulkan
  • mysql中drop、truncate、delete的区别

    DELETE DELETE是一种数据操作语言 DDL 命令 CREATE DROP ALTER TRUNCAT 使用DELETE 无法删除整个表的约束 索引 只删除数据 1 每次从表中删除一行 并且同时将该行的的删除操作记录在redo和un
  • 用JAVA写一个贪吃蛇的代码

    我很乐意为你编写一段贪吃蛇的JAVA代码 public class SnakeGame public static void main String args 创建一个SnakeGame对象 SnakeGame game new Snake
  • 用matlab画散点图并用光滑曲线连接(样条插值)

    上接 http blog csdn net cantjie article details 70216642 用matlab画散点图并用光滑曲线连接 exp10 m clc clear format short Num xlsread ex
  • MySQL的windows安装与配置

    目录 MySQL的简介 MySQL的安装 一 下载安装包 二 配置初始化文件与密码修改 三 配置环境变量 四 检验 MySQL的简介 MySQL是一种可以处理数据库的关系数据库管理系统 Relational Database Managem
  • Python实现对Mysql数据库的增删改查

    客户需求 使用Python脚本实现对对Mysql数据库的增删改查 import pymysql 显示 def readTable cursor 选择全部 cursor execute select from premoney 获得返回值 返
  • 如何通过国内网络下载安装Mac版VSCode

    最近被公司同事安利了VSCode 被它轻巧的身姿和强大的插件深深吸引 于是准备周末在自家Macbook上也安装一个 却遇到了一些问题 一般安装VSCode都是通过VSCode官网免费安装 VSCode官网链接 点击Download Mac
  • Zotero如何按照文献年份排序,如何二次排序

    https www zotero org support sorting 在文献管理的过程中 导入后 一大堆文献令人眼花缭乱 尤其研究后期 文献数量更是超出想象 除了创建文件夹和子文件夹 如何让这么多文献有序地展示出来呢 我们可以通过排列和
  • 膜拜大佬!阿里内部都在强推的K8S(kubernetes)学习指南,不能再详细了

    过去几年 以 docker kubernetes 为代表的容器技术已发展为一项通用技术 BAT 滴滴 京东 头条等大厂 都争相把容器和 k8s 项目作为技术重心 试图 放长线钓大鱼 就说阿里吧 目前基本所有业务都跑在云上 其中有一半已迁移到