k8s内网环境部署web项目(tomcat+mysql)

这篇具有很好参考价值的文章主要介绍了k8s内网环境部署web项目(tomcat+mysql)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

k8s部署web项目

本篇k8s版本为1.18, 容器运行时为docker
: kubernetes从1.24版本开始, 移除了对docker的支持, 采用containerd作为容器运行时

一、准备镜像

  1. 准备包含web项目的tomcat压缩包,jdk压缩包

    k8s部署tomcat及web应用,kubernetes,docker,linux

  2. 在上一步的目录下编写dockerfile文件

    vim dockerfile
    
    FROM centos:7
    
    ADD apache-tomcat-9.0.64.tar.gz /usr/local/
    ADD jdk-8u291-linux-x64.tar.gz /usr/local/
    # 定义工作目录
    ENV MYPATH /usr/local
    WORKDIR $MYPATH
    # 设置JAVA_HOME 环境变量
    ENV JAVA_HOME /usr/local/jdk1.8.0_291
    # 设置CLASSPATH 环境变量
    ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.64
    ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.64
    # 设置PATH
    ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
    # 暴露端口
    EXPOSE 8080
    # 指定容器启动后执行的命令
    CMD /usr/local/apache-tomcat-9.0.64/bin/startup.sh && tail -f /usr/local/apache-tomcat-9.0.64/logs/catalina.out
    
  3. 构建镜像

    docker build -t myweb:v1 .
    

    选项:

    • -t 给镜像加一个Tag
    • myweb 镜像名称
    • v1 镜像版本号
    • .表示当前目录,即Dockerfile所在目录

    tips:当使用Dockerfile构建镜像时,所在的目录一定要使用一个干净的目录(最好新建一个),以免目录下有其他文件(构建会加载当前目录下所有文件,导致磁盘爆满)。

    k8s部署tomcat及web应用,kubernetes,docker,linux

    输出Successfully tagged myweb:v1后使用docker images命令查看镜像

    k8s部署tomcat及web应用,kubernetes,docker,linux

  4. 启动镜像

    docker run -d -p 18080:8080 --name myweb -v /home/tomcat/logs:/usr/local/apache-tomcat-9.0.64/logs --restart=always myweb:v1
    

    选项:

    • --name: 容器名称
    • -d: 后台启动
    • -p: 映射端口
    • --restart=always: 容器自启(默认为no)
    • -v: 目录挂载

    k8s部署tomcat及web应用,kubernetes,docker,linux

    测试访问

    k8s部署tomcat及web应用,kubernetes,docker,linux

  5. 打包镜像

    docker save myweb:v1 -o /app/myweb.tar
    

    docker save 用来保存镜像

    格式: docker save 镜像名:版本号 -o /路径/保存的包名.tar

    选项: -o: 输出到文件

    k8s部署tomcat及web应用,kubernetes,docker,linux

MySQL镜像就不多介绍了, 如果k8s集群有外网环境或者有自己的仓库源直接跳过此处

如果是内网环境

docker pull mysql:版本号拉取镜像, 然后使用docker save命令将镜像输出到文件即可

k8s部署tomcat及web应用,kubernetes,docker,linux

二、Work节点导入镜像

  1. 将上一步导出的镜像上传到work节点中

    k8s部署tomcat及web应用,kubernetes,docker,linux

  2. 将镜像文件加载到docker镜像中

    docker load -i myweb.tar
    

    docker load 用于加载镜像文件

    格式: docker load -i 镜像文件

    选项: -i: 指定导入的文件

    k8s部署tomcat及web应用,kubernetes,docker,linux

    k8s部署tomcat及web应用,kubernetes,docker,linux

三、master节点编写yaml文件并创建资源

1.创建deployment资源

vim deploy.yaml
#控制器定义
apiVersion: apps/v1      #指定api版本标签
kind: Deployment         #定义资源类型
metadata:
  name: myweb            #定义资源名称
spec:
  replicas: 1            #定义副本数量
  selector:
    matchLabels:         #定义标签选择器,与被控制对象绑定
      name: myweb
#被控制对象
  template:
    metadata:            #定义标签选择器
      labels:
        name: myweb
    spec:
      containers:        #定义容器属性
      - name: myweb          #镜像名称,一个name定义一个容器,多个容器使用`-`区分
        image: myweb:v1      #镜像地址
        imagePullPolicy: IfNotPresent   #拉取策略
        ports:
        - name: myweb              #端口名称
          containerPort: 8080      #容器端口
          protocol: TCP            #端口协议
        resources:          #资源管理
          limits:          
            cpu: 500m
            memory: 1024Mi
          requests:
            cpu: 200m
            memory: 1024Mi
      - name: mysql
        image: mysql:5.7
        resources:
          requests:
            memory: 1Gi
            cpu: 500m
          limits:
            memory: 1Gi
            cpu: 500m
        ports:
        - name: mysql
          containerPort: 3306
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: root                #设置root密码
        args:
        - --character-set-server=utf8mb4  #字符集为utf8
        - --collation-server=utf8mb4_unicode_ci
        - --lower_case_table_names=1   #不区分大小写
        volumeMounts:            #定义数据卷目录,没有自动创建
        - name: vol-mysql-data
          mountPath: /var/lib/mysql
      volumes:                  #定义数据卷挂载目录
      - name: vol-mysql-data
        hostPath:
          path: /usr/lib/mysql
#通过yaml文件创建实例
kubectl apply -f deploy.yaml

k8s部署tomcat及web应用,kubernetes,docker,linux

#查看pods的详细信息
kubectl describe pods myweb

k8s部署tomcat及web应用,kubernetes,docker,linux

2.创建service资源

vim svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: myweb-svc
spec:
  ports:
  - name: myweb      #端口名称,一个name定义一个端口
    nodePort: 31369  #集群对外暴露端口,通过nodeip:nodePort访问
    port: 18080      #集群内部访问端口,通过ClusterIP:prot访问
    protocol: TCP
    targetPort: 8080  #目标端口,也就是容器的端口
  - name: mysql
    nodePort: 31379
    port: 13306
    protocol: TCP
    targetPort: 3306
  selector:
    name: myweb     #指定label标签的pod绑定
  type: NodePort    #services类型,默认ClusterIP,NodePort时可指定端口
kubectl apply -f svc.yaml

k8s部署tomcat及web应用,kubernetes,docker,linux

3.查看创建的资源

kubectl get pods,svc -o wide

k8s部署tomcat及web应用,kubernetes,docker,linux

通过集群中的任意节点+NodePort访问

k8s部署tomcat及web应用,kubernetes,docker,linux文章来源地址https://www.toymoban.com/news/detail-661218.html

到了这里,关于k8s内网环境部署web项目(tomcat+mysql)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • [Kubernetes]10. k8s部署Goweb+mysql项目实战演练

    如果要本地构建镜像的话,对应节点还需要安装docker,安装教程见:[Docker]一.Docker 简介与安装 linux环境,centos8下 docker及docker compose安装教程 k8s部署Goweb+mysql项目有 两种方法 :第一种是 传统部署方法 ,第二种是 通过ConfigMap实现应用配置分离部署方法 ,下面就来看看这两种部署方法

    2024年02月01日
    浏览(74)
  • Web项目部署环境搭建:JDK + Tomcat + IDEA +MySQL

    出来混总是要还的,记得大学本科四年,并不喜欢java以及web后端,把前端Html、css、JavaScript修炼得还可以之后,小组作业就一直抱各位大佬的大腿,大腿带我飞。就这样混过了本科的所有实践课。虽然研究生阶段也要用到编程语言,面向对象还有各种算法编程也是躲不掉的,

    2024年02月06日
    浏览(54)
  • 开源项目ChatGPT-Next-Web的容器化部署(四)-- k8s容器部署使用configmap配置

    本文的内容是在k8s容器中,如何使用configmap对.env文件进行挂载,实现环境的差异化配置。 项目ChatGPT-Next-Web使用了.env文件来配置不同环境下的值: 所以,我们同理新增两个配置文件,见下: 生产环境的.env文件对应生产环境的数据库连接等信息,不可能写在上面的源码中。

    2024年04月12日
    浏览(51)
  • k8s如何快速部署tomcat

    三台云服务器 部署tomcat 暴露端口 查看service端口

    2024年02月07日
    浏览(45)
  • k8s部署nginx访问Tomcat

    #测试 curl http://192.168.1:30086/tomcat/

    2024年02月14日
    浏览(40)
  • 【云原生-K8s-1实例】通过yaml 文件编排一个web-MySQL小项目

    🍁 博主简介   🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊 交流社区: 运维交流社区 欢迎大家的加入! RC(ReplicationController)是Kubernetes系统中的核心概念之一,简单来说,它其实定义了一个期望的场景,即声明某

    2024年02月10日
    浏览(65)
  • k8s 部署 Nginx 并代理到tomcat

    [root@master nginx]# kubectl get nodes -o wide   [root@master nginx]# kubectl get svc NAME            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE kubernetes      ClusterIP   10.96.0.1       none        443/TCP          25h tomcatservice   NodePort    10.102.227.68   none        8080:30010/TCP  

    2024年01月22日
    浏览(37)
  • k8s实战案例之部署Nginx+Tomcat+NFS实现动静分离

    根据业务的不同,我们可以导入官方基础镜像,在官方基础镜像的基础上自定义需要用的工具和环境,然后构建成自定义出自定义基础镜像,后续再基于自定义基础镜像,来构建不同服务的基础镜像,最后基于服务的自定义基础镜像构建出对应业务镜像;最后将这些镜像上传

    2024年02月07日
    浏览(49)
  • k8s环境部署配置

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

    2024年02月10日
    浏览(44)
  • Prometheus+Grafana监控K8S集群(基于K8S环境部署)

    1、服务器及K8S版本信息: IP地址 主机名称 角色 K8S版本 16.32.15.200 master-1 Master节点 v1.23.0 16.32.15.201 node-1 Node节点 v1.23.0 16.32.15.202 node-2 Node节点 v1.23.0 2、部署组件版本: 序号 名称 版本 作用 1 Prometheus v2.33.5 收集、存储和处理指标数据 2 Node_exporter v0.16.0 采集服务器指标,如CP

    2024年02月04日
    浏览(71)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包