什么是K8S:Kubernetes是容器集群管理系统,是一个开源的平台(系统OS,平台Platform)。
可以做什么:可以实现容器集群的自动化部署、自动扩缩容、维护等功能。
什么是Pod
Pod是K8S最小的管理单位,一个Pod代表容器集群上正在运行的一个进程。
一个Pod封装一个应用容器,存储资源、一个独立的网络IP以及管理控制的策略。
Pod和容器的关系:
1:1个pod对应一个容器,K8s最常见的关系。在这种情况下,可以将pod视为容器,但是K8s是通过Pod来管理,而不是通过容器来管理。
2: 1个pod对应多个容器。这种情况下,Pod变成了Service,来管理多个容器之间的关系和资源,多个容器之间可以共享资源。(选修,高级用法)
每个Pod都是运行应用(应用级别Application)的单个实例,如果需要水平扩展,则应该使用多个Pods,以使Pod和实例呈现一一对应的关系。水平扩展的Pod在K8s里通常称为Replication(复制的集合)。Replication的Pod通常由Controller创建和管理。
Pod的网络和存储:
1个Pod对应一个容器时,IP和网络资源都是唯一的。对应多个容器时,IP也是唯一的,但是网络资源是共享的,要注意协调资源,避免端口冲突。
对应一个容器时,存储是独立的。多个容器时,可以指定共享目录,避免Pod重启,数据丢失。
Pod的生命周期:
Pod被创建后,会被K8s调度到集群的Node上,直到Pod的进程终止(被删掉,被驱逐,故障,执行完毕)都会在Node上。
Pod不会自愈,如果出现故障,就会被删除。K8s虽然可以直接管理Pod,但是抽象出了一层Controller来对Pod进行管理。
Pod和Controller的关系:
Controller创建和管理多个Pod,提供副本管理(Replication)、滚动升级和集群级别的自愈能力。例如,如果一个Node故障,Controller就能自动将该节点的Pod调度到其他健康的Node上。
Controller示例:Deployment,StatefulSet,DaemonSet,通常,Controller是根据Pod Template来创建响应的Pod。(Pod template:是包含了其他对象(如Replication Controllers,Jobs和Daemon Sets)中的Pod定义)
网友评论