羡慕!阿里内部强推人手一份的K8S(kubernetes)学习指南,不能再详细了
过去几年,以 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后端面试题
JVM难学?那是因为你没认真看完这篇文章
关注作者微信公众号 —《JAVA烂猪皮》
了解更多java后端架构知识以及最新面试宝典
看完本文记得给作者点赞+在看哦~~~大家的支持,是作者源源不断出文的动力