如何在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
相关产品推荐
相关产品推荐

