K8s核心概念入门

前言

新的一年仍是要学习一些新技术的,先从k8s开始吧。 做为一个想成为“微服务技术专家”,除了上层类spring cloud的解决方案,服务治理方案以外,k8s做为底层基础设施,所承担的自动扩缩容,devops等功能也是微服务架构中很重要的一环。前端

k8s

k8s做为容器化操做系统,包括了部署,调度,节点集群间扩展。docker做为k8s底层的调度组件。主要具有:node

  • 自动化容器的部署和复制
  • 随时扩展或收缩容器部署
  • 打包容器组,并提供容器间的负载均衡
  • 提供容器弹性操做等

k8s集群

k8s的集群,通常以一组物理节点或虚拟机节点组成,在节点上部署k8s,架构图以下: spring

经过上图能够观察到一些名词:docker

  • Container
  • Pod
  • Label
  • Replication Controller
  • Service
  • Node
  • K8s Master

Pod

Pod安装在节点上,包含一组容器和卷,同一个Pod里面的容器共享网络命名空间,可使用localhost进行通讯。pod是随时建立销毁的。api

  • 由于pod是短暂的,因此须要使用k8s的挂载卷存储持久化容器数据。
  • pod的建立能够经过手动建立,也可使用replication controller根据pod模板建立出拷贝。
  • 引入service解决由于pod建立销毁带来的ip地址改变的问题。

Label

Label是一个键值对,能够用来标记pod,service或者replication controller能够经过selectors选择带有指定label的pod。网络

Replication Controller

经过RC能够确保任什么时候间都存在指定数量的pod副本。好比建立3个副本,k8s会监控他们,随时确保永远有3个副本在运行。架构

建立RC时,须要指定两个东西:负载均衡

  • Pod模板:用来建立Pod副本。
  • Label:RC须要监控的Pod的副本集。

Service

多个Pod副本能够经过Service作负载均衡。微服务

因为Pod的IP是短暂的,因此引入了Service,Service是个逻辑概念,Service经过selector筛选label和Pod进行绑定。学习

在Service对pod进行绑定时会作如下事情:

  • 为Service建立一个DNS入口,前端Pod会根据DNS查找service并解析出ip地址。
  • 前端pod在获得service的ip地址后,会根据service的负载均衡策略,请求到具体的pod上,底层经过node上的kube-proxy完成。

Node

Node叫作节点,通常是物理机或者虚拟机,是k8s的工做节点,node上有k8s相关的关键组件:

  • Kubelet:主节点代理
  • Kube-proxy:Serivce使用其路由到Pod
  • Docker:用于容器建立

K8s Master

Master是集群的主节点,拥有K8s api server,能够对外提供rest交互,master节点能够用来建立和复制pod的RC。