天天看点

Kubernetes学习01

概念

  • Cluster:Cluster是计算、存储和网络资源的集合,Kubernetes利用这些资源运行各种基于容器的应用。
  • Master:Cluster的大脑,职责是调度(决定将应用放在哪里执行)。Master运行Linux操作系统,可同时运行多个Master以实现高可用。
  • Node:运行容器应用,由Master管理,负责监控、汇报容器状态,根据Master要求管理容器生命周期。Node运行在Linux操作系统上。

【前述创建的Cluster中之后一个主机minikube,既是Master也是Node】

  • Pod:Kubernetes最小工作单元,每个Pod包含一个或多个容器。Pod中的容器会作为一个整体被Master调度到Node上执行。
    • 引入的目的1:可管理性
    • 引入的目的2:通信和资源共享【pod中的所有容器由相同的IP地址和port空间】
    • 使用方式1:运行单一容器
    • 使用方式2:运行多个容器【联系非常紧密且需要直接共享资源的容器放到同一个容器中】
      • 正例:File Puller会定期从外部Content Manager中拉取最新的文件,将其存放在共享的volume中。Web Server从volume读取文件,响应Consumer的请求。它们一起为Consumer提供最新的数据,同时它们也通过volume共享数据。
      • 反例:Tomcat从MySQL读取数据,它们之间需要协作,但不至于需要放到一个pod中部署。同时他们通过JDBC交换数据,不直接共享存储。
  • Controller:Kubernete不直接创建pod,通过Controller管理pod。
    • Deployment:最常见的Controller。管理多个Pod副本,确保其按照期望运行。
    • ReplicaSet:实现pod多副本管理。使用Deployment时会自动创建ReplicaSet。【Deployment通过ReplicaSet管理Pod多个副本】
    • DaemonSet:用于每个Node最多只运行一个副本的场景,通常用于运行Daemon。
    • StatefuleSet:保证pod的每个副本在整个生命周期中是不变的。某pod发生故障需要删除并重启时,pod名称会发生变化,StatefuleSet保证副本按固定顺序启动、更新、删除。
    • Job:用于运行结束就删除的应用,其他Controller中的pod通常长期运行。
  • Service:Deployment拥有多个副本,每个pod拥有自己IP(可能频繁销毁重启,导致发生变化),外界通过Service访问。Service拥有自己的IP和port,为pod提供了负载均衡。

Kubernetes运行容器和访问容器两项任务分别由Controller和Service执行

  • Namespace:分隔在同一个集群上多用户或项目组创建的Controller和pod资源。物理的Cluster逻辑上划分为多个虚拟Cluster,称其为Namespace,互相资源隔离。
    • Kubernetes默认创建两个Namespace
      • default(创建资源时不指定)
      • kube-system(Kubernete创建的系统资源)

继续阅读