概述

本质

脱胎于Google内部大规模容器管理技术Borg,从运维角度来看,K8S本身就是一种集群,通过整合多台服务器资源为资源池,并同意对外提供计算,存储,网络等能力的集群

K8S 特性

  • 自动容器依赖
  • 自动修复
  • 水平扩展
  • 服务发现
  • 负载均衡
  • 自动发布
  • 自动回滚
  • 密码密钥管理
  • 配置管理
  • 存储编排
  • 任务批处理
  • ...

K8S 架构

K8S是有中心节点的架构,架构分为Master/Node两种类型节点

  • Master/Node:
    • Master: 集群管理节点,处理用户请求,调度器分析可用资源,选择合适的Node运行容器,controller控制资源状态向期望的状态转移
    • Node: 工作节点,负责运行具体服务Pod

K8S 核心组件

  • Master:
    • APIServer: 接收处理客户端、内部组件请求(kubelet、kube-proxy)
    • Scheduler: 负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上。第一步,预选,根据Node上可用资源(RAM、存储),选择符合Pods运行需求的。第二步,优选,最佳适配,根据调度算法中的优选算法决定
    • Controller-Manager: 负责监控管理控制器,例如,ReplicaSet、Deployment、DaemonSet等等控制器的可用状态,而控制器负责管理Pods等资源是否处于期望状态,如果不是,则通知APIServer向预期状态转移。
  • Node:
    • kubelet: 负责维护Pods的生命周期,增删启停,同时也负责Volume(CSI)和网络(CNI)的管理;
    • kube-proxy: 负责Service管理,通过监控APIServer的Service资源变化情况,创建或修改删除Service,利用iptables或者ipvs规则,提供外部访问或Cluster内部的服务发现、负载均衡;
  • Add-ons:

    • kube-dns: 负责为整个集群提供DNS服务
    • ingress-controller: 通过配置一组规则对服务的入站连接做7层请求处理,例如,虚拟主机,负载均衡,解包SSL等等
    • heapster: 提供资源监控
    • dashboard: Web管理界面
    • federation: 跨可用区的集群
  • ETCD: 存储集群元数据信息

  • Flannel: 负责集群网络连通性

K8S 架构图

高度抽象版

整体

Master

Node

组件通讯协议

results matching ""

    No results matching ""