1. Service 概念

通过创建 Service, 可以为一组功能相同的容器提供一个统一的入口,并将请求均衡负载发送到后端的各个容器上

  • 通过 Label Selector ,实现 SVC 与容器组关联
  • 负载均衡算法默认使用 RR (Round-Robin 轮询调度)
  • 亲和性:通过service.spec.sessionAffinity = ClientIP 来启用 SessionAffinity 策略
  • 只提供 4 层负载均衡能力 (基于 IP:PORT 转发),没有7层功能 (通过主机名或域名负载均衡)

svc

1. K8S 资源

k8s中,所有的内容都被抽象为资源,资源实例化后,称为对象

集群资源分类:

  • 名称空间级别: 只在本名称空间下可见
  • 集群级别: role, 不管在什么名称空间小,均可见
  • 元数据级别: HPA(可以CPU利用率平滑扩展)

1. 架构

Kubernetes特点:

  • 轻量级:消耗资源小
  • 开源
  • 弹性伸缩
  • 负载均衡:IPVS

1.1 核心组件

  • etcd: 保存整个集群的状态

  • apiserver: 资源操作的唯一入口,提供了认证、授权、访问控制、API注册和发现等机制

  • controller manager: 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等

  • scheduler: 负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上

  • kubelet: 负责维护容器的生命周期、Volume(CVI) 和网络(CNI)的管理

  • container runtime: 负责镜像管理以及Pod和容器的真正运行 (CRI)

  • kube-proxy: 负责为Service提供cluster内部的服务发现和负载均衡 (四层)

    • iptables
    • ipvs

etcd: 可信赖的分布式键值对存储服务,为整个分布式集群存储关键数据,协助分布式集群的正常运转。

1. 数据卷设计的目的

  • 经过特殊设计的目录,可以绕过联合文件系统(UFS),为一个或多个容器提供访问。
  • 在于数据的永久化,它完全独立于容器的生命周期。因此,Docker不会在容器删除时删除其挂载的数据卷,也不会存在类似的垃圾回收机制,对容器引用的数据卷进行处理

1. Dockerfile 指令

  • FROM: 指定基础镜像

    • 服务类镜像: nginxredismongomysqlhttpdphptomcat
    • 语言类镜像: nodeopenjdkpythonrubygolang
    • 操作系统镜像: ubuntudebiancentosfedoraalpine
    • 空白镜像:scratch 适用于静态编译的程序,不需要操作系统支撑。
  • COPY: 复制文件

  • ADD: 支持添加URL,自动解压文件等

  • WORKDIR: 指定默认目录工作