比如在服务器上部署一个博客应用服务,但是太过受欢迎,访问量太大,应用服务经常会挂,使用自动重启工具,并且将应用服务部署在了好几个服务器上,总算抗住了。后来又上线了商城应用服务和语言应用服务,随着应用服务变多,需求也千奇百怪,有的应用服务不希望被外网访问,有的应用服务要求内存大于多少g才能跑,所以每次都要登录到各个服务器上执行手动操作更新,不仅容易出错,还浪费时间,那么问题来了,有没有办法能解决这个问题?当然有,就是在服务器和应用服务之间加一个中间层,这次我们加的中间层叫kubernetes。
Kubernetes是什么
kubernetes是Google开源,用于管理云平台中多个主机上的容器化的应用。因为单词太长,简称为“k8s”。它介于应用服务和服务器之间,能够通过策略协调和管理多个应用服务,只需要一个yaml文件配置,定义应用的部署顺序等信息,就能自动部署应用到各个服务器上,能让它们自动扩缩容,能够做到挂了后,在其他服务器上自动部署应用。
Kubernetes架构原理
k8s会将服务器划分为两部分,一部分是控制平面,另一部分是工作节点Node。
控制平面负责控制管理Node,Node负责运行各个应用服务。
控制平面内部组件
-
api-server
以前我们需要登录到每台服务器上手动执行各种命令,现在只需要调用k8s提供的api接口,就能操作这些服务资源,这些接口都是由api-server组件提供的。 -
scheduler调度器
以前我们到处看下哪台服务器cpu和内存资源充足,然后才能部署应用,现在这部分决策逻辑由scheduler来完成。 -
control mgr控制器管理器
以前我们会手动创建关闭服务,现在这部分功能由controller manager来负责。 -
etcd
上面的功能都会产生一些数据,这些数据需要保存到存储层,需要一个etcd组件。
Node内部组件
-
它可以是裸机