Kubernetes
Kebernetes 简称 K8S,它抽象了硬件资源,将 N 台物理机或云主机抽象成一个资源池,可以很轻易的进行容器的调度。
安装
根据官方文档安装 kubectl
kubectl 是 K8S 提供的命令行工具,使得用户可以在本地对 K8S 集群发送指令
相关概念
K8S 的基本调度单位为 pod,一个 pod 表示一个或者多个容器
之所以没有使用容器作为调度单位,是因为单一的容器没有构成服务的概念;例如 Web 应用做了前后端分例,需要一个 NodeJS 与 Tomcat 才能组成一个完整的服务,这样就需要部署两个容器来实现一个完整的服务,虽然也可以把他们都放到一个容器里,但这显然违反了一个容器即一个进程的核心思想 --《Service Mesh实战 - 用 istio软负载实现服务网格》
kubernetes 资源
介绍最常用的三种 kubernetes 资源
Ingress(入口)
L7 层负载均衡配置,可以根据不同的域名或者路径,转发到不同的 Service 上,Ingress 和 Nginx 很像,在 K8S 中,就可以将 Ingress 当作 Nginx 来用。Ingress 相对于 Nginx 来说,不需要手动写 nginx.confg,也不需要手动重启 Nginx 服务
Service(服务)
由于 pod 是不稳定的,进场停止和重启,所以 pod 暴露的 IP 也是不稳定的,经常发生变化,所以需要一种抽象的资源 Service 来表示 pod 的位置。它是 K8S 内部的服务发现机制,会将 Service 名称写入内部 DNS 记录中。
Deployment
副本控制器,用来维护 pod 的一种机制。通过 Deployment 来指定副本数量,发布策略,记录发布日志并且支持回滚。
在前端的优势
轻量
用 K8S 部署一个小型 Nodejs 应用,内存仅占 40M 左右,将节省大量的资源
监控
由于容器是一个进程,所以对容器的监控可以看作对 Nodejs 进程的监控,可以进行日志收集,性能监控等工作。非侵入性地收集 网络IO、磁盘IO、CPU、MEM 信息等
微服务架构
使用 Docker 让我们在复杂架构中抽象服务的最小单元,K8S 给自动维护大规模集群提供了可能。可以说微服务架构天然适合使用 K8S