# K8s

# 特征

  1. 自我修复
  2. 弹性伸缩
  3. 自动部署与回滚
  4. 服务发现与负载均衡
  5. 机密和配置的管理
  6. 存储的编排
  7. 批处理任务

# 架构

核心组件

  1. Etcd:保存整个集群的状态,提供数据服务
  2. Kube-apiserver:资源操作统一入口,并提供认证、授权、访问控制、api注册和发现等机制
  3. Kube- Controller-Manager:维护集群的状态,比如故障检测、自动扩展、滚动更新等
  4. Cloud- Controller-Manager:底层云计算服务商交互的控制器
  5. Kube-Scheduler:负责资源的调度,按预定的调度策略将POD调度到相应机器上
  6. Kubelet:维护窗口的生命周期,同时负责Volume(CVI)与网络(CNI)的管理
  7. Kube-Proxy:为Service提供内部的服务发现和负载均衡,并维护网络规则
  8. Container-Runtime:管理运行的容器,比如docker

其它组件:

  1. Kube-Dns:为集群提供DNS服务;
  2. Ingress-Controller:服务外网入口
  3. Heapster:资源监控 每个Node节点上运行的集群范围内的数据聚合器
  4. Dashboard:GUI
  5. Fedration:跨可用区的集群
  6. Fluentd-elastricsearch:集群日志采集存储与查询

# 核心概念

  1. Cluster 计算、存储、网络资源的集合。k8s利用这些资源运行基于容器的应用

  2. Master 集群的大脑,主要的职责是调度,即决定应用放在那里运行

  3. Node 职责是运行容器应用,由Master管理,Node负责监控并汇报容器的状态,并根据Master的要求管理容器的生命周期

  4. Pod k8s最小的工作单元,会被做为一个整体由Master调度到一个node上运行 目的:

    • 管理:一个部署单元,以它为最小单位进行调度、扩展、共享资源、管理生命周期
    • 通信与资源共享:pod中容器使用一个网络和存储空间,可直接通过localhost、通信
  5. Controller k8s不直接创建Pod,而是通过Controller管理Pod。Contrller定义Pod的部署特性,比如副本数,Node节点的选择。

    • Deployment:管理Pod的多个副本,确保Pod按期望的状态运行
    • ReplicaSet:实现Pod的多副本管理,Deployment通过它管理Pod多个副本
    • DaemonSet:每个Node上最多运行一个Pod副本的场景
    • StatefulSet:保证每个pod在生命周期中名称不变,俣副本按固定的顺序启动、更新、删除
    • Job:运行结束就删除的应用
  6. Service 定义外界访问一组特定Pod的方式,Service有自己的IP和端口,为Pod提供负载均衡

  7. Namespace 将物理集群划分为多个虚拟集群,不同Namespace中的资源是完全隔离的

学习k8s的文摘

张磊-极客时间课程

### (opens new window)

上次更新: : 5 months ago