云原生容器Clouder认证:容器应用与集群管理—课时7:部署应用及配置网络信息

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 云原生容器Clouder认证:容器应用与集群管理—课时7:部署应用及配置网络信息

在这一步中,我们主要基于ACK Serverless集群进行网站应用的部署,同时准备好网站应用所需的NAS存储资源和数据库资源等。



 

容器组与Pod

小陈:好了,现在已经创建完ACK Serverless集群,接下来就可以开始部署网站应用了吧?

大刘:是的,不过在此之前,先巩固一下理论知识。考考你,我们的网站应用运行在容器里,那怎么来调度容器资源呢?

小陈:之前学Kubernetes的时候有一个Pod的概念,Pod里面包含一组容器,它是Kubernetes调度资源的原子单位。可是……Pod在哪儿呢,好像没看到?

大刘:没错,你看ACK Serverless界面的左侧,有一个标签叫容器组,它就对应Kubernetes中的Pod。

小陈:哦,原来是这样,多谢师傅提醒。

在操作系统中,进程并不是"孤苦伶仃"的运行,而是以进程组的方式、"有原则的"组织在一起运行,一个进程组内的进程可以共享文件和资源。Kubernetes借鉴了操作系统中"进程组" 的概念,并抽象出一个逻辑概念Pod。Pod是一组紧密关联的容器集合,也可以称为容器组Pod是Kubernetes中操作和资源调度的基本单元。为了便于理解,我们可以做个类比,Kubernetes就是一个操作系统,就像Linux;Pod就是一个进程组,就像Linux线程组;容器就是一个进程,就像Linux线程

容器组Pod的组成



在ACK Serverless中部署应用

  1. 创建存储卷,指向之前创建的NAS,同时创建对应的存储声明,提供给容器组(Pod)使用。

ACK Serverless中的存储卷就就对应前面学习过的Kubernetes中的PV(Persistent Volume), PV是一种持久化的存储,独立于集群而存在,与Pod容器组的生命周期无关。

PV不能与Pod直接关联,而是用来和存储对接的,用于绑定后端存储,比如NAS文件系统就是一种常见的后端存储类型,写入PV的数据最终都是存放在后端存储上。Kubernetes通过PVC即存储声明的方式来管理和使用PV存储卷。PVC可以直接被Pod挂载,同时可以绑定PV,从而让Pod使用PV;PVC与挂载它的Pod隶属于同一个命名空间Namespace。下图表示了Pod与PVC、PV的关系。

  1. 在ACK Serverless控制台工作负载无状态标签下,使用镜像创建无状态应用。


【延伸阅读】工作负载 Workload

这里的工作负载就对应前面Kubernetes中工作负载 Workload的概念。工作负载通常有如下几种类型:

  • 无状态(Deployment):表示对Kubernetes集群的一次更新操作,用于运行完全独立、功能相同应用的场景。
  • 有状态(StatefulSet):支持应用部署、扩容、滚动升级时有序进行。如使用有状态来管理使用了持久存储的应用。
  • 任务(Job):它创建出来的Pod只要完成任务就立即退出,用于执行一次性任务。可以使用Job以并行的方式运行多个 Pod。
  • 定时任务(CronJob):它创建的Pod会周期性的执行,用于执行周期性任务。
  • 自定义资源(Custom Resource Definitions,CRD):可以通过CRD添加第三方工作负载资源。

本次任务中采用无状态的工作负载类型来承载网站应用。

a)设置应用基本信息:设置应用名称、副本数量、类型为无状态等。

本次采用无状态工作负载部署应用,选择default的命名空间Namespace。通常,我们会构建开发、测试、准生产、生产等多套应用环境,每套环境中都会创建一个ACK Serverless集群,几套环境中的无状态工作负载、容器组、服务名字都相同,而ACK Serverless集群中要求这些资源名称要唯一。这就需要这些环境创建时,通过命名空间进行资源的有效隔离。

这里的“副本数量”其实就对应Kubernetes里ReplicaSet的副本数,是因为无状态工作负载(Deployment)是通过控制ReplicaSet,来实现对Pod数量的控制。

b)容器配置:设置镜像名称、镜像Tag、所需资源的CPU和内存、新增端口并指定容器端口、数据卷增加云存储声明并指定容器路径;

这里选择的镜像名称,就是我们已经提前准备好的,存放于ACR镜像服务中的WordPress公司网站应用的镜像。

下图增加PVC,这里PVC也是前面准备好的,通过PV绑定了文件存储的挂载点。

c)高级配置:创建服务,类型为负载均衡,外部流量策略为Cluster,设置服务端口并映射到容器端口。这里的服务就对应前面提到过的Kubernetes中的Service。


【延伸阅读】容器集群的访问

Service解决了服务发现和负载均衡的问题,但外部用户直接访问Service并不是最佳的方案,原因如下:

  • Service提供的是IP+端口的访问服务,需要访问对应的NodeIP:Port,对于已经习惯了使用域名的用户不是特别友好。
  • 由于NodePort的访问方式,需要指定Node节点的端口,一旦服务多起来,多个端口难以管理。
  • Service本身也可能被销毁重建,从而使得Service的地址也会发生变化。

为了解决上述问题,这里通过搭建外部负载均衡,并将流量转发到Service上来解决。Service与负载均衡搭配后的访问流程如下:


  1. 完成应用的创建,ACK Serverless将先后完成无状态工作负载和服务的创建。

容器集群的工作(计算)节点

大刘:再问你一个问题,之前学习过,Kubernetes由管理节点和工作节点构成。但你注意到了吗,在刚刚创建ACK Serverless集群以及部署应用的过程中,并没有直接创建工作节点

小陈:是的呢,我也发现了,这是为什么?

大刘:这是因为我们选择了ACK Serverless服务,ACK Serverless是容器服务的Serverless版本,Serverless的优点就是无需购买节点、无需对集群进行节点维护和容量规划,可以直接使用。ACK Serverless会按需、自动的创建好工作节点资源,所以我们不需要手动创建工作节点。

小陈:原来如此,确实方便了很多呀。

我们先来回忆一下工作节点的知识,工作节点是Kubernetes的工作负载节点,主要包含三个组件:kubelet、kube-proxy、Container Runtime。

  • kubelet:负责管理节点上容器的创建、删除、启停等任务,与管理节点通信。
  • kube-proxy:负责Kubernetes服务的通信及负载均衡服务。
  • Container Runtime:负责容器的基础管理服务,接收kubelet组件的指令。

ACK Serverless是容器服务Serverless版,无需购买节点即可直接部署容器应用,无需对集群进行节点维护和容量规划。ACK Serverless通过虚拟节点直接管理ECI,每个ECI对应一个Pod,而不是像自建Kubernetes那样需要采用ECS作为工作节点。ACK Serverless与自建Kubernetes工作节点的架构比较如下:

 

配置网站应用信息

  1. 获取应用访问地址,通过浏览器访问。

  1. 访问应用完成配置:创建数据库账号,给数据库账号赋权,初始化WordPress页面配置,并访问网站管理等。

创建数据库账号,并赋权数据库账号;获取数据库的账号信息,配置到应用配置中;最后,完成网站应用的安装与配置。





练习实验:通过ASK搭建企业级网站应用

 https://developer.aliyun.com/adc/scenario/ace330daa1d7428cacf3225bea3207e2  

相关文章
|
1月前
|
人工智能 缓存 异构计算
云原生AI加速生成式人工智能应用的部署构建
本文探讨了云原生技术背景下,尤其是Kubernetes和容器技术的发展,对模型推理服务带来的挑战与优化策略。文中详细介绍了Knative的弹性扩展机制,包括HPA和CronHPA,以及针对传统弹性扩展“滞后”问题提出的AHPA(高级弹性预测)。此外,文章重点介绍了Fluid项目,它通过分布式缓存优化了模型加载的I/O操作,显著缩短了推理服务的冷启动时间,特别是在处理大规模并发请求时表现出色。通过实际案例,展示了Fluid在vLLM和Qwen模型推理中的应用效果,证明了其在提高模型推理效率和响应速度方面的优势。
云原生AI加速生成式人工智能应用的部署构建
|
27天前
|
XML Java 数据格式
Spring容器Bean之XML配置方式
通过对以上内容的掌握,开发人员可以灵活地使用Spring的XML配置方式来管理应用程序的Bean,提高代码的模块化和可维护性。
63 6
|
2月前
|
持续交付 开发者 Docker
探索容器化技术Docker及其在现代软件开发中的应用
探索容器化技术Docker及其在现代软件开发中的应用
|
1月前
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
55 5
|
1月前
|
开发框架 安全 开发者
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。本文探讨了 Docker 在多平台应用构建与部署中的作用,包括环境一致性、依赖管理、快速构建等优势,以及部署流程和注意事项,展示了 Docker 如何简化开发与部署过程,提高效率和可移植性。
74 4
|
2月前
|
运维 Kubernetes Docker
深入理解容器化技术及其在微服务架构中的应用
深入理解容器化技术及其在微服务架构中的应用
76 1
|
2月前
|
Kubernetes Linux 开发者
深入探索容器化技术——Docker 的实战应用
深入探索容器化技术——Docker 的实战应用
118 0
|
2月前
|
存储 Cloud Native 开发者
深入探索容器化技术——Docker的实战应用
深入探索容器化技术——Docker的实战应用
46 0
|
存储 数据管理 对象存储
云存储Clouder认证:存储应用与数据管理—课时10:实验练习与认证考试
云存储Clouder认证:存储应用与数据管理—课时10:实验练习与认证考试
|
存储 数据管理 文件存储
云存储Clouder认证:存储应用与数据管理—课时9:课程总结与补充
云存储Clouder认证:存储应用与数据管理—课时9:课程总结与补充