容器化应用:把一个应用程序放在 docker 里部署,这个 docker 应用就是容器化应用,在 docker 中我们通过启动镜像部署容器化应用。
如何在 k8s 中部署容器化应用:
获取镜像:编写 Dockerfile 制作镜像,或者从仓库拉取镜像
控制器创建 pod:控制器启动镜像,创建容器并将容器放入 pod 中
暴露应用,使外界可以访问应用
DashBoard概念
DashBoard 是 k8s 的可视化管理工具,可以基于 web 对 k8s 集群进行集中管理。
Ingress
资源清单中有三个端口:
nodePort:外部访问的端口
port:集群内部通信的端口
targetPort:容器中服务的端口
Ingress 的优点
NodePort 方式最大的缺点是每个 service 都要暴露端口,在部署微服务时会暴露大量端口加大管理难度,所以在生产环境中不推荐使用这种方式来直接发布服务。
使用 LoadBalancer 暴露服务可以解决端口过多的问题,但 LoadBlancer 需要向云平台申请负载均衡器,与云平台的耦合度太高,相当于购买了服务。
而 Ingress 相当于是服务网关,可以通过 URL 路径代理 service,只需要暴露一个端口就可以满足所有 service 对外服务的需求,生产环境建议使用这种方式。
Helm概念
k8s 上的 deployment、service 等应用对象,都是由资源清单部署的。对于一个复杂的应用,会有很多类似的资源清单文件。例如微服务架构应用,组成应用的服务可能多达几十个。如果有更新或回滚应用的需求,可能要修改维护大量 yml 文件。
Helm 是一个 k8s 的应用管理工具,可以很方便的通过管理 yaml 文件来部署应用,更新应用版本。目前 Heml 的 V3 版本发布,极大简化了之前繁琐的使用方式。
Helm 中有 3 个重要概念:
helm:命令行客户端工具,能够进行 chart 的创建,项目打包、发布和管理。
chart:应用描述,一系列用于描述 k8s 资源相关文件的集合。
release:基于 chart 部署的资源,chart 被 helm 运行后将会生成对应release。