本文共 1424 字,大约阅读时间需要 4 分钟。
下图为kubernetes的master架构图
cluster是计算、存储和网络资源的集合,kubernetes利用这些资源运行各种基于容器的应用。
Master 是Cluster的大脑,它的主要职能就是负责调度,决定应用放在哪里运行。master运行linux操作系统,可以是物理机或者虚拟机。为了实现高可用,可以运行多个Master。
Node 的职责是运行容器应用。Node由Master管理,Node负责监控并汇报容器的状态,同时根据Master的要求管理容器的生命周期。Node运行在linux系统上,可以是物理机或者虚拟机。
Pod是kubernetes的最小工作单元。每个pod可以包含一个或者多个容器。Pod中的容器会作为一个整体被Master调度到一个Node上运行。kubernetes 以Pod为最小单位进行调度、扩展、共享资源、管理生命周期;pod中的所有容器都共享一个网络namespace,所有的容器可以共享存储。
kubernetes通常不会直接去创建pod,而是通过Controller去管理pod的,Controller中定义了Pod的部署特性,比如有几个副本、什么样的Node上运行等。为了满足不同的业务场景,kubernetes提供了多种Controller,包括Deployment、ReplicaSet、DeamonSet、StatefuleSet、Job等,我们逐一讨论。
Deployment 可以部署多个副本,每个Pod都有自己的Ip,那么外界如何访问这些副本呢?Kubernetes Service 定义了外界访问一组特定Pod的方式。Service 有自己的IP和端口,Service为pod提供了负载均衡。K8s运行容器Pod与访问容器Pod这两项任务分别由Controller和Service执行。
如果有多个用户或者项目组共同使用k8s 集群,如果将他们创建的Pod等资源分开呢,就是通过Namespace进行隔离。
转载地址:http://mxfva.baihongyu.com/