虚拟化原理到K8s实践经验路线总结

Posted wn1m

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了虚拟化原理到K8s实践经验路线总结相关的知识,希望对你有一定的参考价值。

  以下这些内容均为自行学习总结的内容,很多没有内容概括介绍,看起来可能会有些突兀,但并不影响整体性,我自己的学习经验告诉我,这些内容还仅仅是最精简的核心部分,周边还有很多扩展内容,主要是操作系统生态方面的内容,这些内容我无法概括,因为我自己也仅仅是了解到很局限,但我的经验是捕捉每一个学习的机会,不分Windows,Linux,Unix,其实你积累的多了,有了对系统生态的整体感觉相信你就会发现,下面这些内容学起来就不难了,另外告诉所有认真对待自己的道友一个小窍门,就是“慢慢来”,总结8个字“慢就是快,快就是慢”。

  对于虚拟化来说,下面这些仅仅还只是入门,它诞生很早,早在80-90年代时就已经提出了虚拟化,但因为硬件技术无法承载它,因此被搁置,直到本世纪初,硬件性能随着莫尔定律每18个月在不断翻新,不断创造奇迹,CPU性能,内存容量,磁盘容量都不断富余,人们发现业务增长带来了阶段性服务器性能不足,比如 一个外买平台,其24个小时中,可能只有在中午11:30~13:00,晚上6~8点之间业务流量可能非常巨大,但其它时间业务量可能很小,但为了避免在高峰期巨大访问流量导致整个网站"雪崩",就不得不增加服务器数量,来应对这短短的3~4个小时的高峰流量,这让这些平台的成本不断增高,因为服务器需要用电,需要降温,需要有地方放,需要安保,需要有专业人员管理等等,但仔细想想,这些服务器在大部分时间里基本非空闲,但我们不得不为3~4个小时付出巨大代价,在这样的需求之下,以及硬件技术的升级,使得虚拟化技术迎来了自己的春天.
  虚拟化技术之所以抽象,是源于它自身是建立在两项基础技术的基础上产生的,一方面是硬件技术,另一方面是软件技术,这两个巨人让虚拟化变得可能,变得简单,我对硬件了解不多,我仅想通过软件技术来引出一个点,希望每个想了解它的初学道友有一个全局概念.
  最早软件技术仅是单机上运行一个执行单个计算任务的程序,这些程序输出信息是靠纸袋打孔的方式,后来输出技术演进出现了显示器,但这不是我们要关注的,这些程序仅仅在单机上运行,并不能满足我们所有需要,我们更想要的是能多机通信,将一个主机上程序的运行结果输出给另一个主机,由它根据这些数据做其它事,但如何让两个机器通信? 于是研究员们就发明了网络通信, 网络通信出现后,最早并没有标准,你有你的实现, 我有我的实现,于是就是出现了很多局域网通信技术,如:令牌环,以太网等等,后来大家发现,光我们内部自己玩,还是太局限,于是研究员们又开始尝试将多个局域网连起来一起玩,这就诞生了广域网通信技术,如:点对点(PPP),ATM,帧中继(虚电路)等等,这看上去好像一起都搞定了,但细想一下,软件要如何通信?早期是没有TCP/IP协议的,所有协议都在各自为政,各自发展,如ipx,tcp/ip等等,每种协议各不兼容,也就ipx不认识tcp/ip,反过来依然,程序要怎么通信? 在局域网通信时,只能自行调用底层socket接口,写一套基于某局域网通信协议的通信组件,然后,只能跟基于这种局域网通信协议的程序通信,换一种就不能通信了,但广域网来了,大家要通信,问题又来了,我通过局域网能通信的程序,不能认识广域网通信协议的数据包,必须在重写一套能识别广域网协议的网络组件,然后才能进行广域网通信,但对端也必须和你一样,它也要使用相同的广域网通信协议开发网络组件,并且还有开发一个跟你一样的局域网通信组件,才能识别广域网转为局域网协议后,你发来的数据包到底是什么. 非常之麻烦! 如何才能解决这些问题? 所以各种各样的通信标准就出现了, 在局域网中以太网技术最终因其成本低,易维护,带宽高等优势成为了标准,广域网技术中,TCP/IP协议最终成为主流,成为标准, 这些就垫定了Internet的基础,但早期网络通信是非常复杂的,因为它太底层,对程序员的要求非常高,你必须对底层硬件驱动接口有非常精深的了解,才能完成操纵网卡收发数据包,才能使用好,因此就有大牛看不惯了,于是就对这些非常底层的驱动接口做了一层封装,对外提供了一个统一的操作接口,这就是socket编程,后来软件技术继续发展,人们发现即便是socket编程也是非常底层的,门槛依然很高,后来就又有大牛出来,对socket做了一层封装,RPC调用就出现了,网络编程的难度再次降低,这也就是目前比较常用的网络通信方法.
  说了这么多,这些和虚拟化有什么关系?
  。。。。突然没有思路了,就先写到这里吧(待续)
  

1.虚拟化原理介绍
2.libvirt
3.virsh
4.KVM原理(删除)
5.KVM原理和使用
6.KVM系统镜像制作
7.Xen原理
8.Xen简单使用(不建议花时间学习,以包含在Xen原理中了)

9.OpenStack总体架构概览&OpenStack核心组件介绍(待完善)
10.OpenStack一键部署Mitaka实现【这是我使用shell实现的测试环境部署脚本】
  https://github.com/zhang75656/openstarck-mitaka

11.TCP协议深度刨析
12.TCP Socket通信详细过程

13.网络虚拟化的基本模型简介(删除)
14.OpenFlow和SDN的历史和原理介绍
15.VxLAN原理
16.容器原理
17.OpenVSwitch原理
18.OpenVSwitch使用参考
19.容器虚拟化原理
20.Cloud-init
21.Docker原理及使用
22.Docker网络(待总结)
23.Harbor简介及配置
24.Harbor高可用

25.系统架构概念及思想1
26.系统架构概念及思想2
27.传统IT容量估算思路

28.iptables使用总结
29.firewall-cmd使用总结
30.TC学习总结
31.ipset使用总结
32.LVS负载均衡总结

33.Ubuntu使用小结(主要为后面部署K8s集群做基础铺垫)
34.Kubernetes简介
35.yaml语法介绍(K8s基础)
36.Kubeasz部署K8s基础测试环境简介
37.k8s实现灰度发布(K8s基础测试镜像制作参考)
38.K8s无状态控制器原理介绍
39.K8s Service原理介绍
40.K8s的存储卷使用总结
41.K8s configMap原理介绍
42.K8s StatfulSet使用总结
43.K8s集群认证之RBAC
44.K8s之flannel网络+Calico策略
45.调度器/预选策略/优选函数
46.容器资源限制
47.helm原理
48.ELK原理
49.Elasticsearch状态API接口排障总结
50.fluentd日志收集器简介(待总结)

 

以上是关于虚拟化原理到K8s实践经验路线总结的主要内容,如果未能解决你的问题,请参考以下文章

在Rancher中修改K8S服务参数的万金油法则

docker 实践经验简介安装与实操

docker 和 k8s 面试总结

一文理解 K8s 容器网络虚拟化

Nginx,从基本原理到开发实践

Nginx,从基本原理到开发实践