云原生之路02之Kubernetes

云原生之路02之Kubernetes

第三章 Kubernetes系统快速入门

  • 云中资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按需付费,像水电一样使用IT基础设施

image.png

K8S 架构分层

image.png

  • 生态系统: 不属于K8S,第三方
  • 接口层:工具,UI,SDK库 等外围工具,外部可提供自有的实现
  • 治理层:策略执行和自动化编排
  • 应用层:部署(无状态/有状态应用,批处理,集群应用等)和路由(服务发现,DNS解析等),会提供默认实现,可以替换为各自的实现,但必须通过一致性测试
  • 内核层:k8s最核心功能,对外提供API构建高层的应用,对内提供插件式应用执行环境,为必选模块。等同于Linux的Kernel

image.png

Kuberbets概览

image.png

  • 模型对象
    • Pod:能够创建,调度和管理的最小部署单元
    • Service:一个Pods的逻辑集合和访问这个集合的策略
    • Deployment:无状态工作负载
    • StatefulSet:有状态工作负载
    • 增删改查–apiserver
  • 功能组件
    • Master:
      • apiserver
      • Scheduler: Pod调度
      • Controller Mannager: 升级运维、扩容缩容
    • Node
      • kubelet: 部署启动、运行监控
      • Kube-proxy: 服务发现
  • 功能特性
    • Pod调度
    • 部署启动
    • 运行监控
    • 服务发现
    • 升级运维
    • 扩容缩容

Pod

  • Pods是能够创建,调度和管理的最小部署单元,是一组容器的集合
  • 同一个pod里的容器共享同一个网络命名空间,IP地址及端口空间。
  • pod是短暂的应用,pods被调度到节点,保持在这个节点上直到被销毁。

容器

  • Infrastructure Container:基础容器
    • 用户不可见,无需感知
    • 维护整个pod网络空间
  • InitContainers:初始化容器:用于服务等待处理以及注册pod信息等
    • 先于业务容器开始执行
    • 顺序执行,执行成功退出,全部执行成功后开始其他业务容器。
  • Containers:业务容器
    • 并行启动,启动成功后一直运行Running。

容器基本组成

  • 镜像部分
    • 镜像地址和拉取策略
    • 拉取镜像的认证凭据
  • 启动命令
    • command:替换docker容器的entrypoint
    • args:作为docker容器entrypoint的入参
  • 计算资源
    • 请求值:调度依据
    • 限制值:容器最大能使用的规格

Pod外部输入方式

Pod可以接收的外部输入方式:环境变量,配置文件以及密钥

  • 环境变量:使用简单,但一旦变更后必须重启容器
    • Key-value 自定义
    • From 配置文件(configmap)
    • From 密钥(Secret)
  • 以卷形式挂载到容器内使用,权限可控
    • 配置文件(configmap)
    • 秘钥(Secret)

Pod与工作负载的关系

  • 通过label-selector和owerReference相关联
  • Pod通过工作负载实现应用的运维,如伸缩,升级等。

image.png

  • 关键工作负载 ReplicaSet

    • ReplicaSet-副本控制器
    • 确保Pod的一定数量的份数(replica)在运行。如果超过这个数量,控制器会杀死一些,如果少了,控制器会启动一些
    • ReplicaSet用于解决pod的扩容和缩容问题
    • 通常用于无状态应用
      image.png
  • 关键工作负载 Deployment

    • 更新Pod 和 ReplicaSet
    • 集成了上线部署、滚动升级、创建副本、暂停上线任务、恢复上线任务、回滚到以前某一版本(成功/稳定)的Deployment等功能。无人值守的上线,避免沟通、操作的风险
      image.png

K8S系统组件

image.png

K8S总体架构

image.png

K8S基于list-watch机制的控制器架构

image.png

K8S Controllers

image.png

K8S Scheduler

  • 为 pod 找到一个合适的 Node
  • Default scheduler 基于列队的调度器,一次调度一个pod,调度时刻全局最优
    image.png

Demo 城市天气预报

(完)