开源项目ChatGPT-Next-Web的容器化部署(三)-- k8s deployment.yaml部署

news2024/9/21 23:39:51

一、说在前面的话

有了docker镜像,要把一个项目部署到K8S里,主要就是编写deployment.yaml。

你需要考虑的是:

  • 环境变量
  • 服务的健康检测
  • 持久化
  • 启动命令
  • 程序使用的数据源
  • 程序使用的配置文件

因为本前端项目比较简单,这里只做一个简单示例。

二、deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: '2'
  labels:
    app: chatgpt-next-web
  name: chatgpt-next-web
  namespace: web-service
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: chatgpt-next-web
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: chatgpt-next-web
    spec:
      containers:
        - image: xxx-harbor-registry-vpc.cn-hangzhou.cr.aliyuncs.com/xxx/chatgpt-next:1.0.4
          imagePullPolicy: Always
          name: chatgpt-next-web
          env:
            - name: TZ
              value: Asia/Shanghai
            - name: PORT
              value: 5173
          resources:
            limits:
              cpu: 2
              memory: 2Gi
            requests:
              cpu: 200m
              memory: 1.8Gi
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          volumeMounts:
            - mountPath: /etc/localtime
              name: volume-localtime
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
      volumes:
        - hostPath:
            path: /etc/localtime
            type: ''
          name: volume-localtime

这里定义了环境变量PORT,指定容器监听的端口号,默认是3000。

三、启动命令

你可以在deployment.yaml中指定command,那样的话,会覆盖docker容器本身的CMD。
比如:

      containers:
        - image: xxx-harbor-registry-vpc.cn-hangzhou.cr.aliyuncs.com/xxx/chatgpt-next:1.0.4
          name: chatgpt-next-web
		  command:
		    - node
		    - server.js

因为我们的Dockerfile已定义CMD,所以这里无需定义command。

这里说下,我踩过的一个坑,定义了一个错误的command,导致pod容器没有启动进程。

当时的错误写法见下:
在这里插入图片描述

四、总结

至此,开源项目ChatGPT-Next-Web的容器化部署至k8s就梳理完毕了。

作为一个nodejs后端程序,它不同于h5静态页面,类似于java程序,但又没有java复杂。

另外,每个Nodejs程序的Dockerfile可能都不一样,但是java程序就又相对一致了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1536920.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

重学SpringBoot3-Profiles介绍

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-Profiles介绍 Profiles简介如何在Spring Boot中使用Profiles定义Profiles激活ProfilesIDEA设置active profile使用Profile-specific配置文件 条件化Bean…

Python爬虫案例-爬取主题图片(可以选择自己喜欢的主题)

2024年了,你需要网络资源不能还自己再慢慢找吧? 跟着博主一块学习如何利用爬虫获取资源,从茫茫大海中寻找那个她到再妹子群中找妹子,闭着眼睛都可以找到合适的那种。文章有完整示例代码,拿过来就可以用,欢迎…

就业班 第二阶段 2401--3.18 day1 初识mysql

初识: 1、关系型数据库mysql、mariadb、sqlite 二维关系模型 2、非关系型数据库 redis、memcached sql 四个部分 DDL 数据库定义语言 创建数据库,创建用户,创建表 DML 数据库操作语言 增删改 DQL 数据库查询语言 查 DCL 数据库控制语言 授权 …

Pake一键打包,轻松构建桌面级应用!

Pake:顷刻之间,智能封装——WEB到桌面瞬间联通,让网站应用像搭积木般部署 - 精选真开源,释放新价值。 概览 Pake,作为一款新颖且极具创新性的桌面应用开发框架,凭借其独特的技术路径和高效的实现方式&…

时代教育期刊投稿发表

《时代教育》是由成都传媒集团主管主办,中华人民共和国新闻出版总署批准国内公开出版发行的专业教育类期刊,主要刊登各类高等院校、职业技术学校、中小学教师及研究生、教育科研工作者的教育实践研究成果;教育教学行业的最新动态;…

基于SSM+Jsp+Mysql的KTV点歌系统

基于SSMJspMysql的KTV点歌系统 基于SSMJspMysql的KTV点歌系统的设计与实现 开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工…

jvm提供的远程调试 简单使用

JVM自带远程调试功能 JVM远程调试,其实是两个虚拟机之间,通过socket通信,达到远程调试的目的; 前提 确保本地和远程的网络是开通的; 本地操作 远程操作 在启动命令参数中 把上面的内容复制进去

第 6 章 ROS-URDF练习(自学二刷笔记)

重要参考: 课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ 讲义链接:Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 6.3.4 URDF练习 需求描述: 创建一个四轮圆柱状机器人模型,机器人参数如下,底盘为圆柱…

NIVision-相机图像采集

应用场景 上位机与工业相机通讯,控制相机抓取图像。 工业相机的通讯接口大多为USB口或网口。 USB口则直接将通讯线缆插入上位机USB端口,打开MAX中设备与接口一栏可以看到电脑给相机分配的资源名称;网口则需要将网线连接相机和上位机&#xf…

【数据库】SQL Server 2008 R2 安装过程

启动安装程序,点击setup,进入【SQLServer安装中心】 点击界面左侧的【安装】,然后点击右侧的【全新SQLServer独立安装或向现有安装添加功能】,进入【SQLServer2008R2安装程序】界面,如下图所示: 进入【安装…

浅谈Postman与Jmeter的区别、用法

前阶段做了一个小调查,发现软件测试行业做功能测试和接口测试的人相对比较多。在测试工作中,有高手,自然也会有小白,但有一点我们无法否认,就是每一个高手都是从小白开始的,所以今天我们就来谈谈一大部分人…

师徒互电,眼冒金星,采集系统变电刺激系统!

原文来自微信公众号:工程师看海,很高兴分享我的原创文章,喜欢和支持我的工程师,一定记得给我点赞、收藏、分享哟。 加微信[chunhou0820]与作者进群沟通交流 电的我眼冒金星,以为自己被三体召唤,整个世界为我…

预测一下,GPT-5 会在什么时候发布,又会有哪些更新?

发布预期:GPT-5预计将于11月发布,可能与ChatGPT发布两周年同期。竞争态势:谷歌的Gemini与GPT-4 turbo已展开竞争。逐步发布:GPT-5可能通过模型训练过程中的中间检查点逐步发布。训练与安全测试:实际训练可能需3个月&am…

【Java前端技术栈】Vue2、Vue Cli、Axio入门

一、基本介绍 1.Vue 是什么? Vue (读音 /vjuː/,类似于 view) 是一个前端框架, 易于构建用户界面 2. Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或项目整合 3. 支持和其它类库结合使用 4. 开发复杂的单页应用非常方便 5.…

【隐私计算实训营003详解隐私计算框架及技术要点】

1. 隐语架构一览 1.1 隐语架构 隐语架构通常指的是一种面向隐私保护计算的软件框架或解决方案,它采用了密码学、可信执行环境(TEE)、多方安全计算(MPC)等多种隐私保护技术来实现在数据加密状态下进行计算,…

咖啡饮品抖音品牌打造流量运营规划方案PPT

【干货资料持续更新,以防走丢】 咖啡饮品抖音品牌打造流量运营规划方案PPT 部分资料预览 资料部分是网络整理,仅供学习参考。 PPT可编辑共50页(完整资料包含以下内容) 目录 抖音品牌打造方案 社交话题引领,内容共创…

一、SpringBoot3 介绍

本章概要 SpringBoot3 简介系统要求快速入门入门总结 1.1 SpringBoot3 简介 此处使用 SpringBoot 版本:3.0.5 https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html 无论使用XML、注解、Java配置类还是他们的混合用法&#xff0…

unity3d——沙盒路径

文章目录 Unity3D中不同平台的沙盒路径: 示例 在Unity3D中,尤其是在移动平台如Android和iOS上,由于系统安全机制,应用程序不能直接访问操作系统的所有文件和目录,而是被限制在一个特定的“沙盒”环境中。这个沙盒是一个…

elementUI Tree 树形控件单选实现

文章目录 展示效果代码实现elementui Tree树形控件其他详细数据 在Element UI中,树形控件(el-tree)本身不支持单选功能。但是,你可以通过监听节点点击事件并手动更新选中状态来实现单选树。 以下是一个简单的例子,展示…

docker入门(八)—— dockerfile详细介绍,编写dockerfile

dockerfile(重点) 大家想想,Nginx,tomcat,mysql 这些镜像都是哪里来的?官方能写,我们不能写吗? 我们要研究自己如何做一个镜像,而且我们写的微服务项目打包上云部署&am…