当前位置: 首页 > news >正文

01_使用Docker将Coding上项目部署到k8s平台

01_使用Docker将Coding上项目部署到k8s平台

一、将Coding代码拉取到本地

1.1 在本地 Git 登录自己的 Coding 账号(使用SSH或者GPA公钥均可)

  1. 使用SSH方式登录

在本地生成SSH令牌

ssh-keygen -t rsa -C '账号绑定邮箱'

-t 指定密钥类型,默认是 rsa ,可以省略。
-C 设置注释文字,比如邮箱。

复制账户的主目录下的 .ssh 文件夹下的 xxx.pub 文件(该文件为公钥)里的内容到 Coding 的账号设置的SSH公钥内。

  • Windows系统路径在 C:\Users\用户\.ssh\

在本地运行首次连接时的公钥认证命令:

ssh -T git@e.coding.net
  1. 使用GPA公钥方式登录

这里省略这种方式。

1.2 初始化一个本地 Git 仓库

在本地创建一个文件夹,然后进入该文件夹内,使用如下命令将该文件夹初始化为 Git 仓库

git init

1.3 在本仓库内,拉取远程项目

git pull git@e.coding.net:xxx.git

需要注意的是,使用SSH登录,只能使用SSH方式拉取代码,无法使用HTTP方式拉取。

二、将项目打包为jar包

使用IDEA或者命令行等方式,将项目打包为jar包,如:使用Maven的Clean、Package。

三、将jar包打包为docker镜像

注意:将jar包打包为docker镜像时,需要编写dockerfile文件简化打包过程。

dockerfile文件编写示例:

# FROM 指定使用哪个镜像作为基准
FROM [docker.m.daocloud.io/(可写)]openjdk:8u191-jdk-alpine# 创建目录, 并设置该目录为工作目录
RUN mkdir -p /xxx
WORKDIR /xxx# 复制文件到镜像中
COPY target/aaa-1.0.jar aaa.jar# 设置时区
ENV TZ=Asia/Shanghai# 设置 JAVA_OPTS 环境变量,可通过 docker run -e "JAVA_OPTS=" 进行覆盖
ENV JAVA_OPTS="-Xms300m -Xmx300m -Djava.security.egd=file:/dev/./urandom"# 应用参数,可通过 docker run -e "ARGS=" 来设置,如 -e "ARGS=--spring.profiles.active=prod"
ENV ARGS=""# 暴露 8080 端口
EXPOSE 8080# 启动后端服务
CMD java ${JAVA_OPTS} -jar analyzer.jar $ARGS

使用docker进入项目下,然后执行:

docker build -t aaa:1.0 .

四、上传镜像至阿里云容器镜像仓库(ACR)

  1. 创建镜像仓库、命名空间,设置访问凭证(固定密码)

  2. 使用下述命令登录

docker login --username=<镜像仓库登录名> crpi-xxxx.cn-<个人版实例所在的地域>.personal.cr.aliyuncs.com
  1. 使用下述命令为镜像打标签
docker tag <镜像ID> crpi-xxxx.cn-<个人版实例所在地域>.personal.cr.aliyuncs.com/<命名空间名称>/<镜像仓库名称>:<镜像版本号>
  1. 使用下述命令上传镜像
docker push crpi-xxxx.cn-<个人版实例所在地域>.personal.cr.aliyuncs.com/<命名空间名称>/<镜像仓库名称>:<镜像版本号>

五、通过镜像部署到K8S上

  1. 创建集群。

  2. 在应用管理处,通过镜像创建应用

    副本数量不能设置为 0,基本配置-所需资源-内存尽力设置1G以上。

  3. 需要创建服务(Service)

    服务类型为NodePort时:

    1. 容器端口(targetPort)
      这是 Pod 内部运行的容器监听的端口,对应 Dockerfile 里 EXPOSE 的端口。
      在本项目中,Dockerfile 里暴露的是 8080,所以 targetPort: 8080。

    2. 服务端口(port)
      这是 Service 内部的端口,其他 Pod 访问该 Service 时使用这个端口。
      port 会转发流量到 targetPort,通常它们可以 相同,但不强制相同。
      在本项目中,port: 8080(可以改,但建议与 targetPort 一致,避免混淆)。

    3. 节点端口(nodePort)
      这是 Kubernetes 节点上的端口,集群外部访问 Service 时使用该端口。
      这个端口是 30000-32767 之间的一个固定端口,由 Kubernetes 分配,也可以手动指定。
      通过 < NodeIP >:nodePort,外部可以访问该应用。
      例如,可以设定 nodePort: 30080,则外部访问 http://:30080 即可访问应用。


http://www.mrgr.cn/news/96776.html

相关文章:

  • 编译玄铁处理器RISC-V指令测试用例
  • EasyExcel导出导入excel工具类
  • Go+Gin实现安全多文件上传:带MD5校验的完整解决方案
  • MySQL 进阶 面经级
  • 一起学习大语言模型-常用命令及模型介绍
  • 2023第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组(真题题解)(C++/Java题解)
  • 41、当你在 index.html 中引用了一个公共文件(比如 common.js),修改这个文件后,用户访问页面时仍然看到旧内容,因为浏览器缓存了旧版本
  • Kafka 4.0入门到熟练
  • 41.C++哈希6(哈希切割/分片/位图/布隆过滤器与海量数据处理场景)
  • ML 聚类算法 dbscan|| OPTICS
  • 【C++】vector常用方法总结
  • Springboot学习笔记3.28
  • JVM——模型分析、回收机制
  • 七. JAVA类和对象(二)
  • 消息中间件对比与选型指南:Kafka、ActiveMQ、RabbitMQ与RocketMQ
  • 前端界面在线excel编辑器 。node编写post接口获取文件流,使用传参替换表格内容展示、前后端一把梭。
  • LLM应用层推荐 -- 基于文档的问答tools Web UI 框架 开源向量库 -- 推荐、对比
  • 003-JMeter发起请求详解
  • Vue中将pdf文件转为图片
  • GitPython库快速应用入门