首先我们说下为何使用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 引导方式,但是生产环境有点问题

发表评论

邮箱地址不会被公开。 必填项已用*标注