内容参考视频:哔哩哔哩https://www.bilibili.com/video/BV1MT411x7GH?p=1&vd_source=c82908995c40d3f1e4abf62f0ad01574
什么是K8s
Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,
Kubernetes 的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。企业级容器调度平台。
为什么需要K8s
传统部署
人工手动部署繁琐,效率低
环境不隔离,带来资源争抢,环境冲突的情况
只部署一个服务,资源浪费,部署多个服务,又会频繁出现资源争抢的情况
虚拟化部署
解决了环境不隔离的问题
但是隔离机制过重,资源损耗过大
相对于传统部署,服务的生命周期变短了
容器化部署
资源占用变少,运行效率高,秒级启动一个容器
还把前面两种方案遇到的问题都解决了
但对比前面两种方案,服务的生命周期更短了,使网络、cpu、存储等资源,变得没有之前稳定了,
但是一些应用服务还依赖于这些资源,应用服务更希望这些资源是固定的,比如说IP地址,经常变就要频繁的改配置文件。
这一系列容器化引起的问题,K8s都可以完美的解决。
K8s能帮我们做什么(特点)
自我修复
如果我们的服务出现问题,K8S会进行自动检测,检测服务是否有问题,
如果出现问题,它会把这个容器直接干掉,
再基于原来的容器,重新还原出一个一样的容器回来。
弹性伸缩
比如我有一个服务,现在想基于这个服务再部署出四个一样的服务,
给定K8S服务的个数,它就会自动基于原来的服务,帮我生成四个一样的服务出来,
如果觉得四个多了,还可以改成两个,它就会自动变成两个服务。
自动部署与回滚
通过编写配置文件,K8S会根据配置文件自动的帮我完成部署,
当修改过容器的一些参数后,它会自动的帮我把修改的内容更新,删掉原来的容器,帮我重新生成一个容器出来。
它还可以实现滚动更新,当我要进行更新时,它会先生成一个新的容器,然后再把旧的容器移除掉,
然后把新的容器部署上去。这样对于用户来说是没有感知的。
当我部署的新版本存在问题,它还可以自动回退到上一个版本。
服务发现和负载均衡
它本身就有负载均衡的解决方案,就不用再去部署nginx等负载均衡。
机密和配置管理
它可以将密码以及敏感的数据信息,通过它的配置管理,统一管理起来
存储编排
将物理磁盘抽象成一个虚拟磁盘,然后容器访问的是虚拟磁盘,虚拟磁盘再去映射到真正对应的物理磁盘上,
容器直接进行资源的调度,也不用关心物理磁盘。
批处理
通过批处理批量的帮我完成一些任务以及功能的实现。
Borg
分为服务端与客户端,服务端又分为主节点与从节点。
cell核心服务部分
外部客户端操作Borg的master主节点
主节点负责分发任务给从节点,scheduler负责进行调度,找到适合执行任务的节点,让他执行任务。
K8s的逻辑与Borg相似
也分主节点和从节点
在从节点上部署相应的应用容器
主节点上也可以部署应用,它可以既是主节点又是从节点,也可以让它只做主节点。
官方要求最少要有一个主节点一个从节点。
主节点中的APIS(API-server)是操作K8s的核心
维护了所有K8s当中对于节点或者各种任务处理的相关功能的接口。
对K8S执行的操作,都会先进入到APIS当中,通过它才能去调动某一个功能。