zoukankan      html  css  js  c++  java
  • kubernetes架构简述

    一、kubernetes架构

    APISERVER:所有服务访问统一入口

    CrontrollerManager:维持副本期望数目

    Schedulerat责介紹任务,选择合适的,点进行分配任条

    ETCD:键值对数据库 储存K8S集群所有重要信息(持久化)

    Kukelet.直接跟容器引攀交互实现容器的生命周期管理

    Kube-proxy:负责与入规则至IPTABLES、 IPVS实现服务映射访间的

    COREDNS:可以为集群中的svc创建一个城名1P的对应关系解析

    DASHBOARD:给K8S集群提供一个B/s结构访问体系

    INGRESS CONTROLLER:官方只能实现四层代理, INGRESS可以实现七层代理

    FEDERATION:提供一个可以跨集群中心多Kas统一管理功能PROMETHEUS:提供K8S集群的监控能力

    ELK:提供K8s集群日志统一分析介入平台

    二、pod基本概念

      1、ReplicationController&ReplicaSet&Deployment

      ReplicationController用来确保容器应用的副本数始终保持在用户定义的副本数,即如果有容器异常退出,会自动创建新的Pod来替代;而如果异常多出来的容器也会自动回收在新版本的Kubernetes中建议使用ReplicaSet来取代ReplicationControlle,ReplicaSet跟ReplicationController没有本质的不同,只是名字不一样,并且ReplicaSet支持集合式的selector正在联网识别并翻译,虽然ReplicaSet可以独立使用,但一般还是建议使用Deployment来自动管理ReplicaSet ,这样就无需担心跟其他机制的不兼容问题(比如ReplicaSet不支持rolling update(滚动更新)但Deployment支持)

      2、HPA

      Horizontal Pod Autoscal ing仅适用于Deployment和Replicaset ,在v1版本中仅支持根据Pod的CPU利用率扩容,在vlalpha版本中,支持根据内存和用户自定义的metric扩缩容

      3、StatefulSet

      StatefulSet是为了解决有状态服务的问题(对应Deployments和ReplicaSets是为无状态服务而设计) ,其应用场景包括:

        稳定的持久化存储,即Pod重新调度后还是能访问到相同的持久化数据,基于PvC来实现

        稳定的网络标志,即Pod重新调度后其PodName和HostName不变,基于Headless Service(即没有Cluster IP的Service )来实现

        有序部署,有序扩展,即Pod是有顺序的,在部署或者扩展的时候要依据定义的顺序依次依次进行(即从0到N-1,在下一个Pod运行之前所有之前的Pod必须都是Running和Ready状态) ,基于init containers来实现

        有序收缩,有序删除(即从N-1到0)

      4、DaemonSet

      DaemonSet确保全部(或者一些) Node上运行一个Pod的副本当有Node加入集群时,也会为他们新增一个Pod。当有Node从集群移除时,这些Pod也会被回收。删除DaemonSet将会删除它创建的所有Pod,使用DaemonSet的一些典型用法:

        *运行集群存储daemon,例如在每个Node上运行glusterd, ceph.

        *在每个Node上运行日志收集daemon,例如fluentd, logstash.

        *在每个Node上运行监控daemon,例如Promethelis Node Exporter

      5、Job

      Job负责批处理任务,即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束Cron Job管理基于时间的Job,即:

        *在给定时间点只运行一次

        *周期性地在给定时间点运行

  • 相关阅读:
    catboost原理以及Python代码
    lightgbm原理以及Python代码
    stacking算法原理及代码
    python自动化之爬虫模拟登录
    python自动化之爬虫原理及简单案例
    python自动化之PDF
    input type="file"鼠标无法变小手
    typescript中类和接口的区别
    TypeScript基础类型
    微信小程序-获取input值的两种方法
  • 原文地址:https://www.cnblogs.com/wu-wu/p/13861722.html
Copyright © 2011-2022 走看看