最近,公司进行了个ks8培训,参加了,记录一下学习的知识点。
背景:
k8s是一个容器编排工具,将组成应用程序的容器组合成逻辑单元 便于管理和服务发现。
知识总结:
pod是k8s中最小的工作单位和管理资源,但是都是通过部署Deployment来部署pod。
一个pod中可以有多个contain。Deployment、pod、contain三者之间的关系,可以以工厂来进行比喻,deployment是车间主任,pod是车间,contain是车间里的工人,namespace是工厂。
在k8s中部署容器的时候,需要获取镜像,进行中的entrypoint对应的k8s中的command、cmd对应k8s中的args。command是容器运行的时候的执行的命令,args是执行的时候的参数。这个场景多用于容器的调试,注意是容器的调试,是用来调试比如网络是否通,文件是否存在等错误。通常在使用的时候使用的是command /bin/sh ,或者args中有sleep这个参数,就会覆盖掉dockerfile中原来的entrypoint和cmd中的内容,以一种新的方式启动容器。
多容器,一个pod内的容器是共享网络和文件资源的。通常一个dockerfile中的工具是最少的满足容器运行的资源,比如日志、性能检测等工具就没有。这个时候就可以使用多容器挂载的方式,实现日志的输出、性能的检测等。同时,可能连ping这类工具也没有,使用挂载的方式可以实现ping工具的安装,测试网络的通畅性。
初始化容器,在构建主容器之前先构建,通常用来检测运行主容器需要的资源是否存在,比如,要运行一个项目,要使用到mysql,就可以在初始化容器中检测有无mysql,只有当部署好mysql之后,主容器才会启动;再比如输出文件到特定的文件夹,但是这个文件夹没有创建,这个时候就可以通过初始化容器的方式将所需的文件夹创建出来,实现对应的操作。