羡慕!阿里内部强推人手一份的K8S(kubernetes)学习指南,不能再详细了

共 3624字,需浏览 8分钟

 ·

2023-08-01 10:09











走过路过不要错过


点击蓝字关注我们












过去几年,以 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难学?那是因为你没认真看完这篇文章



















END










关注作者微信公众号 —《JAVA烂猪皮》




了解更多java后端架构知识以及最新面试宝典


















你点的每个好看,我都认真当成了











看完本文记得给作者点赞+在看哦~~~大家的支持,是作者源源不断出文的动力





浏览 143
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报