Kubernetes中的大部分概念,如Node、Pod、Replication Controller、Service等都可以看作一种资源对象,而它们都可以通过kubectl或API编程调用,进而执行增删改查操作,并将状态保存在etcd。

我们可以将kubernetes看作高度自动化的资源控制系统,它通过跟踪对比etcd库里保存的“资源期望状态”与当前环境的“世纪资源状态”的差异实现自动控制和自动纠错的高级功能。

Service

在Kubernetes中,Service是分布式集群架构的核心。一个Service对象的关键特征包括:

  • 唯一指定的名字

  • 一个虚拟IP(ClusterIP、Service IP或VIP)和端口号

  • 提供某种远程服务能力

  • 将服务映射到一组容器应用

Service的服务进程目前都是基于Socket通信方式对外提供服务。通常一个Service需要多个相关服务进程提供服务,而每个服务进程都有一个独立的Endpoint(IP+Port),kubernetes能够通过Service(虚拟ClusterIP+Service Port)连接到指定的Service。

这样,就不必关心后端到底有多少服务进程,发生故障如何处理。当Service创建后,服务的IP地址就不会改变。

同时,Kubernetes通过Pod对象将为Service提供服务的进程封装到容器进行隔离。

为了建立Service与Pod之间的关联,kubernetes会为每个Pod贴上标签,然后给相应的Service定义标签选择器(Label Selector)。

Pod

Pod运行在节点(Node)中,节点可以是物理机,也可以是虚拟机。

每个Pod里运行一个特殊的称为Pause的容器,其他容器为业务容器。

业务容器共享Pause容器的网络栈和Volume挂载卷。

并不是每个Pod和它里面运行的容器都会映射到一个Service,只有提供服务的一组Pod才会映射到服务。

集群

kubernetes将集群中的机器划分为一个Master节点和一群工作节点(Node)。

Master节点运行着与集群管理相关的进程如kube-apiserver、kube-controller-manager、kube-scheduler,从而实现整个集群的资源管理、Pod调度、弹性伸缩、安全控制、系统监控和纠错等管理功能。

Node作为集群的工作节点,运行真正的应用程序,包括kubelet、kube-proxy服务进程,负责Pod的创建、启动、监控、重启、销毁,以及实现软件模式的负载均衡器。

扩容与升级

在Kubernetes中只需要为扩容的Service关联的Pod创建一个Replication Controller(简称RC)即可。

在一个RC定义文件中包括:

  • 目标Pod定义

  • 目标Pod需要运行的副本数量(Replicas)

  • 要监控的目标Pod的标签(Label)

results matching ""

    No results matching ""