1.什么是kubernetes?
kubernetes是一个全新的基于容器技术的分布式架构领先方案。
2.为什么要用kubernetes?
使用kubernetes提供的解决方案能够减少30%的开发成本,并且能够将开发人员的精力更加集中于业务本身,同时可以降低系统的后期运维难度和运维成本。使用kubernetes能够非常轻松的完成横向扩容,以应对突发流量的压力。
3.应用维度的基本概念
pod:kubernetes系统中的基本单元,一个pod部署在一个Node上。一个pod会包含多个容器,必定包含pause容器。
pause:每个pod中都运行一个特殊的pause容器,而pod中的其他容器称为业务容器,业务容器共享pause容器的网络栈和Volume挂载卷(即同一个pod中的容器可以不经过service互相通信)
service:对外提供服务的负载均衡单元,service有其自己的ClusterIP和Service Port,对内连接到具体的pod。pod地址多变,但service创建后地址就不变了,所以外部调用service感知不到内部pod的变化。外部调用service的时候通过虚拟机IP+service的端口进行访问。另外,ClusterIP是属于内部封闭的虚拟地址,不具备TCP/IP通信的基础。
deployment:一种资源对象,用于定义service管理的pod标签及数量等内容,kubernetes会自动根据deployment中的定义对pod进行创建,而无需人工干预。
endpoint:Pod的IP+容器的端口,用于表示一个容器的地址。
label:即标签,每一个资源对象都可以被打上一个标签,用来给资源对象分类,service可以配置selector来对标签进行选择。支持in语法,使用","表示AND的关系。
4.集群维度的基本概念
Master:每个kubernetes集群都需要一个或一组被称为Master的节点,来负责整个集群的管理和控制。如果Master发生宕机或者不可用,那么对集群内容器应用的管理都将无法实施。通常为了保证Master的高可用,会部署至少三台服务器。
Node:除了Master外的其他服务器,都称为Node,和Master一样,Node可以是一台物理主机,也可以是一台虚拟机。
NameSpace:即命名空间,很多情况下用于实现多租户的资源隔离,不同命名空间的资源互相不可见,每个Kubernetes集群创建完成后会创建两个命名空间,一个default和一个kube-system,用户创建的资源对象如果不指定命名空间就会放在default中,而kube-system存放的是系统资源。
5.外网如何访问Kubernetes?
Node是属于物理层面的概念,所以外网通过NodeIp及配置在service的端口号对Kubernetes进行访问。
6.其他资源对象
StatefulSet:deployment是无状态集群的建模,而StatefulSet是有状态集群的建模。
Job:批处理应用的建模。