kubernetes介绍

kubernetes篇

早在Docker诞生之前,Google就开源了一款容器引擎-lmctfy,也曾名噪一时,但后来Docker开源之后,凭借着体验友好的命令行工具以及真正的开箱即用等特点,使迅速地在业内传播开来。

而Google作为云计算时代的IT巨头之一,自然不会就此放过容器的话语杠, 在容器引擎争夺中稍显劣势的Google调集了其内部使用了十余年的大规模集群管理工具Borg的项目工程师,打造了一款基于Borg理念的集群管理工具-Kuberneteso Kubernetes脱胎于Borg,代表了Google过去十余年设计、构建和管理大规模容器集群的经验。

正因为Kubernetes是Google多年大规模容器管理技术Borg的开源版本, 所以一经开源就引起了全世界的瞩目,并在Docker集群管理能力尚未发力之前,便迅速占领了容器集群管理的高地,成为了CNCF(云原生计算基金会的英文缩写)最重要的项目之一。

 

  1. kubernetes介绍
  2. 什么是kubernetes

    与docker三剑客(swarm,machine,Compose),Meos+Marathon类似,kubernetes也是一个用于容器集群的自动化部署,扩容以及运维的开源平台。

    作为容器集群管理工具,Kubernetes有一套健壮的集群自恢复机制,包括容器的自动重启、自动重调度以及自动备份甚至负载等。仅从这 一层面上来看, 其实Kubernetes与Mesos相差无几,但实际上Kubernetes在面对由多个容器组合而成的复杂应用时依旧能够出色地完成上述任务,这是其与其他集群管理平台最大的不同,可以说Kubernetes就是一个建立在容器技术之上,只为容器技术打造的集群管理系统,即在kubernetes的世界里,一切皆是容器。

  3. kubernetes架构

    了解了Kubernetes的来由,再来看看Kubernetes的架构, Kubernetes作为OpenStack阵营中的一员,有着和KVM一样的地位,但是它比Paas更加底层。

    在Kubenetes中,Service是分布式集群架构的核心。它是一种抽象的概念, 每一个Service的后端有多个Pod,所有的容器均在Pod中运行。

    每个Service拥有一个唯一指定的名字,拥有一个虚拟IP和相应的端口号, 它们能够提供某种远程服务,一个Service实际上就是一组提供服务的容器(每个容器的功能可能不同,但它们共同组成了一个服务)。

    Kubernetes由两种节点组成,如图所示

    Master节点,即主节点,用于跑Kubernetes的核心组件等程序,是管理节点。

    Node节点,即容器运行节点,运行服务容器以及Kubemetes的注册组件等服务,是从节点。

    每个Node节点中有多个Pod,一个Service可能横跨多个Node,也可能一个Node里面包含多个Service, Service和Node并不是从属关系。可以把Node理解为真实世界中的一台服务器,一个Service就是一个多机负载的服务。Service本身一旦创建就不再变化,在Kubemetes集群中,无须为服务的IP地址考虑,一切都交给Kubernetes处置。

     

     

    1.Master模块

    Kubernetes的Master节点主要由四个模块组成:API Server、Scheduler、Controller manager、etcd。

    API Server。保安,API Server的功能如其名负责对外提供RESTFUL的Kubernetes API 服务,是系统管理命令的统一入口。它提供了资源操作的唯一入口,并提供认证,授权,访问控制,API注册和发现等机制,任何对资源进行增删改查的操作都要交给APIserver处理后提交给etcd。

    Scheduler。人力资源经理,Scheduler负责调度Pod(Kubernetes中最小的调度单元)到合适的Node上。虽然Scheduler的职责很简单,但整个调度程序非常智能。kubernetes目前提供了多种调度算法,也允许用户自己定义调度算法。

    Controller manager。APIserver是保安,那么controller manager就是老板了,在 Kubernetes中,每个资源( Pod、 Node、 Service等) 一般都对应一个控制器,而Controller manager就是负责管理这些控制器的。保证资源的运行状态正常就是Controller manager的工作。

    etcd。仓库人员,etcd是一个高可用的键值存储系统,Kubernetes用它来存储各个资源的状态。

    2.Node模块

    Kubernetes的Node节点主要由三个模块组成:kubelet、 kube-proxy 、runtime。

     

    Kubelet。快递驿站,Kubelet是Master在每个Node节点上的agent,是Node与Master通信的重要途径。 它负责维护和管理该Node的所有Pod容器(不是通过Kubernetes创建的容器不归Kubelet管理)。

     

    Kube-proxy。快递员,该模块实现了Kubernetes 中的服务发现和反向代理功能。在反向代理方面,Kube-proxy支持TCP和UDP连接转发,默认基于RoundRobin的算法将客户端流量转发到与Service对应的一组后端Pod上面。在服务发现方面,kube-proxy轮询API来获取Pod配置信息的变动,监控集群中Service和 endpoint对象数据的动态变化,并且维护从Service到endpoint的映射关系, 保证后端Pod的IP变化不会对用户造成影响。

     

    runtime。runtime指的是容器运行环境, 目前Kubernetes支持Docker和Rocket两种容器引擎。

     

  4. kubernetes的优势

     

     

    与Docker Swarm、 Meos+Marathon等平台相比,Kubernetes有什么特别的地方呢?

    一个明显的优势在于Kubernetes的部署更加方便,整套流程基本不需要开发人员做什么复杂的修改。相比Meos+Marathon的组合(有时候还少不了ELK日志服务),Kubernetes的整合可谓深得人心。相比DockerSwarm, Kubernetes在微服务管理上比DockerSwarm更出色。

    Kubernetes基于容器的应用部署和维护,可靠的高可用机制使得服务滚动升级不再艰难;集成负载均衡和服务发现功能,拥有跨机器甚至跨地区的集群调度能力;自动根据用户期望伸缩服务规模,兼容有、无状态服务,支持Volume等;最后还有插件机制保证扩展性。

    使用Kubernetes可以快速高效地响应客户需求,快速并且无意外地部署你的应用,并且可以动态地对应用进行扩容,无缝地升级应用。

posted @ 2022-01-24 11:11  头发重要  阅读(209)  评论(0)    收藏  举报