AI工程部署(三):K8S【Kubernetes;Docker集群管理工具】【作用:容器管理、服务编排、资源调度、集群管理】

手动docker run创建容器只是个toy,在企业里,往往会使用k8s平台管理容器;

k8s是一个容器管理、服务编排、资源调度、集群管理的工具,由谷歌开源,在国内已成为主流;

我们开发的服务,最终都将运行在k8s上;

AI工程部署(三):K8S【Kubernetes;Docker集群管理工具】【作用:容器管理、服务编排、资源调度、集群管理】_第1张图片

一、K8S集群作用

  • 容器管理:容器的创建、监控、销毁等生命周期管理
  • 服务编排:一个复杂的产品往往是由几十个、甚至几百个微服务协同组成,服务之间的集成、交互等;
  • 资源调度:一个服务需要多少cpu mem、gpu资源,当前服务应该被调度到哪台机器;
  • 集群管理:k8s可以将几十、几百台机器管理起来,屏蔽了机器的概念,可以将集群视为一个巨大的cpu mem gpu资源池

二、K8S集群部署优势

  • 1、故障迁移:当某一个node节点关机或挂掉后,node节点上的服务会自动转移到另一个node节点上,这个过程所有服务不中断。这是docker或普通云主机是不能做到的;
  • 2、资源调度:当node节点上的cpu、内存不够用的时候,可以扩充node节点,新建的pod就会被kube-schedule调度到新扩充的node节点上
  • 3、资源隔离:创建开发、运维、测试三个命名空间,切换上下文后,开发人员就只能看到开发命名空间的所有pod,看不到运维命名空间的pod,这样就不会造成影响,互不干扰
  • 4、快速伸缩容自动负载均衡:资源不够,一行扩容;原生内部负载均衡,多分片不再需要单独配置nginx
  • 5、资源池:集群即资源池,主机透明(不需要知道哪台机器)、机器资源共享(之前的服务部署是机器独占)

三、CI/CD & K8S

CI/CD可以通过流水线中的deploy_stage这一个步骤,将镜像更新到k8s集群,触发服务在集群上的部署;

集群的搭建、k8s的维护,是运维工程师的工作

开发同学要做到:

  • 知道最终服务会运行在k8s上;
  • 会去k8s平台监控服务、排查log;

四、K8S集群配置文件

一个服务(Docker)对应一个deployment文件,deployment文件主要用来:

  • 声明服务名、分片数、镜像版本、端口;
  • 声明调度策略,比如调度到gpu机器;
  • 声明环境变量、资源需求;

一般不需要开发同学自己写,开发提需求就行

AI工程部署(三):K8S【Kubernetes;Docker集群管理工具】【作用:容器管理、服务编排、资源调度、集群管理】_第2张图片

五、dashboard

1、通过k8s提供的dashboard网站,查看所有服务状况;

AI工程部署(三):K8S【Kubernetes;Docker集群管理工具】【作用:容器管理、服务编排、资源调度、集群管理】_第3张图片

2、通过dashboard,查看某个服务的所有pod(容器实例);

AI工程部署(三):K8S【Kubernetes;Docker集群管理工具】【作用:容器管理、服务编排、资源调度、集群管理】_第4张图片
访问整个服务时,k8s会自动对所有pod做负载均衡;

3、通过dashboard,exec到单个pod(容器)里面,排查一些问题;

AI工程部署(三):K8S【Kubernetes;Docker集群管理工具】【作用:容器管理、服务编排、资源调度、集群管理】_第5张图片
集群下只能这么做,因为当前pod被调度到哪台机器,你并不知道;

六、K8S总结

  1. k8s是一个容器管理、服务编排、资源调度、集群管理的工具,由谷歌开源,在国内已成为主流;
  2. 我们开发的服务,最终都将运行在k8s上;
  3. CI/CD可以通过deploy_stage,将镜像更新到k8s集群,触发部署;
  4. 关于k8s,开发同学需要做到:知道最终服务会运行在k8s上、会去k8s平台监控服务排查log;
  5. 演示了deployment的编写以及dashboard上监控服务、排查问题的方法;

你可能感兴趣的:(#,AI/工程部署,kubernetes,docker,容器)