zoukankan      html  css  js  c++  java
  • Kubernetes ---- 理论、架构

    Kubernetes的特性:


      1. 实现自动装箱(自动完成资源的部署).
      2. 自我修复(kill掉,重新启一个).
      3. 自动实现水平扩展(物力资源要足够支撑).
      4. 服务发现和负载均衡.
      5. 自动发布和回滚.
      6. 秘钥和配置管理.
      7. 存储编排.
      8. 任务批量处理执行...

    集群:

      master/nodes模型
      一个或一组节点(高可用): master 集群入口
      多组节点: nodes

    Master:

      接收创建启动容器的请求 ->  调度器分析各node节点的可用资源状态,找到最佳适配运行用户所请求的容器的node,容器引擎启动容器

    1. API Server: 负责接收请求、解析请求、处理请求.
    2. Scheduler(预选后优选): 观测每个node上总共可用的物理资源,根据请求创建的容器的资源来评估在哪一个node上合适运行.
    3. Controller manager(做冗余): 监控每个控制器是健康的.

    Node:

      所有node组成为一个kube_cluster,将各node上的物理资源整合到一个"资源池"对外提供.

    1. Kubelet: 接收Scheduler调度结果,负责保证容器的状态始终正常.
    2. Docker:作为容器引擎运行Pod中的容器.
    3. kube-proxy: 随时与API Server进行通信,当每一个Pod发生变化的时候,会生成一个事件,事件可被任何关联的组件接收到,结果将保存在API Server中.

      例如Pod中的容器IP地址发生了改变,那么kube-proxy会将结果反映到Service也就是IPtables或ipvs中.

    Pod: 存放容器.

      1.自主式Pod: 提交给API Server,接收后借助于调度器调度至指定的node节点,由node启动此Pod,如果Pod中的容器出现故障,需要重启则由kubelet完成
      如果节点故障,则容器消失,无法全局调度.

      2. 控制器管理的Pod: 由调度器将其调度至集群中的某节点运行后.

    控制器分类:
      ReplicationController(副本控制器): 控制同一类Pod对象的各种副本,如果副本缺少了,则会自动添加至定义的副本数量.
      ReplicaSet: 副本集控制器,声明式控制器(Deployment).
      Deployment: 管理无状态应用副本集.
      HPA: 灵活增加Pod,当访问量过高,目前Pod不够用可自动增加,如果Pod够用,则会降低至够用的副本数量.
      StatefulSet: 管理有状态应用副本集.
      DaemonSet: 每一个Pod上运行一个副本.
      Job,Cronjob: 作业、周期性作业.

     

    Service(主机名和地址在不被删除的情况下不会改变):

      1. IPtables DNAT规则或IPvS(v1.11版以后使用了IPvS).
      2. 访问入口,将客户端请求代理至后端Pod地址.
      3. 负载均衡.
      4. Pod会将提供的服务注册至Service.
      5. 靠标签选择器关联Pod(Pod中拥有标签(label)),关联后Service会动态探测Pod的IP地址及端口,作为后端可用服务器.
      6. 通过kube-proxy管理,在每个节点上创建规则,变动也需使用kube-proxy反映到规则上.

    Label: 用来分类、识别、管理Pod.

    Label Selector: 根据标签过滤符合条件的资源对象的机制.
    Controller (支持众多类型): 通过loop持续性探测所管理的容器是否健康,如果不健康则重新像Scheduler发送创建请求,保证服务可用.

      同一Pod内的多个容器间通信:通过lo  
      各Pod之间的通信: Overlay 叠加网络 转发通信
      Pod与Service间通信: Pod将请求发往网关(docker0桥),检查IPtables转发

    ETCD(重要):

      1. 键值存储的数据库系统,可选举,类似Zookeeper.
      2. 存储集群中所有的重要信息.
      3. 要做冗余,且使用https通信.
      4. 2380集群内部通信,2379对外进行通信.

    网络配置:

      flannel: 网络配置.
      calico: 网络配置,网络策略.
      canel: 网络配置,网络策略.

    在不考虑有状态应用的情况下,下面有一个LNMP的架构图,个人理解,有错误望指出,谢谢。

  • 相关阅读:
    【转载】使用铁哥SmartFlash快速开发方案:66行代码搞定抽奖程序!
    WPF 数据绑定方法分类
    jquerywebsocket
    [转载]as3中单例模式如何设计
    .字符的匹配识别
    paip.提升用户体验搜索功能设计
    paip.提升安全性登录密码出错次数检测
    paip.html 及css调试工具debugbar
    paip.项目开发效率提升之思索
    paip.c#图片裁剪
  • 原文地址:https://www.cnblogs.com/k-free-bolg/p/13036345.html
Copyright © 2011-2022 走看看