Kubernetes核心概念理解
1. Kubernetes概念
Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展。如果你曾经用过Docker容器技术部署容器,那么能够将Docker看成Kubernetes内部使用的低级别组件。Kubernetes不仅仅支持Docker,还支持Rocket,这是另一种容器技术。
Kubernetes的使用优点:
1、随时扩展或收缩容器规模
2、很容易地升级应用程序容器的新版本
3、将容器组织成组,并且提供容器间的负载均衡
4、自动化容器的部署和复制
5、提供容器弹性,如果容器失效就替换它,等等……
实际上,使用Kubernetes只需一个部署文件,使用一条命令就可以部署多层容器(前端,后台等)的完整集群。
kubectl是和Kubernetes API交互的命令行程序。下面介绍一些核心概念。
2. 集群的概念
集群是一组节点,这些节点可以是物理服务器或者虚拟机,之上安装了Kubernetes平台。下图展示这样的集群,注意该图为了强调核心概念有所简化,这里可以看到一个典型的Kubernetes架构图,如下图所示。
上图可以看到如下组件,使用特别的图标Service(服务)和Label:
还有Pod、Container(容器)、Label(标签)、Replication Controller(复制控制器)、Service(服务)、Node(节点)、Kubernetes Master(Kubernetes主节点)
Pod安排在节点上,包含一组容器和卷。同一个Pod里的容器共享同一个网络命名空间,可以使用localhost互相通信。Pod是短暂的,不是持续性实体。
问:由于Pod是短暂的,怎样才能持久化容器数据使其能够跨重启而存在?
答:Kubernetes支持卷的概念,因此可以使用持久化的卷类型。
问:是否手动创建Pod,如果想要创建同一个容器的多份拷贝,需要一个个分别创建出来么?
答:可以手动创建单个Pod,但是也可以使用Replication Controller使用Pod模版创建出多份拷贝。
问:如果Pod是短暂的,那么重启时IP地址可能会改变,怎样才能从前端容器正确可靠地指向后台容器呢?
答:可以使用Service。