Kubernetes101 入门
Kubernetes正在迅速成为部署和管理Cloud Native(云原生)的一个新标准。如果是作为一个新手的话来尝试理解臃肿的官方文档是比较痛苦的一件事。Kubernetes的组件也比较多,这边文章主要提供Kubernetes的一些重要组件的简化视图以及用途概述
硬件方面
Node - 节点
Node节点是Kubernetes中计算硬件的最小单位。 可以简单理解节点是机房中的物理机,或托管在云服务器(例如阿里云)上的虚拟机。 更为抽象的形容可以理解节点是一组可用的CPU和RAM资源。
Cluster - 集群
Cluster集群可以视作几个节点组合在一起工作的一个群体。Kubernetes将各个节点上的资源汇集起来形成一个更为强大的机器,所以实际工作中,某个单一节点出现故障的话,集群也可以自动平衡工作,来保证整个程序还是能正常运行的。
Persistent Volumes - 持久卷
PV在Kuberenetes管理下运行的程序无法保证在特定节点上运行,因此无法将程序运行下的数据保存到固定的位置。虽然数据可以暂时保留在运行的容器中,但是这些数据会随着容器消失而消失。那么我们怎么才能永久保存数据在固定的位置上呢?Kubernetes使用一种叫持久卷来保存永久数据,这个持久卷其实可以直接理解为外接硬盘即机械硬盘,固态硬盘这种设备,通过挂载到节点集群的文件系统。这个硬盘设备可以在机房,也可以是云服务提供商的储存服务
软件方面
Container - 容器
Container容器即指用Docker镜像生成的容器。如果不理解容器的话可以自行百度,这篇文章就不具体描述什么是容器了
Pod
PodKuberenetes不是直接运行容器的,而是将一个或者多个容器包装到一个叫Pod(吊舱)的结构中。在Pod中的容器可以共享资源和网络,也能很容易的跟Pod中另外的容器进行通信。
Pod在Kuberenets作为一个副本单位存在,当单个Pod承载量过高时,Kuberenetes可以根据配置来自动部署Pod副本到集群。虽然Pod内可以编排多个容器,但是官方上不建议这么做,因为添加Pod副本时内部的容器也同时会增加,为了避免浪费不必要的资源,比较合理的方法是每个Pod中编排一个容器。
Deployment - 部署
Deployment当在系统中有很多Pods时,管理和部署Pods就会比较麻烦。Kuberenetes提供了另外一个抽象层来进行管理:‘部署’。
这个‘部署’的主要目的是声明一次应该运行一个pod的副本数量和需要的资源。并且监视副本中pods的运行情况,如果其中某些pods挂了,则会自动销毁然后重新创建pods。有了‘部署’的话就不需要手动管理每个pod了,只需要声明系统需要的状态,然后kuberenetes会自动帮你管理。
Ingress - 入口
Ingress在默认的Kuberenetes环境下,Pod是与外部网络隔离的,如果要与pod进行通信的话需要打开一个通信通道。Kuberenetes提供很多种不同的通信通道类型,比较常用的通信通道是Ingress - 入口 和 LoadBalancer - 负载均衡