首页 网维知识库 K8S实战之部署java应用

K8S实战之部署java应用

kubernetes基本概念 Pod: 1.最小的部署单元, 2.一组容器的集合 3.一个pod中的容器共享网络命名空间 4.生命周期是短暂的 Controllers: 1.Dep…

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平台是怎么样的流程?

K8S实战之部署java应用插图1

基础镜像(一个空白的镜像)—————运行环境镜像(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服务器上,如图所示

K8S实战之部署java应用插图2

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

K8S实战之部署java应用插图3

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包

K8S实战之部署java应用插图4

制作新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  .

K8S实战之部署java应用插图5

构建完成如图所示,新项目镜像构建完成

3将镜像推入docker hub仓库中

https://hub.docker.com/repository/docker/zhangfan5391621/zf_test

K8S实战之部署java应用插图6

docker push zhangfan5391621/java-demo   #上传到docker hub仓库中去

K8S实战之部署java应用插图7

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说明构建成功

K8S实战之部署java应用插图8

检查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

K8S实战之部署java应用插图9

http://192.168.106.102:30187/ #任意节点ip:30187都能正常访问

K8S实战之部署java应用插图10
至此项目部署完成

整个完成顺序是

构建环境镜像———-构建项目镜像———-推送到hub仓库———-构建Pod———-暴露应用svc

免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。

作者: 3182235786a

为您推荐

Windows系统怎么保持远程桌面长时间链接不会自动断开呢?

Windows系统怎么保持远程桌面长时间链接不会自动断开呢?

大家经常会遇到正在远程桌面连接如果不进行一些操作,过上个几分钟一会儿之后远程桌面连接就会需要登录,有时还是直接断开需要重...
Win11预览版 Builds 22572.100更新补丁KB5012817发布(附更新修复内容汇总)

Win11预览版 Builds 22572.100更新补丁KB5012817发布(附更新修复内容汇总)

据系统之家小编了解,微软公司于今日凌晨面向Windows预览频道发布了新的Win11 KB5012817补丁,内部版本2...
Win11预览版全新标签式文件资源管理器上手体验:快速切换窗口,还可以滚动标签

Win11预览版全新标签式文件资源管理器上手体验:快速切换窗口,还可以滚动标签

据 Windows Latest 报道,如果你是众多要求微软为文件资源管理器添加标签页的用户之一,现在终于等到了好消息。...
微软 Win11 22H2“太阳谷 2”重大版本将全面改造升级传统经典 UI

微软 Win11 22H2“太阳谷 2”重大版本将全面改造升级传统经典 UI

据 Windows Latest 报道,Windows 11 太阳谷 2 更新预计将对 UI 进行大修,并在 WinUI...
电脑升级win11后怎么退回win10?win11退回win10系统操作方法

电脑升级win11后怎么退回win10?win11退回win10系统操作方法

方法一 1.当我们升级win11后需要退回win10系统时,首先进入开始菜单页面,找到【设置】。 2.在设置的操作页面中...

发表回复

返回顶部