68、69、70、71丨到底什么是云原生架构?Kubernetes背景和架构;Kubernetes有哪些基本概念?(上,下)

软件开发行业其实有很多概念都没有明确的官方定义,它们其实都是一些业界最佳实践的统称。





  • 集群中有很多节点组成,而且可以按需添加更多的节点,节点可以是物理机也可以是虚拟机,每个节点都有一定数量的CPU和内存,整个集群可以看做一个超大的计算机

  • Kubernetes是一个容器调度平台,容器是一个轻量级的虚拟化技术,从宿主机操作系统来看,容器其实是一个一个的进程,而容器自以为自己就是一个操作系统

  • Kubernetes并没有直接调度容器,而是在外面又封装了一个POD的概念,POD是Kubernetes的基本调度单位
  • 一个POD中可以跑一个或多个容器,它们共享POD的文件系统和网络,每个POD有独立的IP,POD中的容器共享IP和端口空间,同一个POD中的容器可以通过localhost相互访问,大部分情况下一个POD只跑一个容器
  • Kubernetes在容器外加POD的封装的原因:1,考虑到了一些需要辅助容器的场景,比如需要(set、cut???)的场景;2,可以考虑使用不同的容器技术

  • 一个应用发布的时候一般不会只发一个POD实例,而是会发多个POD实例,这样才能实现高可用
  • 副本集ReplicaSet就是和一个应用的一组POD相对应的一个概念,它可以通过模板(主要是yml)来规范某个应用的容器镜像、端口、副本数量、健康检查机制、环境变量

  • POD在Kubernetes中是不固定的,有可能会随时挂或者重启,这个包括预期的或者非预期的,相应的IP就会随着变,如果一个服务的实例IP不固定,那么服务的消费者如何才能寻址呢
  • Kubernetes通过引入Service这个概念来解决,Service通过屏蔽应用的IP寻址和负载均衡这些细节,消费方可以直接通过服务名访问目标服务,Service的底层机制会做寻址和负载均衡

  • 副本集可以认为是一个基本的发布机制,可以实现基本或高级的发布 ,但是一些操作比较繁琐,为了简化这些高级的发布,简单讲Deployment是为了管理ReplicaSet

下面给出了一个,通过Deployment调度实现滚动发布的一个样例

  • 假设应用1.0绿色版本已经发布了,然后通过Deployment发布蓝色版本1.1
  • Deployment会先创建ReplicaSet 1.1,之后Deployment会不断的调度,拉入蓝色版本,拉出绿色版本,直到所有的蓝色POD全部上线,绿色POD全部下线,这个过程Service抽象会屏蔽应用地址的变更,让消费方无感知
  • 如果在滚动发布的过程中蓝色POD有问题,让健康检查通不过,那么Deployment会自动终止,并且回退发布;即使发布成功,也可以回退到以前的版本

  • Deployment和Service是和微服务相关的两个最重要的概念,也是发布过程中经常要使用的两个概念


  • 概念总结

posted @ 2020-03-30 16:29  bm小明  阅读(282)  评论(0编辑  收藏  举报