应用打包部署k8s (包括dockerfile打包及仓库上传)

这篇具有很好参考价值的文章主要介绍了应用打包部署k8s (包括dockerfile打包及仓库上传)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、docker run 运行测试

小唐的项目主要是(mysql+jar+vue),然后所有项目都是打包好了的,然后现在我们用docker run 来测试一下

1.数据库测试

1.存储文件夹

mkdir -p mysql/data mysql/init mysql/conf

data 文件夹是数据存储目录  (如果mysql初始化错误  需要将文件夹内部全部删除)
init 文件夹可以放置 .sh .sql 文件 在初始化容器时会执行
conf 文件夹 放置 my.cnf 配置文件

并将我们的sql文件转移至init
在编写mysql文件之前,我们可以先使用docker镜像的方式去看看我们的sql文件是否可以正确导入至我们的容器

2.准备好对于位置
应用打包部署k8s (包括dockerfile打包及仓库上传)

3.运行docker中镜像

docker run -d --name mysql-container \
-e MYSQL_ROOT_PASSWORD=123456 \
-e MYSQL_DATABASE=bilibili \
-v /home/xiaotang0711/Desktop/docker/sql:/docker-entrypoint-initdb.d \
mysql:8.0

MYSQL_DATABASE#你数据库名
-V 本机地址:/docker-entrypoint-initdb.d #这个位置会在mysql启动时自动执行
docker exec -it <容器id> mysql -u root -p

检查是否执行成功

应用打包部署k8s (包括dockerfile打包及仓库上传)

2.接口测试

docker run -d -p 8081:8081  \
-v /home/xiaotang0711/Desktop/docker/hadoop.jar:/usr/hadoop.jar \
--name springboot java:8u111  \
java -jar /usr/hadoop.jar

应用打包部署k8s (包括dockerfile打包及仓库上传)
应用打包部署k8s (包括dockerfile打包及仓库上传)

3.前端界面测试

docker run  -d  -p 80:80 \
--name nginx \
-v /home/xiaotang0711/Desktop/docker/dist:/usr/share/nginx/html:ro \
nginx

应用打包部署k8s (包括dockerfile打包及仓库上传)

在上诉运行没有问题之后,我们去编写我们所对应的dockekfile

二、编写dockerfile

由于本应用主要有前端和后端组成,将它们分别打包为不同的镜像,并在部署时进行组合使用。这样可以更加灵活地管理和升级应用,同时也方便扩展和维护。根据上诉打包过程中的dockerfile 进行如下编写【依据我们docker run中代码进行编写,会用chatgpt的可以把docker run的代码给他,让他帮你写dockerfile】

1.前端

# 基于官方 nginx 镜像创建新的镜像
FROM nginx
# 将主机的 dist 目录映射到容器内的 /usr/share/nginx/html 目录,并且使用只读模式
VOLUME /usr/share/nginx/html
COPY dist /usr/share/nginx/html
RUN chmod -R a+r /usr/share/nginx/html
# 暴露容器的默认端口 80
EXPOSE 80
docker build -t qianduan .
docker run -d -p 80:80 --name qianduanqianduan

应用打包部署k8s (包括dockerfile打包及仓库上传)
应用打包部署k8s (包括dockerfile打包及仓库上传)

2.后端

# 基于mysql:8.0镜像创建新的镜像
FROM mysql:8.0

# 设置环境变量
ENV MYSQL_ROOT_PASSWORD=root
ENV MYSQL_DATABASE=bilibili
ENV MYSQL_USER=nacos
ENV MYSQL_PASSWORD=nacos
# 将sql文件夹中的文件复制到容器中的初始化脚本目录下
COPY ./mysql/init /docker-entrypoint-initdb.d/
# 将配置文件复制到容器内
COPY ./mysql/conf/my.cnf /etc/mysql/my.cnf
# 挂载数据卷
VOLUME /var/lib/mysql/
# 暴露端口
EXPOSE 3306
# 修改默认密码策略
CMD ["mysqld", "--default-authentication-plugin=mysql_native_password", "--character-set-server=utf8mb4", "--collation-server=utf8mb4_general_ci", "--explicit_defaults_for_timestamp=true", "--lower_case_table_names=1"]

# 基于java:8u111镜像创建新的镜像
FROM java:8u111
# 复制应用程序jar包到容器内
COPY ./hadoop.jar /usr/hadoop.jar
# 暴露端口
EXPOSE 8081
# 启动springboot应用
CMD ["java", "-jar", "/usr/hadoop.jar"]
docker build -t houduan .
docker run -d -p 3306:3306 -p 8081:8081 houduan 

应用打包部署k8s (包括dockerfile打包及仓库上传)
应用打包部署k8s (包括dockerfile打包及仓库上传)

三、推送镜像(后面k8s就从这里获取镜像了)

【官网仓库参考】Ubantu docker学习笔记(三)docker账号push及Dockerfile优化
【私有仓库参考】Ubantu docker学习笔记(八)私有仓库

登录
应用打包部署k8s (包括dockerfile打包及仓库上传)

Push镜像

应用打包部署k8s (包括dockerfile打包及仓库上传)
应用打包部署k8s (包括dockerfile打包及仓库上传)

四.编写 docker-compose.yml

这个是为了可以一键启动和终止我们的镜像
根据上诉dockfile打包的命令,我们进行dockers-compose.yml的编写【也可以用chatgpt来写】,不用部署K8S的做到这一步就ok了

version: '3'
services:
  houduan:
    image: xiaotang0711/houduan
    ports:
      - '3306:3306'
      - '8081:8081'

  qianduan:
    image: xiaotang0711/qianduan
    ports:
      - '80:80'
    container_name: qianduan
docker compose up -d
docker compose down

应用打包部署k8s (包括dockerfile打包及仓库上传)

五.K8s部署

1.yaml文件编写及部署

主要分为service和deployment两个文件的编写,deployment指明的是我们pod里面的内容,service指明的是我们一个pod集合的类容【包括总的端口和ip地址】

houduan-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: houduan-deployment
spec:
  selector:
    matchLabels:
      app: houduan
  replicas: 1
  template:
    metadata:
      labels:
        app: houduan
    spec:
      containers:
      - name: houduan
        image: xiaotang0711/houduan
        ports:
        - containerPort: 3306
        - containerPort: 8081

houduan-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: houduan-service
spec:
  selector:
    app: houduan
  ports:
  - name: mysql
    port: 3306
    targetPort: 3306
  - name: http
    port: 8081
    targetPort: 8081

qianduan-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: qianduan-deployment
spec:
  selector:
    matchLabels:
      app: qianduan
  replicas: 1
  template:
    metadata:
      labels:
        app: qianduan
    spec:
      containers:
      - name: qianduan
        image: xiaotang0711/qianduan
        ports:
        - containerPort: 80

qianduan-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: qianduan-service
spec:
  selector:
    app: qianduan
  ports:
  - name: http
    port: 80
    targetPort: 80

然后去运行我们的ymal文件就可以啦

kubectl create namespace app
kubectl apply -f houduan-deployment.yaml
kubectl apply -f houduan-service.yaml
kubectl apply -f qianduan-deployment.yaml
kubectl apply -f qianduan-service.yaml

应用打包部署k8s (包括dockerfile打包及仓库上传)

kubectl get pods -n app
kubectl get services -n app

2. 应用的伸缩与不停机升级

kubectl get deployments -n app
kubectl get rs -n app
kubectl scale deployments/houduan-deployment --replicas=4-n app

应用打包部署k8s (包括dockerfile打包及仓库上传)
也可以使用自动扩缩

autoscaler.yaml

apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
  name: example-autoscaler
  namespace: houduan
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: houduan-deployment
  minReplicas: 1
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      targetAverageUtilization: 50
kubectl apply  -f  autoscaler.yaml
kubectl get hpa -n app #查看

应用打包部署k8s (包括dockerfile打包及仓库上传)

滚动更新

kubectl rollout undo deployments/houduan-deployment

应用打包部署k8s (包括dockerfile打包及仓库上传)

六.K8s容器监控

大家可以参考
Kubernetes集群资源监控
我是按照他来的
K8S版本:1.27.1

需要保证我们节点都启动起来
应用打包部署k8s (包括dockerfile打包及仓库上传)
先去看我们普罗米修斯的服务器
应用打包部署k8s (包括dockerfile打包及仓库上传)

应用打包部署k8s (包括dockerfile打包及仓库上传)文章来源地址https://www.toymoban.com/news/detail-506365.html

到了这里,关于应用打包部署k8s (包括dockerfile打包及仓库上传)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • K8s集群Harbor私有仓库部署+ssl证书申请

    首先打开ssl证书服务控制台 然后点击SSL证书—免费证书—立即购买 注意此证书只支持单域名,最多可免费申请20个,而且一个账号只有一次免费机会,证书有效期为一年 购买完免费证书后,然后创建自己域名的证书即可 下载(下载类型选择其他)我们申请的证书 上传到harbor所

    2024年01月15日
    浏览(38)
  • k8s使用helm部署Harbor镜像仓库并启用SSL

    参照:https://zhaoll.blog.csdn.net/article/details/128155767 有多种安装方式,根据自己的k8s版本选择合适的helm版本 参考:https://blog.csdn.net/qq_30614345/article/details/131669319 我们这里使用helm安装harbor,项目地址:https://github.com/goharbor/harbor-helm (1)拉取项目文件 (2)解压并修改配置 tar -z

    2024年02月16日
    浏览(39)
  • k8s系列-kuboard创建工作负载 docker上传java微服务jar包到仓库的过程

    1.查看环境中是否存在docker环境 docker version 2.不存在的话需要创建docker 1.环境说明 1.开发人员将java微服务打包成在linux中可运行的jar包,将其传送给运维人员 2.外网和内网可以传送文件 3.内网需要有linux服务器,并且配置了docker环境和命名空间 这里过程是基于k8s的集群kuoard控

    2024年02月05日
    浏览(39)
  • k8s 入门到实战--部署应用到 k8s

    k8s 入门到实战 01.png 本文提供视频版: 最近这这段时间更新了一些 k8s 相关的博客和视频,也收到了一些反馈;大概分为这几类: 公司已经经历过服务化改造了,但还未接触过云原生。 公司部分应用进行了云原生改造,但大部分工作是由基础架构和运维部门推动的,自己只

    2024年02月09日
    浏览(40)
  • 使用k8s helm离线部署spark-operator(私有仓库)

    将制作的镜像上传到目的机器中,加载镜像 打标签其中xxxx.xxx/xx/为私有仓库的地址 将制作好的镜像推到私有仓库中 Github地址: 下载上传到机器中 解压spark-operator-1.1.27.tgz,修改values.yaml内容,修改副本数量为3、镜像源、利用伪亲和性使得三个副本在三台机器上。 修改Chart

    2024年02月09日
    浏览(39)
  • K8S1.23.6版本详细安装教程以及错误解决方案(包括前置环境,使用部署工具kubeadm来引导集群)

    一台兼容的 Linux 主机。Kubernetes 项目为基于 Debian 和 Red Hat 的 Linux 发行版以及一些不提供包管理器的发行版提供通用的指令。 每台机器 2 GB 或更多的 RAM(如果少于这个数字将会影响你应用的运行内存)。 CPU 2 核心及以上。 集群中的所有机器的网络彼此均能相互连接(公网和

    2024年03月14日
    浏览(40)
  • jenkins部署K8S应用

      PS:这种方式是jenkins独立,然后slave已容器方式运行,master是独立出来的,减少运维成本,还能提高效率。 如果使用master部署需要把master加入k8s集群 jenkins安装不赘述 在k8s-master节点上生成对应的证书 在jenkins里添加凭据 凭据类型选Certificate 上传cert.pfx,输入刚才设置的密码

    2024年02月04日
    浏览(37)
  • K8S搭建自动化部署环境(五)Harbor私有仓库的搭建全过程

    各位大佬,前文如下: K8S搭建自动化部署环境(一)安装Kubernetes K8S搭建自动化部署环境(二)安装K8S管理工具Kuboard V3 K8S搭建自动化部署环境(三)Jenkins下载、安装和启动 K8S搭建自动化部署环境(四)Jenkins多分支流水线Blue Ocean的安装和使用 本文正文: 首先,下载harbor包,

    2024年02月05日
    浏览(54)
  • Jenkins使用k8s部署应用

    1、jenkins在k8s内部署(请参考其他人的文章) 2、jenkins安装kubenents相关插件 3、配置k8s云         非常重要,目的是实现jenkins可以远程调用k8s进行部署,并可实现安装jenkins-slave进行构建。使得不再依赖jenkins单机能力进行构建,比较适合一定规模的公司。  插件安装后,打开

    2024年02月15日
    浏览(60)
  • 通过docker+cri-dockerd部署k8s集群环境(含harbor镜像仓库)

    目录 一.虚拟机准备 二.基础环境配置(各个节点都做) 1.IP和hosts解析 2.防火墙和selinux 3.安装基本软件 4.配置时间同步 5.禁用swap分区 6.修改内核参数并重载 7.配置ipvs 三.docker环境(各个节点都做) 1.配置软件源并安装docker-ce 2.配置docker加速 四.cri环境配置(各个节点都做)

    2024年02月05日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包