白话k8s(Kubernetes)核心概念

1.什么是k8s

1.1 项目部署方式的进化和 k8s 的出现

image.png

  • 首先最早的传统部署方式可以理解为将若干应用(可以理解成Java中的若干微服务)打成 jar 包或者是 war 包以后,通过 tomcat 等容器运行到服务器上,这种传统的方式适合于小型项目,尤其是单体应用,应用过多的话,一个应用的内存溢出可能就会导致整个服务器上的应用全部宕机。

  • 再之后为了解决上述提到的内存溢出问题使用服务器上开多个虚拟机来隔离应用的方式,一台虚拟机负责一个应用,如此一来从物理级别将各个应用的内存隔离开来。不过,在服务器上开虚拟机的方式显然是一种重量级的方式,一个个的虚拟机显得格外笨重。

  • 综合了前两种方式的不足,基于容器的部署方式应运而生,首先,它通过容器化的方式将各个应用隔离开来,不会因为一个应用的内存溢出影响到别的应用,其次,容器化的方式是轻量级的,一个容器就好比一个纯净的 Linux 服务器,内部只有被部署的应用也就不存在环境的相互干扰以及笨重的体积。

基于容器化的部署方式已经成为主流,但工业界一个成熟的项目可能需要成百上千的应用来支撑,如此一来,大量分布在不同服务器上的容器就靠人工就非常难以管理,而 Kubernetes 的出现就是为了解决这个问题,它将大量的容器编排管理起来。

1.2 K8s 特性

  1. 服务发现与负载均衡:这点类似于 Nacos 等注册中心,同一个应用可能在不同的容器,各个容器又处于不同的服务器节点,K8s 能够将这些容器管理起来,请求来了以后能根据负载的情况将请求发送到具体的服务器。
  2. 存储编排:K8s 允许你自己来选择当前容器的存储空间大小,假如超过了这个空间它还能将这个容器杀死。
  3. 自动部署和回滚:自动的对容器进行部署,如果发生紧急事件,当前的新版本出现了生产事故并且当前来不及进行修复的话可以回滚到历史稳定版本。
  4. 自我修复:一个容器假如因其挂载的服务器出现问题而导致不能正常工作了,能够自动的将这个容器部署到别的健康的服务器。

2.架构

2.1 工作方式:

kubernetes cluster = N master node + N worker node:N个主节点 + N个工作节点;N >= 1。
这个集群方式和 Reids 这些类似,会有一个主节点起主要的发号施令的作用,若干个主节点又组成董事会,一旦主节点出现问题了就由其他的主节点通过投票的方式选举出新的发号施令的主节点。

2.2 集群中的各种角色

image.png

首先,将一个 K8s 比作一个集团,集团要做不同的项目,集群的各个角色就担任了不同的任务。

  1. Node:就是各个负责工作的地方也就是工厂。
  2. Kubelet:每一个工厂的负责人。
  3. k-proxy:每一个工厂的门卫,当总部的人要来巡视工厂了,可以通过它来询问当前的项目是不是在这开展,不管有没有在它这开展它都能告诉领导该去哪里查看。
  4. controller manager:决策者,决定项目由哪一个工厂来开展。
  5. API server:秘书部,决策者的决策不会直接告诉工厂而是通过它来进行转达,同样地,工厂的情况也是通过它来转给决策者。
  6. scheduler:调度者,调度项目的执行。
  7. etcd:资料库,用于存放集团的资料。

image.png

总结:1.每一个服务器中要有一个监工:kubelet,由它来负责监控整个服务器里面容器的监控状况2.所有的沟通都是通过秘书(api-server)3.所有的服务器都要装上运行时环境,可以是docker。4.可以通过命令的形式来进行部署

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MY1LfT2R' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片