标签:平衡 最小 image sch 工作 轻松 ram def 不同的
目录
kubernetes是一个Google开源的容器编排系统,用于自动部署,扩展和管理容器化应用程序。
Kubernetes 中,所有的容器都运行在 Pod 中,一个 Pod 来容纳一个单独的容器,或者多个合作的容器。在后一种情况,Pod 中的容器被保证放置在同一个机器上,可以共享资源。一个 Pod 也能包含零个或者更多的的 volume,volume 是对一个容器私有的目录或者可以在 Pod 中的容器间共享。对于用户每个创建的 Pod,系统会找一个健康运转并且有足够的容量的机器,然后开始将相应的容器在那里启动。如果一个容器失败,它会被 Kubernetes 的 node agent 自动重启,这个 node agent 被称作 Kubelet。但是如果 Pod 或者他的机器出故障,它不会被自动转移或者重启,除非用户也定义了一个 Replication Controller。
Pod 的副本集合可以共同组成一整个应用,一个微服务,或者在一个多层应用的一层。一旦 Pod 创建好,系统会持续的监控他们的健康状态,和它们运行时所在的机器的健康状况。如果一个 Pod 因为软件问题或者所在机器故障出现问题,Replication 控制器会自动在健康的机器上创建一个新的 Pod。
Kubernetes 支持一种独特的网络模型。Kubernetes 鼓励用扁平的地址空间,并且不会动态的分配端口,而是采用让用户可以选择任意合适自己的端口。为了实现这点,它给每一个 Pod 分配了一个 IP 地址。
Kubernetes 提供了 Service 的抽象,其提供了一稳定的 IP 地址和 DNS 名字,来对应一组动态的 Pod,例如一组构成一个微服务的 Pod。这个 Pod 组是通过 Label 选择器来定义的,因为可以指定任何的 Pod 组。当一个运行在 Kubernetes Pod 里的容器连接到这个地址时,这个连接会被本地的代理转发(称作 kube proxy)。该代理运行在来源机器上,转发的目的地是一个相应的后端容器,确切的后端是通过 round-robin 的策略进行选择,以均衡负载。kube proxy 也会追踪后端的 Pod 组的动态变化,如当 Pod 被位于新机器上的新的 Pod 取代的时候,因而服务的 IP 和 DNS 名字不用改变。
每一个 Kubernetes 中的资源,如 Pod,都通过一个URI来被识别,并且有一个 UID。URI 中一个总要的组件是,对象的类型(如:Pod),对象的名字,和对象的 namespace(命名空间)。对于一个特定的对象类型,每一个名字在其命名空间都是独一无二的,在一个对象的名字没有带着命名空间的形式给出,那就是默认的命名空间,UID 在时间和空间的范围都是唯一的。
关于 Service 的更多说明:Service 是应用服务的抽象,通过 labels 为应用提供负载均衡和服务发现。匹配 labels 的 Pod IP 和端口列表组成 endpoints,由 kube-proxy 负责将服务 IP 负载均衡到这些 endpoints 上。
每个 Service 都会自动分配一个 cluster IP(仅在集群内部可访问的虚拟地址)和 DNS 名,其他容器可以通过该地址或 DNS 来访问服务,而不需要了解后端容器的运行。
标签:平衡 最小 image sch 工作 轻松 ram def 不同的
原文地址:https://www.cnblogs.com/royzshare/p/9323086.html