* 原始文章地址可能暂时无法访问,仅展示文章的摘要信息

k8s部署django+uwsgi」的摘要信息

实现的功能 主要实现的功能是部署通过django web框架编写的web应用。 但因为django web框架无法直接接收来自客户端的http请求信息, 也无法直接向客户端发送http请求信息, 因此需要一个通过WSGI协议实现的web服务器来转发请求。 django虽然自带一个web服务器, 但它效率不高且没有多少安全保护措施, 只适合在测试环境中使用。 因此需要自己部署一个web服务器, 在这里我选择使用uwsgi服务器。 整体结构设置 这次部署的重点是对uwsgi+django镜像的打包。 创建一个可以运行django和uwsgi两个进程的container。 (这里并没有违反docker实践指南中一个container中运行一个进程的要求, django进程是作为uwsgi的子进程在container中进行运行的。) 在这里我将编写的django web框架文件作为镜像的一部分进行打包, 而不是创建pvc或者mapConfig然后将文件挂在上面。 因为当更新编写的django web框架文件后, uwsgi进程并不能直接更新到更新后的web应用, 需要通过restart或着reload后才能获得更新。 当拥有多了pod的时候操作起来会很麻烦, 而且会有服务中断期。 但如果通过image进行更新, k8s拥有成熟的更新流程, 可以没有中断期的进行更新。 而且如果更新的pod存在问题, 会自动回退到稳定的版本。 在集群中需要创建的资源并不多, 只需要一个用来管理包含上述container的Pod的Deployment 和一个类型为ClusterIP的service。 但因为我django使用的数据库是postgres, 所以在进行django和uwsgi的部署前需要先将postgres部署完毕才行。 关于如何部署postgres可以看我以前写的教程。 部署前提 想要进行...