You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VM或Kubernetes上部署Web应用配套的C++控制台应用?

C++控制台应用部署至VM/Kubernetes环境步骤指导

一、部署至Linux VM环境

1. 准备可执行程序

  • 先在本地或CI环境完成C++程序编译,一定要生成静态链接的可执行文件(避免VM上缺依赖库跑不起来),比如得到my_app
  • 本地先跑一遍./my_app,确认功能正常再往下走

2. 上传程序到VM

  • 用scp命令直接传:scp ./my_app 你的用户名@VM_IP:/opt/my_app/
  • 嫌命令行麻烦的话,用SFTP工具(比如FileZilla)传也行,目标路径选/opt/my_app/就行

3. 配置运行与守护

  • SSH登录VM:ssh 你的用户名@VM_IP
  • 给程序加执行权限:chmod +x /opt/my_app/my_app
  • 要实现开机自启和进程崩溃自动重启的话,就整个systemd服务:
    • 创建服务文件:sudo vim /etc/systemd/system/my_app.service
    • 粘贴以下内容(注意替换用户名和路径):
      [Unit]
      Description=C++控制台应用服务
      After=network.target
      
      [Service]
      ExecStart=/opt/my_app/my_app
      WorkingDirectory=/opt/my_app/
      Restart=always
      User=你的用户名
      
      [Install]
      WantedBy=multi-user.target
      
    • 重载systemd:sudo systemctl daemon-reload
    • 启动服务并设为开机自启:sudo systemctl start my_app && sudo systemctl enable my_app

4. 验证部署

  • 看服务状态:sudo systemctl status my_app
  • 实时看日志:journalctl -u my_app -f
  • 也可以直接跑程序确认:/opt/my_app/my_app

二、部署至Kubernetes环境

1. 容器化应用

  • 写个Dockerfile(用alpine镜像够轻量):
    FROM alpine:latest
    
    # 把本地编译好的静态可执行文件复制到容器里
    COPY my_app /usr/local/bin/
    
    # 加执行权限
    RUN chmod +x /usr/local/bin/my_app
    
    # 容器启动就跑这个程序
    CMD ["/usr/local/bin/my_app"]
    
  • 构建镜像:docker build -t my-cpp-app:v1 .
  • 要是集群拉不到本地镜像,就推到私有镜像仓库:docker push 你的仓库地址/my-cpp-app:v1

2. 写K8s部署配置

  • 新建deployment.yaml:
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: my-cpp-app
      labels:
        app: my-cpp-app
    spec:
      replicas: 3 # 按需改副本数
      selector:
        matchLabels:
          app: my-cpp-app
      template:
        metadata:
          labels:
            app: my-cpp-app
        spec:
          containers:
          - name: my-cpp-app
            image: my-cpp-app:v1 # 换成你的镜像地址
            resources:
              requests:
                cpu: "100m"
                memory: "128Mi"
              limits:
                cpu: "500m"
                memory: "256Mi"
            # 要是需要存日志或数据,加个挂载
            volumeMounts:
            - name: app-log
              mountPath: /var/log/my_app
          volumes:
          - name: app-log
            emptyDir: {} # 生产环境可以换成PersistentVolumeClaim
    
  • 要是应用需要外部访问,再整个service.yaml:
    apiVersion: v1
    kind: Service
    metadata:
      name: my-cpp-app-service
    spec:
      selector:
        app: my-cpp-app
      ports:
        - protocol: TCP
          port: 80
          targetPort: 8080 # 替换成你的应用监听端口,没有就删掉这段
      type: ClusterIP # 按需选NodePort/LoadBalancer
    

3. 部署到集群

  • 应用Deployment:kubectl apply -f deployment.yaml
  • (可选)应用Service:kubectl apply -f service.yaml

4. 验证部署

  • 看Pod状态:kubectl get pods
  • 看某台Pod的日志:kubectl logs <你的Pod名称>
  • 看Deployment状态:kubectl get deployment my-cpp-app

内容的提问来源于stack exchange,提问作者devchanger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 20:35:26