zoukankan      html  css  js  c++  java
  • K8S实战之部署java应用【转】

    kubernetes基本概念

    Pod:

    1.最小的部署单元,
    2.一组容器的集合
    3.一个pod中的容器共享网络命名空间
    4.生命周期是短暂的
    

    Controllers:

    1.Deployment:部署无状态应用
    2.Statefulset:部署有状态应用
    3.Replicaset:确保预期的Pod副本数量
    4.Daemonset:	确保node运行同一个pod
    5.Job:一次性任务
    6.Cronjob:定时任务
    更高级层次对象,部署和管理pod
    

    Service:

    防止Pod失联,找到你需要Pod
    定义一组Pod的负载均衡访问策略

    Label:标签,附加到某个资源上,用于关联对象,查询和筛选
    Namespaces:命名空间,将对象进行逻辑上隔离或者资源隔离

    项目迁移到k8s平台是怎么样的流程?

    在这里插入图片描述
    基础镜像(一个空白的镜像)---------------运行环境镜像(py/php/go/java)---------------项目镜像(项目打包)

    实战项目开始

    服务器ip服务器名称
    192.168.106.102 k8s-master
    192.168.106.103 k8s-node01
    192.168.106.104 k8s-node02
    192.168.106.103 mysql数据库

    1.0将java源码程序项目包导入到master服务器上,如图所示
    在这里插入图片描述

    1将db目录下数据文件导入mysql中(node01)

    #192.168.106.103数据库执行

    source  /root/tables_ly_tomcat.sql
    grant all on test.* to   'test'@'%'  identified by "Zhangfan@123";   #增加一个授权用户,在master登录能正常登录

    修改连接数据库的配置文件,改成刚才数据授权的用户和ip
    vim src/main/resources/application.yml
    在这里插入图片描述

    2开始制作镜像java镜像(master)

    我在之前的博文中讲了如何构建java镜像 https://blog.csdn.net/weixin_43546282/article/details/112210164
    cat Dockerfile

    FROM centos:7                    
    MAINTAINER zhangfan               
    ENV VERSION=8.5.61                
    RUN yum install java-1.8.0-openjdk wget curl unzip iproute net-tools -y && 
        yum clean all && 
        rm -rf /var/cache/yum/*
    RUN wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz && 
        tar zxf apache-tomcat-${VERSION}.tar.gz && 
        mv apache-tomcat-${VERSION} /usr/local/tomcat && 
        rm -rf apache-tomcat-${VERSION}.tar.gz /usr/local/tomcat/webapps/* && 
        mkdir /usr/local/tomcat/webapps/test && 
        echo "ok" > /usr/local/tomcat/webapps/test/status.html && 
        sed -i '1a JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom"' /usr/local/tomcat/bin/catalina.sh && 
        ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    ENV PATH $PATH:/usr/local/tomcat/bin   
    WORKDIR /usr/local/tomcat
    EXPOSE 8080
    CMD ["catalina.sh", "run"] 
    

    #安装编译环境
    yum -y install java-1.8.0-openjdk maven

    cd      /root/tomcat-java-demo-master
    vim src/main/resources/application.yml   #修改配置文件指定刚才创建用户的数据库
    mvn   clean  package  -Dmaven.test.skip=true
    

    #编译完成如图所示,生成一个war包
    在这里插入图片描述
    制作新Dockerfile

    cat  Dockerfile 
    FROM tomcat:v1 
    LABEL test  www.zhangsan.com
    RUN rm -rf     /usr/local/tomcat/webapps/*
    ADD target/*.war   /usr/local/tomcat/webapps/ROOT.war

    #注意这里命名 zhangfan5391621/java-demo zhangfan5391621表示docker hub仓库登录名/java-demo为项目名
    docker build -t zhangfan5391621/java-demo .
    在这里插入图片描述
    构建完成如图所示,新项目镜像构建完成

    3将镜像推入docker hub仓库中

    https://hub.docker.com/repository/docker/zhangfan5391621/zf_test
    在这里插入图片描述
    docker push zhangfan5391621/java-demo #上传到docker hub仓库中去
    在这里插入图片描述

    4生成k8s-Pod

    kubectl create deployment java-demo --image=zhangfan5391621/java-demo --dry-run -o yaml > deploy.yaml
    #在本地生成一个yaml标准文件

    cat deploy.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: java-demo
      name: java-demo
    spec:
      replicas: 3   #三个副本
      selector:
        matchLabels:
          app: java-demo
      template:
        metadata:
          labels:
            app: java-demo
        spec:
          containers:
          - image: zhangfan5391621/java-demo
            name: java-demo
    
    kubectl apply -f  deploy.yaml   #构建pod
     kubectl  get pods   #全部状态running说明构建成功
    

    在这里插入图片描述
    #检查pod日志,无错误说明成功,如果报错状态不对用下面命令检查

    `kubectl describe nodes  k8s-node01   #检查node`
    `kubectl  logs java-demo-876cf6688-57jzf`
    

    5 暴露应用svc

     kubectl  expose deployment  java-demo  --port=80 --target-port=8080 --type=NodePort -o yaml --dry-run > svc.yaml
    

    java-demo :刚才创建deployment时的名称, --port=80:容器内部访问端口 --target-port=8080 :指定pod内部端口 --type=NodePort: 指定外部访问的端口为随机生成端口

    kubectl apply  -f     svc.yaml   #创建svc
     kubectl  get  pods,svc
    

    在这里插入图片描述
    http://192.168.106.102:30187/ #任意节点ip:30187都能正常访问
    在这里插入图片描述
    至此项目部署完成
    整个完成顺序是
    构建环境镜像----------构建项目镜像----------推送到hub仓库----------构建Pod----------暴露应用svc

    转自

    (3条消息) K8S实战之部署java应用_奋斗滴小松鼠的博客-CSDN博客
    https://blog.csdn.net/weixin_43546282/article/details/112600234

  • 相关阅读:
    三、Python基础(5)
    三、Python基础(4)
    三、Python基础(3)
    三、Python基础(2)
    mysql 索引的使用
    Java 泛型T
    vueJS
    集群 分布式 负载均衡的区别
    nodeJS vue elementUI mock学习过程笔记,仅用于个人记录巩固
    MAP
  • 原文地址:https://www.cnblogs.com/paul8339/p/14333886.html
Copyright © 2011-2022 走看看