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

一、说在前面的话

有了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.mfbz.cn/a/480320.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

cool-admin-node.js 中redis缓存的使用

1. 在做cool 后端的时候 用户登录 时的token 需要鉴权的value 以及发送验证码 这些 需要存到缓存里面 ,进行逻辑鉴权 所以我们需要用到redis 缓存 或者数据库缓存 我这里介绍一下redis 的缓存 在cool-admin 中 使用的一般都是宝塔面板 首先得有服务器 需要有自己的…

Kubernetes自动化配置部署

在新建工程中,使用k8s的devops服务,自动化部署项目 1、在搭建好k8s的集群中,确认已开启devops服务; 2、新建Maven项目之后,创建dockerfile、deploy和Jenkins文件 例如: Dockerfile FROM bairong.k8s.m…

LeetCode 79 单词搜索

题目描述 单词搜索 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是…

吴恩达机器学习笔记 二十六 决策树学习过程 独热编码one-hot

决策树的学习过程 1. 所有样本都在根结点 2.计算所有可能的特征的信息增益,选择信息增益最大的那个 3.根据选择的特征分离数据集,创造左右两支子树 4.继续进行分裂直到达到停止标准。停止标准有:一个节点只有一类样本;分裂一…

【DataWhale学习】用免费GPU线上跑chatGLM、SD项目实践

用免费GPU线上跑chatGLM、SD项目实践 ​ DataWhale组织了一个线上白嫖GPU跑chatGLM与SD的项目活动,我很感兴趣就参加啦。之前就对chatGLM有所耳闻,是去年清华联合发布的开源大语言模型,可以用来打造个人知识库什么的,一直没有尝试…

案例精选 | 新疆科技学院下一代智慧安全运营中心建设项目

新疆科技学院,是新疆维吾尔自治区人民政府举办的全日制普通本科高校。学校始建于2002年,前身为新疆财经大学商务学院,2019年12月经教育部批准转设为新疆科技学院。学校分为东、西两个校区,总占地面积3070亩,开设24个本…

蓝桥杯 2022 省B 积木画

这是个典型的动态规划问题,重点在于找到他的递推方程。 可简单算出填满第0 1 2 3 4列个数为0 1 2 5 11; 运气好点,找到递推公式dp[i]2*dp[i-1]dp[i-3]; 直接解决了。 但我们还是按照动态规划一步一步来。 思路分析: 状态定义&a…

雅博书城在线系统|基于SSM框架+ Mysql+Java+ Tomcat的雅博书城在线系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java,ssm,springboot的平台设计与实现项目系统开发资源(可…

YOLOv5-Y5周:yolo.py文件解读

本文为🔗365天深度学习训练营 中的学习记录博客 原作者:K同学啊|接辅导、项目定制 我的环境: 1.语言:python3.7 2.编译器:pycharm 3.深度学习框架Tensorflow/Pytorch 1.8.0cu111 一、代码解读 import argparse i…

【C++】1599. 米老鼠偷糖果

问题:1599. 米老鼠偷糖果 类型:基本运算、整数运算 题目描述: 米老鼠发现了厨房放了 n 颗糖果,它一次可以背走 a 颗,请问米老鼠背了 x 次之后还剩多少颗?(假设 x 次之后一定有糖果剩下&#x…

pytorch多层感知机

目录 1. 多层感知机2. 多层感知机loss梯度推导3. pytorch示例 1. 多层感知机 有多个输入节点、多个中间节点和多个输出节点 2. 多层感知机loss梯度推导 3. pytorch示例

从0到1实现RPC | 02 RpcConsumer的远程调用

一、RPC的简化版原理如下图(核心是代理机制)。 1.本地代理存根: Stub 2.本地序列化反序列化 3.网络通信 4.远程序列化反序列化 5.远程服务存根: Skeleton 6.调用实际业务服务 7.原路返回服务结果 8.返回给本地调用方 二、新建一个模块rpc-demo-c…

【Qt】使用Qt实现Web服务器(六):QtWebApp用户名密码登录

1、示例 1)演示 2)登录 3)显示 2、源码 示例源码Demo1->LoginController void LoginController::service(HttpRequest& request, HttpResponse& response) {

公司内部局域网怎么适用飞书?

随着数字化办公的普及,企业对于内部沟通和文件传输的需求日益增长。飞书作为一款集成了即时通讯、云文档、日程管理、视频会议等多种功能的智能协作平台,已经成为许多企业提高工作效率的首选工具。本文将详细介绍如何在公司内部局域网中应用飞书&#xf…

【Bug】记录2024年遇到的Bug以及修复方案

--------------------------------------------------------分割线 2024.3.22------------------------------------------------------- 1、load_sample_image raise AttributeError(“Cannot find sample image: %s” % image_name) AttributeError: Cannot find sample ima…

只有IP地址怎么实现HTTPS访问?

只有IP地址也可以实现HTTPS访问。虽然大部分SSL证书通常是针对域名发放,但也存在专门针对IP地址发放的SSL证书,这类证书允许服务器通过HTTPS协议为其公网IP地址提供安全的Web服务。当服务器配置了基于IP地址的SSL证书后,用户可以通过“https:…

MATLAB | R2024a更新了哪些好玩的东西?

Hey 好久不见,大家一看三月中下旬这个时间节点也应该能猜到这篇更新什么内容,没错MATLAB R2024a正式版发布啦啦拉拉,直接来看看有啥我认为比较有意思的更新点吧: 1 极坐标表达式绘制 将会使用使用fpolarplot函数来替换ezpolar&a…

DashScope - 阿里模型服务灵积

文章目录 关于 DashScope快速上手代码调用http 请求示例Python 调用 关于 DashScope 官方主页:https://dashscope.aliyun.comPYPI : https://pypi.org/project/dashscope/支持模型:https://dashscope.console.aliyun.com/model DashScope灵积模型服务建…

目标控制器数字孪生系统的研究与设计

文章来源:铁路计算机应用,2023,32(10):36-41. 作者:许婧,杨硕,季志均 摘要:随着目标控制器(OC,Object Controller)系统在轨道交通领域的推广应用,其硬件投入较高、研发…

基于SSM的手机商城管理系统+数据库+论文+免费远程调试

项目介绍: 基于SSM的手机商城管理系统。Javaee项目,采用M(model)V(view)C(controller)三层体系结构,通过Spring SpringMvc Mybatis JspBootstrapLayui来实现。MySQL数据库作为系统…