Kubernetes_概念篇

一、架构

在这里插入图片描述

  • 核心层
    • Kubernetes 最核心的功能,对外提供 API 构建高层的应用,对内提供插件式应用执行环境
  • 应用层
    • 部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、DNS 解析等)
  • 管理层
    • 系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动态 Provision 等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy 等)
  • 接口层
    • kubectl 命令行工具、客户端 SDK 以及集群联邦
  • 生态系统
    • 外部
      • 日志、监控、配置管理、CI、CD、Workflow等
    • 内部
      • CRI、CNI、CVI、镜像仓库、Cloud Provider、集群自身的配置和管理等

二、概念

1,Label(对象标签)

  • key/value 附加在对向上
  • 等式
    • app=nginx 和 env!=product
  • 集合
    • 如 env in (production,qa)
  • 多个label(AND关系)
    • app=nginx,env=test

2,Namespace

  • 一组资源和对象集合,用来将内部对象划分为不同的项目组/用户组
  • pods,services,deployments 等都属于某一个namespace(默认default)
  • Node、PersistenVolumes 等则不属于任何namespace

3,Deployment

  • 确保任意时间都有指定数量的,Pod(副本)在运行
  • 某个Pod 不响应,Deployment会替换他
  • 创建Deployment
    • Pod模板:用来创建Pod副本的模板
    • Label 标签:deployment 需要监控的Pod的标签

4,Service

在这里插入图片描述

  • 应用服务的抽象,通过labels 为应用提供负载均衡和服务发现
  • 匹配 labels 的 Pod Ip 和端口列表 组成endpoints
  • kube-proxy 负责将服务IP负载均衡到这些 endpoints上
  • 每个Service 都会自动分配一个 cluster IP(仅在集群内部可访问的虚拟地址)和DNS名
  • 其他容器可以通过该地址、DNS来访问服务,不需要了解后端容器的运行

三、资源对象

Master

Master节点是Kubernetes 集群的控制节点,负责整个集群的管理和控制

组件

1,kube-apiserver
  • 集群控制的入口,提供 HTTP REST 服务
2,kube-controller-manager
  • Kubernetes集群中所有资源对象的自动化控制中心
3,kube-scheduler
  • 负责Pod 调度
4,Node
  • Node 节点是 Kubernetes集群的工作节点
  • 工作负载由Master节点分配
  • 工作负载主要是运行容器应用
组件
  • kubelet
    • 控制Pod
      • 创建
      • 启动
      • 监控
      • 重启
      • 销毁
  • kube-proxy
    • Kubernetes Service 的通信和负载均衡
  • 运行化应用(Pod)应用
5,Deployment
  • 生成相应的 ReplicaSet 完成 Pod 副本的创建
6,Service
  • Kubernetes 最重要的资源对象
  • 定义了服务的访问入口
  • 通过该地址访问Service 后端的Pod 副本实例
  • 伸缩性
    • Service 通过 Label Selector 同后端的 Pod 副本建立关系
    • Deployment 保证后端Pod 副本的数量
7,Pod
  • Kubernetes 最基本的部署调度单元,用于解决Pod的扩容和伸缩

四、核心组件

  • etcd 保存了整个集群的状态,就是一个数据库
  • apiserver 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API 注册和发现等机制
  • controller manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等
  • scheduler 负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上
  • kubelet 负责维护容器的生命周期,同时也负责 Volume(CSI)和网络(CNI)的管理
  • Container runtime 负责镜像管理以及 Pod 和容器的真正运行(CRI)
  • kube-proxy 负责为 Service 提供 cluster 内部的服务发现和负载均衡
  • 推荐插件
    • Ingress Controller 为服务提供外网入口
    • Heapster 提供资源监控
    • Ingress Controller 为服务提供外网入口
    • Dashboard 提供 GUI

五、集群

Pod
在这里插入图片描述

一个节点内容

  • 共享 PID、IPC、Network和UTS namespace
  • Kubernetes 调度基本单位
  • 多个容器在一个Pod 中共享网络和文件系统,可以通过进程通信和文件共享,完成服务