什么是云原生
- 在包括公有云、私有云、混合云等动态环境中构建和运行规模化应用的能力。
- 云原生是一种思想,是技术、企业管理方法的集合。
技术层面:
- 应用程序从设计之初就为在云上运行而做好准备。
- 云平台基于自动化体系。
流程层面:
- 基于 DevOps, CI/CD。
基于多种手段
- 应用容器化封装;
- 服务网格;
- 不可变基础架构;
- 声明式 API。
云原生的意义
- 提升系统的适应性、可管理性、可观察性;
- 使工程师能以最小成本进行频繁和可预测的系统变更。
- 提升速度和效率,助力业务成长,缩短 I2M(Idea to Market)。
云原生核心项目概览
学习建议
- 云原生中基础架构的部分是计算机领域最复杂的领域之一,学习云原生是突破自我的机会!
- 云原生涉及到的知识面很广,不懂的概念不用急于求成,反复训练可强化理解。
- 实践出真知,多听,多学,多练。
持续学习是一个不同重复的 Loop
学习方法
- 多动手:试试看,怎么用。
- 看理论:读博客,理解背后的技术总结。看代码,理解真实实现,总结出自己的理解。
- 理思路:不断的总结,把别人的东西变成自己的东西。分享是让你快速提升的手段。
- 有取舍
- 自我驱动:兴趣很重要。使命感。
举例:kube-proxy 是干啥用的?
第一步:官方文档
看官方文档,没有太多收获:
https://kubernetes.io/docs/concepts/overview/components/
kube-proxy uses the operating system packet filtering layer if there is one and it’s available. Otherwise, kube-proxy forwards the traffic itself.
第二步:看看前人是怎么解读的?
- 搜中文文档,知乎,CSDN,简书都有比较高质量的文章,可以多看一些文档,并理解不同人的理解差异。
- 随便找了一篇zhihu专栏。
https://zhuanlan.zhihu.com/p/337806843
第三步:找关键知识点
先对大概的框架有认识
负载均衡
kube-proxy 监听 API server 中 资源对象的变化情况,包括以下三种:
service
endpoint/endpointslices
node目前 Kube-proxy 支持4中代理模式:
userspace
iptables
ipvs
kernelspace(windows)
第四步:由点到面稍稍展开一下
- 入门:可以使用,知道怎么用,大概做了什么。
- 初级:粗略理解配置方法。
- 高级:理解不同模式的差异,理解为什么要有多种模式,理解配置细节。
- 专家级:理解完整的内核协议栈处理数据包的流程,能够举一反三。
如何学习云原生技术
代码驱动
- 掌握 Go 语言编程能力
从点到面
学习容器技术
- cgroup、namespace
- 网络协议栈
- 文件系统
抓住核心掌控全局
深入理解 Kubernetes
- API 定义
- 控制器模式
- 核心组件
大规模生产化
- 多集群
- 服务网格和多网格
多重视角
管理员角度:
- 如何构建和运维支持生产化作业的多租户集群。
- 如何应对规模化所带来的挑战。
研发人员角度:
- 如何将不同类型应用的接入到容器化平台。
- 理解如何保证应用的服务可用性。
不同角色如何做好协同,避免出现生产故障。