新的一年还是要学习一些新技术的,先从k8s开始吧。 作为一个想成为“微服务技术专家”,除了上层类spring cloud的解决方案,服务治理方案之外,k8s作为底层基础设施,所承担的自动扩缩容,devops等功能也是微服务架构中很重要的一环。
k8s作为容器化操作系统,包括了部署,调度,节点集群间扩展。docker作为k8s底层的调度组件。主要具备:
k8s的集群,一般以一组物理节点或虚拟机节点组成,在节点上部署k8s,架构图如下:
通过上图可以观察到一些名词:
Pod安装在节点上,包含一组容器和卷,同一个Pod里面的容器共享网络命名空间,可以使用localhost进行通信。pod是随时创建销毁的。
Label是一个键值对,可以用来标记pod,service或者replication controller可以通过selectors选择带有指定label的pod。
通过RC可以确保任何时间都存在指定数量的pod副本。比如创建3个副本,k8s会监控他们,随时确保永远有3个副本在运行。
创建RC时,需要指定两个东西:
多个Pod副本可以通过Service做负载均衡。
由于Pod的IP是短暂的,所以引入了Service,Service是个逻辑概念,Service通过selector筛选label和Pod进行绑定。
在Service对pod进行绑定时会做以下事情:
Node叫做节点,一般是物理机或者虚拟机,是k8s的工作节点,node上有k8s相关的关键组件:
Master是集群的主节点,拥有K8s api server,可以对外提供rest交互,master节点可以用来创建和复制pod的RC。