主旨
要上手k8s,那么他的核心概念是重中之重,否则的话云里雾里的,连概念都不清楚,学的也是一团乱麻,我们先来梳理下,不要着急,心急吃不了热豆腐。
慢慢来
每一步都会引入图片,一步一步来看,到底每一个概念对于整个k8s服务,有什么影响。
Container
container 是一个容器,因为docker的底层就是container,每个容器底层是一个镜像,比如说我们通过“ywj-image:v1”镜像,运行了一个容器,如下图:
POD:pod是k8s中的一个概念,一个pod里面呢,可以有一个或者多个容器,有什么特征呢?
一个pod里面所有的容器运行在一台服务器上
一个pod里面所有的容器,共享网络
有一个唯一的IP地址
必须有一个特定的容器:pause,且该容器有一个固定的镜像,这个pause相当于根容器,将一个pod里面的所有container连到一块儿来
负责整个pod的健康检查并上报给k8s,比如或你的项目中有两个或者多个服务的联系非常紧密,这个时候我们就可以选择把他们放到同一个pod里面来
根据以上的信息,我们引出下图:
RS
RS,全称ReplicaSet,副本集,就是指运行多个pod,如果一旦某个pod出现异常,我们可以有另一个pod来持续对外提供服务,如下图:
Deployment
deployment顾名思义,就是部署,那么我们如果部署上去如何更新呢,这个时候我们就需要用到它了,比如哈,我们已经部署了如上图的服务,这个时候我们想更新“ywj-image:v1”的镜像版本到“ywj-image:v2”,是怎么回事儿呢?
首先,会再新建一个RS,并启动一个POD,这个时候新的POD里面的容器的镜像,就是新的镜像了,相当于有了3个容器,如下图:
这个时候,当新RS的新POD,健康检查通过之后,deployment会控制原来的RS,删除一个POD,如下图:
这个时候我们实际上运行了一个原版本的pod,一个新版本的pod,然后deployment会再次控制新RS,再启动一个pod,如下图:
从图中是不是可以看到,实际上运行了一个老版本的pod和两个新pod呢,确实如此哈,这个时候当新版本的pod再次经过健康检查之后,deployment就会将原RS下剩下的一个pod删除,并删除原RS,这个时候我们就相当于更新完成了,如下图:
说明下哈,我们在k8s中实际中操作的就是deployment哈,像那些pod和centainer都不需要我们人工去干预。
Service
Service,顾名思义就是服务,服务是通过标签来进行控制的,k8s中很多东西都可以打标签,比如pod,rs等都可以,如下图:
且service对外暴露是通过clusterIP进行的,client客户端就是通过该IP来进行调用的,图示如下:
至此,k8s中最重要的核心概念,结束。后面我们将由浅入深的进行介绍k8s,期待你的关注哦。
运维家
早上9点9分,更新有关于linux和python的内容,我希望关注我的老板们每天都能有收获,都能有进步。也欢迎各位老板后台留言改进的内容,或者想看的内容。
47篇原创内容
Official Account