学习kubernetes(一)概念以及特性

一.概念
什么是Kubernetes?

Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展。如果你曾经用过Docker容器技术部署容器,那么可以将Docker看成Kubernetes内部使用的低级别组件。Kubernetes不仅仅支持Docker,还支持Rocket,这是另一种容器技术

二.特性

  • 自动化容器的部署和复制

  • 随时扩展或收缩容器规模

  • 将容器组织成组,并且提供容器间的负载均衡

  • 很容易地升级应用程序容器的新版本

  • 提供容器弹性,如果容器失效就替换它

  • 监控,日志问题
    三.k8s中的组件定义
    先来一张手绘图
    2组件概念:
    k8s主要分为两个部分 master 和 node节点
    2.1 master
    主要由四个模块组成:APIServer、scheduler、controller manager、etcd

  • APIServer 作为整个系统的控制入口,以 REST API 服务提供接口
    APIServer负责对外提供RESTful的Kubernetes API服务,它是系统管理指令的统一入口,任何对资源进行增删改查的操作都要交给APIServer处理后再提交给etcd。如架构图中所示,kubectl(Kubernetes提供的客户端工具,该工具内部就是对Kubernetes API的调用)是直接和APIServer交互的。

  • schedule 将 Pod 调度到 Node 上):负责节点资源管理,接受来自 kube-apiserver 创建 Pods 任务,并分配到某个节点
    scheduler的职责很明确,就是负责调度pod到合适的Node上。如果把scheduler看成一个黑匣子,那么它的输入是pod和由多个Node组成的列表,输出是Pod和一个Node的绑定,即将这个pod部署到这个Node上。Kubernetes目前提供了调度算法,但是同样也保留了接口,用户可以根据自己的需求定义自己的调度算法。

  • controller manager 用来执行整个系统中的后台任务,包括节点状态状况、Pod 个数、Pods 和 Service 的关联等
    如果说APIServer做的是“前台”的工作的话,那controller manager就是负责“后台”的。每个资源一般都对应有一个控制器,而controller manager就是负责管理这些控制器的。比如我们通过APIServer创建一个pod,当这个pod创建成功后,APIServer的任务就算完成了。而后面保证Pod的状态始终和我们预期的一样的重任就由controller manager去保证了。

  • etcd 负责节点间的服务发现和配置共享
    etcd是一个高可用的键值存储系统,Kubernetes使用它来存储各个资源的状态,从而实现了Restful的API。
    2.2 node
    每个Node节点主要由三个模块组成:kubelet、kube-proxy、runtime。

  • runtime

runtime指的是容器运行环境,目前Kubernetes支持docker和rkt两种容器。

  • kube-proxy 运行在每个计算节点上,负责 Pod 网络代理。定时从 etcd 获取到 Service 信息来做相应的策略
    该模块实现了Kubernetes中的服务发现和反向代理功能。反向代理方面:kube-proxy支持TCP和UDP连接转发,默认基于Round Robin算法将客户端流量转发到与service对应的一组后端pod。服务发现方面,kube-proxy使用etcd的watch机制,监控集群中service和endpoint对象数据的动态变化,并且维护一个service到endpoint的映射关系,从而保证了后端pod的IP变化不会对访问者造成影响。另外kube-proxy还支持session affinity。
  • kubelet 运行在每个计算节点上,作为 agent,接受分配该节点的 Pods 任务及管理容器,周期性获取容器状态,反馈给 kube-apiserver
    Kubelet是Master在每个Node节点上面的agent,是Node节点上面最重要的模块,它负责维护和管理该Node上面的所有容器,但是如果容器不是通过Kubernetes创建的,它并不会管理。本质上,它负责使Pod得运行状态与期望的状态一致。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章