首先我们说下为何使用Kubernetes
部署的方式也是在不断演进的过程的
1.传统的部署方式
– 在物理服务器上运行应用程序
– 无法为应用程序定义资源边界
– 导致资源分配问题
例如,如果在物理服务器上运行多个应用程序,则可能会出现一个应用程序占用大部分资源的情况, 结果可能导致其他应用程序的性能下降。 一种解决方案是在不同的物理服务器上运行每个应用程序,但是由于资源利用不足而无法扩展, 并且维护许多物理服务器的成本很高。
2.虚拟化的部署时代
– 作为解决方案,引入了虚拟化
– 虚拟化技术允许你在单个物理服务器的 CPU 上运行多个虚拟机(VM)
– 虚拟化允许应用程序在 VM 之间隔离,并提供一定程度的安全
– 一个应用程序的信息 不能被另一应用程序随意访问。
– 虚拟化技术能够更好地利用物理服务器上的资源
– 因为可轻松地添加或更新应用程序 ,所以可以实现更好的可伸缩性,降低硬件成本等等。
– 每个 VM 是一台完整的计算机,在虚拟化硬件之上运行所有组件,包括其自己的操作系统。
缺点:虚拟层冗余导致的资源浪费与性能下降
3.容器的部署时代
– 容器类似于 VM,但可以在应用程序之间共享操作系统(OS)。
– 容器被认为是轻量级的。
– 容器与 VM 类似,具有自己的文件系统、CPU、内存、进程空间等。
– 由于它们与基础架构分离,因此可以跨云和 OS 发行版本进行移植。
优势主要包括
– 敏捷性:敏捷应用程序的创建和部署:与使用 VM 镜像相比,提高了容器镜像创建的简便性和效率。
– 及时性:持续开发、集成和部署:通过快速简单的回滚(由于镜像不可变性),支持可靠且频繁的 容器镜像构建和部署。
– 解耦性:关注开发与运维的分离:在构建/发布时创建应用程序容器镜像,而不是在部署时。 从而将应用程序与基础架构分离。
– 可观测性:可观察性不仅可以显示操作系统级别的信息和指标,还可以显示应用程序的运行状况和其他指标信号。
– 跨平台:跨开发、测试和生产的环境一致性:在便携式计算机上与在云中相同地运行。
– 可移植:跨云和操作系统发行版本的可移植性:可在 Ubuntu、RHEL、CoreOS、本地、 Google Kubernetes Engine 和其他任何地方运行。
– 简易性:以应用程序为中心的管理:提高抽象级别,从在虚拟硬件上运行 OS 到使用逻辑资源在 OS 上运行应用程序。
– 大分布式:松散耦合、分布式、弹性、解放的微服务:应用程序被分解成较小的独立部分, 并且可以动态部署和管理 – 而不是在一台大型单机上整体运行。
– 隔离性:资源隔离:可预测的应用程序性能。
– 高效性:资源利用:高效率和高密度
为何使用Kubernetes
其提供的能力包括
服务发现和负载均衡
存储编排
自动部署和回滚
自动完成装箱计算
自我修复
密钥与配置管理
对于Kuberentes的简介
Kubernetes 是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。 Kubernetes 拥有一个庞大且快速增长的生态系统。Kubernetes 的服务、支持和工具广泛可用。
其好比
一个电脑管家,安装了很多应用,负责自动的杀死垃圾,自动的卸载没用的东西
也对应的管理容器的启动和停止,故障转移
Kubernetes本身是一个集群,而集群具有很多不同的种类
比如
主从同步/复制 mysql
分片集群 存储相同的东西/每个人存一部分东西
以及K8S的master-node架构
master类似地主,不负责从事生产活动,node类似奴隶,负责进行实际的生产活动
然后是关于内部的组件及相关的交互流程
master节点有:
Controller Manager 控制管理器
etcd 键值对
scheduler 调度器
api server:api网关
node节点有
kubelet,每一个node节点上必须安装的组件
kube-proxy 代理,负载请求转发
整体的部署流程
1.发送一个请求到api-server,api-server保存这次创建信息到etcd
2.etcd 给 api-server上报事件,说自己保存一个信息
3.controller-manager监听到这个api-server收到的事件,进行处理Pod信息
4.controller-manager处理完成,交给api-server,再次保存到etcd
5.etcd再给api-server上报信息
6.schedule拿到监听的pod信息,进行计算适合放在哪个node
7.计算完成后再交给api-server,保存到etcd
8.其他的node的kubelet监听事件,从api-server中拿到信息
9.节点确定自己执行后负责实际执行操作
安装也是老生常谈了
我们稍微的说下
安装方式分为了
二进制安装 生产环境下使用
Kubeadm 引导方式,但是生产环境有点问题