这是我准备做的k8s课程的第一篇,我希望能用最快的速度让大家学会这个东西,然后投入到工作中,而且还要很有深度,而且还要让大家一看就懂。
接触过docker容器的同学知道,容器就是你部署一个,它就运行一个。但是有时候会遇到这种问题,列如说我写了一个聊天程序,然后把它部署在linux主机上,开始的时候业务不多,只有几百人操作。但是后面业务好了,人越来越多,这个程序连接的人也越多,它扛不住了。

怎么办呢?如果我们用容器部署这个程序,就会想,既然一个容器不够,我就多开几个。但是,大家注意到,这是手工来做的,你咋知道啥时候人多啥时候人少呢?难道说每天还要一个人守着吗?

这就是容器的一个问题,简单说就是它不灵活。如果我们能定一条规则,列如CPU达到70%的时候,它就自动加容器,低于某个阀值就减容器到某个数值。这样我们就不用守着了。
k8s能实现这个想法,它能动态的调整容器和编排容器。目前,我们大致知道k8s是什么了。
在docker的课程中我们知道,docker daemon是守护进程,它就像一个酒店的前台一样,只是招待客人,而真正干活的是幕后的containerd。大家想想,k8s会干活吗?
答案是,k8s什么都不干。它怎么会开启容器然后关闭容器呢?就好比一个老板什么时候会到后厨炒菜呢?k8s的主要工作就是指挥,但是至于做什么,由客户也就是我们来告知它。
客户告知它来做什么,也不是随意就可以。k8s说,如果你要告知我做什么,就发个”清单“给我,而且按照我指定的格式。

如图所示,客户要和k8s打交道,就得传一张张的类似于”纸“的清单文件给它,也就是说交流全靠“纸”。k8s看了这个文件的要求之后,然后调动它的下属去办这些事情。
真正搬砖的就是链条后面的容器运行时,它来负责启动和关闭容器,而它是根据k8s的调度来做这些。
目前我们了解了k8s的运作原理,就是交流靠”纸“,你想让它做什么,就把这张纸告知它。这些纸被k8s执行之后,就会生成资源对象。
#这个无头service匹配了my-go-server的POD,也就是用已经部署好的POD做为实验例子
apiVersion: v1
kind: Service
metadata:
name: worker-service
spec:
selector:
app: my-go-server # 匹配所有 worker Pod
ports:
- port: 8080
targetPort: 8080
clusterIP: None # 关键:设置为无头 Service(没有 ClusterIP)下面我们说下这个是什么意思:
第一,这是一个yaml文件,也就是我们所说的“纸”,也就是一个配置。我们把这个纸传给k8s,它来解读,然后再执行。这么看反而很简单。
我们这张纸,是想让k8s创建一个services,也就是服务。什么是服务呢?
通俗的说就是怎样能让外部访问容器集群内部,下面是这个过程:

后面我们会一步步的把这个图讲解清楚。
这篇给大家讲了一下k8s是什么,它是怎么运作的,实则已经成功50%了。后面我们一步步深度解析。