16.B站薪享宏福笔记——第一章 k8s介绍说明

1 K8s介绍说明

1.1 基础设施的变革

1.1.1 基础设施的迭代 - 单机场景

   Hardware          硬件 类比 戴尔R620服务器
   Operating System  系统 类比 CentOS
   App               应用 类比 Apache-Tomcat、Mysql、Nginx

(1)传统部署方案 Traditional Deployment:

安全性问题:(1)Apache-Tomcat、Mysql、Nginx三台应用部署在同一服务器中,当Apache-Tomcat被破解(同一物理机内)就可以拿到Mysql的账户密码,从而造成数据泄露。

                    (2)若当Apache-Tomcat发生内存泄漏,导致服务器宕机,另外两个应用Mysql、Nginx也将受到影响。

资源性问题:当Mysql在一台服务器A上,Apache-Tomcat、Nginx在另外一台服务器B上,这样又会造成硬件资源的浪费,Cpu、内存、磁盘等远没有达到企业预估的使用标准。

相悖论:机器资源利用率高,安全性下降。安全性上升,机器资源利用率下降。

(2)虚拟化部署方案 Virtualized Deployment:

   Hypervisor 虚拟化层,可以在一个物理机中运行多个虚拟机VM,每个虚拟机可以运行相对隔离的应用程序,比如:左边虚拟机A中运行Mysql,右边虚拟机B中运行Apache-Tomcat、Nginx,因为有隔离,即使Apache-Tomcat被破解,Mysql的账户密码也保密,数据不会暴露。

资源性问题:相对提高了机器的资源利用率,企业只关心稳定和资源,而虚拟化层Hypervisor在虚拟化中不可或缺,但本身不提供服务资源(类似氧气,本身不燃烧,助燃作用),虚拟化作用的物理服务器本身有操作系统Operating System,虚拟后在其上每个虚拟机又虚拟了一套操作系统Operating System,这样就导致每台物理服务器都要有一个虚拟化层Hypervisor的浪费,并且每在这台服务器上增加一个虚拟机就要多虚拟一套操作系统Operating System,当虚拟化服务器越多,资源浪费越严重(底层物理服务器被供给给虚拟化支撑,而不是应用消耗,例如10000台虚拟化,每台2G,10000x2G=20000G内存,过于庞大)。

(3)容器化部署方案 Container Deployment:

   Container Runtime 容器运行时,其上运行应用程序被容器隔离,运行多个容器,没有虚拟机的虚拟操作系统的消耗,既保证了应用间隔离,又不会随着容器的增多,虚拟化资源浪费增多。

容器对比虚拟化安全性下降,比如:安全方面,传统物理机满分,虚拟化9.8分,容器7/8分,但容器资源利用率远远大于虚拟化和传统物理机。

1.1.2 基础设施的迭代 - 集群场景

(1)基础设施即服务 IAAS

Infrastructure as a Service 基础设施即服务,需要部署系统、环境、应用。多台物理机通过虚拟化技术被组合成多台虚拟机集群,不同虚拟机中运行不同的应用程序,当机房中搭建海量的虚拟化集群,想要从中找到资源利用率最小的虚拟机,在其上运行程序App,靠人工过于繁琐,所以出现了目前行业主流的Openstack

Openstack主要作用在物理机层,对集群进行管理,当用户提交创建虚拟机请求后,Openstack会自动选择当前物理机剩余资源最大的那台物理机,在其上创建虚拟机,并把虚拟机的访问接口返回给用户。

小八卦:Openstack是一个开源项目,18年时全英文覆盖,还没有中文,当时国内对这个开源项目贡献微小,现在有中文翻译,且在项目贡献中,华为公司对Openstack贡献排名全球第2名,第1名红帽red-hat,并列第2名的是美国一个以Openstack为自动化部署团队的上市企业。

Iaas与码云类似的特性,规模越大,成本越低,用户使用越便宜,未来云厂商(以Iaas为主的云厂商):阿里、百度、华为、腾讯。就业渠道越来越窄,但被掌握在大公司手中。

(2)平台设施即服务 PAAS

Platform as a Service平台设施即服务,无需部署系统、环境,直接部署应用既可。底层是采用容器即虚拟化实现,物理机上都需要运行相同的环境即容器运行时Container Runtime,集群中所有物理机和虚拟化一样需要被统筹管理,即管理工具Kubernetes、Rancher、Mesos等。

(3)软件设施即服务 SAAS

Software as a Server软件设施即服务,开发做的多租户的应用场景。

1.1.3 平台对比  - PAAS

IAAS实现工具:Openstack

PAAS实现工具:Docker Swarm、Mesos、Kubernetes

(1)Docker Swarm 轻

Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源。

优点:学习成本轻、代码轻(被集成在docker中,docker swarm init 既可初始化创建一个集群)

缺点:功能少、很多功能需要企业自己去二次开发。

(2)Mesos 稳

Apache Mesos 是一个集群管理器类似于YARN,提供了有效的、跨分布式应用或框架的资源隔离和共享,可以运行Hadoop、MPI、Hypertable、Spark。

推特原来是其拥趸,19年年中,推特也宣布全面转向Kubernetes。

(3)Kubernetes N

优点:

服务发现和负载均衡(Service)

存储编排(添加任何本地或云服务器)(pv)

自动部署和回滚(Job检测远程代码仓库,然后调用 Deployment 进行滚动更新和 Rollout 回滚)

自动分配CPU、内存资源 - 弹性伸缩(Schedule 进行预选、优选从而选择最合适的节点去运行Pod,根据定义的CPU、内存的阈(yù)值来自动伸缩或扩展)

自我修复(需要时启动新容器,Deployment)

Secret(安全相关信息)和配置管理(configMap、Secret编码形式存储,base64)

大型规模集群的支持

  1.每个节点的Pod数量不超过110
  2.节点数不超过5000
  3.Pod总数不超过150000
  4.容器总数不超过300000

开源(所有人都可以参与其中获利,当功能不满足时,开发新功能小工具,V1.0、V2.0、V3.0,自己公司开发使用V3.0,把V1.0开源到Kubernetes社区,即使竞品公司使用也没有本公司功能稳定,社区吸收所有的新功能新思路,发展出更多更稳定的功能——取之于开源,供给给开源。)

1.1.4 发展历程

          Borg(博格)                  Omega(希腊语,最后一个)        Kubernetes
Borg是Google早期开发的 Omega 是 Borg的一个后继
集群管理系统,用于管理大规 系统,于2013年开始开发, 2014年6月
模的容器化工作负载。它是Google 旨在解决Borg在大规模、动态
内部的一个关键基础设施,自 、多租户环境下场景
2003年开始使用。

调度、作业类型、资源分配、故障隔离 多租户、声名式配置

1.1.5 发展现状

(1)近几年普及率

(2)企业使用原因

(3)优势点

 

 (4)经典案例

宝可梦 Pokémon GO 是GKE(Google Kubernete Engine)最早和最大的用户之一。它在单个Kubernetes集群中运行容器化的前端应用程序和各种微服务。游戏公司Niantic只有一个小团队。发布时最差的估计用户流浪是原始估计的5倍。

然而到了2016年7月6日,游戏在澳大利亚和新西兰上线后的15分钟内,这个数字就飙升到了他们目标的50倍。

出处:https://zhuanlan.zhihu.com/p/503020151

Niantic 寻求 Google 的帮助。谷歌迅速将数千个节点添加到集群中,这已经成为真正的行星规模。游戏顺利通过了万众瞩目的次日美国上线和日本当月下旬上线(是美国上线的 3 倍),数以万计甚至数十万玩家在线,每天 5~10TB 数据。

尽管 Niantic 没想到会如此受欢迎,但由于游戏的容器化设计以及将其部署在云上的决定,它可以在很短的时间内扩大规模。在某些方面,你可以说他们有点预料到了意外。

今天,企业拥有具有数千个工作节点的集群并不少见。

拜耳作物科技 Bayer Crop Science 在 240,000 个 CPU 内核和 1.48 PiB 的 RAM 中运行一个包含 15,000 个节点(从 4,500 个节点集群扩大)的集群,以计算有前景的种子基因型。

OpenAI有一个 7,500 个节点集群来训练非常复杂的图像和文本 AI 模型。不一定是节点越多越好,但显然是可以实现的。

(5)挑战也是机遇

1.2 Kubernetes组件

1.2.1 kubernetes 宏观架构

1.2.2 Kubernetes 微观架构

接口类似:火车票贩卖机,将100元投入其中,选择要购买的票,机器将车票和剩余的钱吐出。

(1)Master节点:

  Web UI:默认不安装图形化界面,官方社区:Dashboard、Kubespere、Rancher

  kubectl:客户端工具、命令行端工具
  API Server:集群中枢,接收各种请求,有对应权限,审核通过后,将请求的数据存储到 Etcd

  Etcd:键值对数据库,存储集群配置以及信息参数(coreOS基于GO语言,RAFT协议开发)(服务数量 2N+1 N>1,组成 etcd class 集群,任何一个节点损坏,不会丢失数据信息)

  Schedule:调度器,监听 API Server 绑定需要运行的容器和节点之间的关系,存储到Etcd中,对应节点就会运行对应的容器。

  Controller Manager:集群管家,定期检查集群状态是否与预期相符,尽可能保障当前集群的可用。

(2)Node节点:

Kubelet:承上启下,解决容器创建、删除等问题,监听 API Server,再调用 containerd/docker/podman(CRI) 去创建 Pod 容器。

Kube proxy:承上启下,解决节点网络等问题,监听 API Server,是否需要创建防护墙规则、负载均衡规则。

(3)Restful风格:一种新的开发思想

对应的中文是 rest 式的;Restful web service 是一种常见的 rest 的应用,是遵守了 rest 风格的 web 服务;rest 式的 web 服务是一种 ROA(The Resource-Oriented Architecture)(面向资源的架构)。

在 Restful 之前的用法:接口路径不同

http://127.0.0.1/user/query/1 GET 根据用户 id 查询用户数据

http://127.0.0.1/user/save/1 POST 新增用户

http://127.0.0.1/user/update/1 POST 修改用户信息

http://127.0.0.1/user/delete/1 GET/POST 删除用户信息

在 Restful 之后的用法:相同路径、不同请求方式

http://127.0.0.1/user GET 根据用户 id 查询用户数据

http://127.0.0.1/user POST 新增用户

http://127.0.0.1/user PUT 修改用户信息

http://127.0.0.1/user DELETE 删除用户信息

(4)组件、插件、附件

组件:比作身体的一部分,组成当前身体不可分割、不可或缺的部分。

插件:与身体连接,提供一些复杂功能(奥特曼手里的洞,具有扩展功能,可以是剑、锤子一类插到手掌的洞里)

Docker、Containerd、Podman: CRI容器运行时。

CoreDNS:给kubernetes集群内部提供私有的域名解析,在集群内部分配域名,使除了 IP 访问外,还可以通过域名访问。

Ingress Controller:七层负载,与Service的四层负载可以在集群中配置使用。(即南北流量和东西流量)

附件:(手上的戒指、身上的衣服,与身体没有连接,也不是组成身体的一部分只是根据外形,搭在身体表面)

Prometheus:监控服务,监控集群

Dashboard:网页仪表盘组件

Federation:提供多kubernetes集群的跨空间管理能力

1.3 Kubernetes课程内容简述

思维导图 zip 下载链接地址

———————————————————————————————————————————————————————————————————————————

                                                                                                                         无敌小马爱学习

posted on 2025-05-08 12:37  马俊南  阅读(515)  评论(0)    收藏  举报