Kubernetes学习笔记06

第十六章、Kubernetes容器交付介绍

如何在k8s集群中部署Java项目

容器交付流程

  • 开发代码阶段
    • 编写代码
    • 编写Dockerfile【打镜像做准备】
  • 持续交付/集成
    • 代码编译打包
    • 制作镜像
    • 上传镜像仓库
  • 应用部署
    • 环境准备
    • Pod
    • Service
    • Ingress
  • 运维
    • 监控
    • 故障排查
    • 应用升级

k8s部署Java项目流程

  • 制作镜像【Dockerfile】
  • 上传到镜像仓库【Dockerhub、阿里云、网易】
  • 控制器部署镜像【Deployment】
  • 对外暴露应用【Service、Ingress】
  • 运维【监控、升级】

k8s部署Java项目

准备Java项目

第一步,准备java项目,把java进行打包【jar包或者war包】

依赖环境

在打包java项目的时候,我们首先需要两个环境

  • java环境【JDK】
  • maven环境

然后把java项目打包成jar包

mvn clean install

编写Dockerfile文件

Dockerfile 内容如下所示

FROM openjdk:8-jdk-alpine VOLUME /tmp ADD ./target/demojenkins.jar demojenkins.jar ENTRYPOINT ["java","-jar","/demojenkins.jar", "&"]

制作镜像

在我们创建好Dockerfile文件后,我们就可以制作镜像了

我们首先将我们的项目,放到我们的服务器上

然后执行下面命令打包镜像

docker build -t java-demo-01:latest .

等待一段后,即可制作完成我们的镜像

最后通过下面命令,即可查看我们的镜像了

docker images;

启动镜像

在我们制作完成镜像后,我们就可以启动镜像了

docker run -d -p 8111:8111 java-demo-01:latest -t

启动完成后,我们通过浏览器进行访问,即可看到我们的java程序

http://192.168.177.130:8111/user

推送镜像

下面我们需要将我们制作好的镜像,上传到镜像服务器中【阿里云、DockerHub】

首先我们需要到 阿里云 容器镜像服务,然后开始创建镜像仓库

然后选择本地仓库

我们点击我们刚刚创建的镜像仓库,就能看到以下的信息

登录镜像服务器

使用命令登录

docker login --username=XXXXXXX@163.com registry.cn-shenzhen.aliyuncs.com

然后输入刚刚我们开放时候的注册的密码

镜像添加版本号

下面为我们的镜像添加版本号

# 实例

docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/mogublog/java-project-01:[镜像版本号]

# 举例

docker tag 33f11349c27d registry.cn-shenzhen.aliyuncs.com/mogublog/java-project-01:1.0.0

操作完成后

推送镜像

在我们添加版本号信息后,我们就可以推送我们的镜像到阿里云了

docker push registry.cn-shenzhen.aliyuncs.com/mogublog/java-project-01:1.0.0

操作完成后,我们在我们的阿里云镜像服务,就能看到推送上来的镜像了

控制器部署镜像

在我们推送镜像到服务器后,就可以通过控制器部署镜像了

首先我们需要根据刚刚的镜像,导出yaml

# 导出

yaml kubectl create deployment javademo1 --image=registry.cn-

shenzhen.aliyuncs.com/mogublog/java-project-01:1.0.0 --dry-run -o yaml > javademo1.yaml

导出后的 javademo1.yaml 如下所示

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: javademo1
  name: javademo1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: javademo1
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: javademo1
    spec:
      containers:
      - image: registry.cn-shenzhen.aliyuncs.com/mogublog/java-project-01:1.0.0
        name: java-project-01
        resources: {}
status: {}

然后通过下面命令,通过yaml创建我们的deployment

# 创建

kubectl apply -f javademo1.yaml

我们还可以进行扩容,多创建几个副本

kubectl scale deployment javademo1 --replicas=3

然后我们还需要对外暴露端口【通过service 或者 Ingress】

# 对外暴露端口

kubectl expose deployment javademo1 --port=8111 --target-port=8111 --type=NodePort

# 查看对外端口号

kubectl get svc

然后通过下面的地址访问

# 对内访问

curl http://10.106.103.242:8111/user

# 对外访问

http://192.168.177.130:32190/user

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/5002.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Github+Picgo+npm实现免费图床

本文参考自 Akilar,原文地址:https://akilar.top/posts/3e956346/ Picgo的配置 Github图床仓库内容不能超过1GB,因为Github原则上是反对仓库图床化的,超过1GB之后会由人工审核仓库内容,如果仓库被发现用来做图床&…

H266 编码标准开源编码器 VVenC 介绍

H266 H.266,也称为VVC(Versatile Video Coding),是最新的国际视频编码标准,由MPEG(Moving Picture Experts Group)和ITU(International Telecommunication Union)联合开…

MySQL CRUD操作

前言👀~ 上一章我们介绍了数据库的一些基础操作,关于如何去创建一个数据库,还有使用数据库,删 除数据库以及对表进行的一些基础操作,今天我们学习CRUD操作 俗称(增删改查) 如果各位对文章的内…

IDM下载器安装cmd注册

一、下载注册 安装包去IDM官网下载最新的试用版即可 或者直达百度网盘下载(担心被河蟹,放在txt中了)包含IDM下载器安装包和注册软件 IDM下载器安装包和注册软件下载地址链接 https://download.csdn.net/download/qq_31237581/89215452 如果…

【STM32+HAL】SDIO模式读写SD卡

一、准备工作 有关CUBEMX的初始化配置,参见我的另一篇blog:【STM32HAL】CUBEMX初始化配置 二、所用工具 1、芯片: STM32F407ZGT6 2、IDE: MDK-Keil软件 3、库文件:STM32F4xxHAL库 三、实现功能 实现用DMA读写SD卡内…

人工原生动物优化器(APO)-2024年SCI一区新算法-公式原理详解与性能测评 Matlab代码免费获取

声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~ 目录 原理简介 一、觅食行为 (1)自养模式 (2)异…

xss漏洞学习

1.xss漏洞简介 跨站脚本(Cross-Site Scripting),本应该缩写为CSS,但是该缩写已被层叠样式脚本Cascading Style Sheets所用,所以改简称为XSS。也称跨站脚本或跨站脚本攻击。 原理:跨站脚本攻击XSS通过将恶…

项目文档:基于JavaFX + Maven的桌面扫雷软件打包exe【小白可做,文章末尾有包教安装有源代码可运行,可打包】

微信公众号: 科研小条 前言 用于学习javafx做桌面软件,熟悉maven构建项目的最佳选择 效果展示: 1. 项目概述 本项目是一个基于Java和JavaFX构建的桌面扫雷游戏软件。扫雷游戏是一种经典的单人益智游戏,玩家需要根据已知的雷区信息&…

Golang Colly爬取图片gorm存储数据

语言:Golang 库:Iris/Colly/gorm 运行结果 text/html; charset=utf-8 It is image 20240429222029_0_0.jpg Saved file: images\20240429222029_0_0.jpg text/html; charset=utf-8 It is image 20240429222030_1_0.jpg Saved file: images\20240429222030_1_0.jpg It is ima…

动态切换数据源的最佳实践

序言 本文和大家聊聊在开发中,动态切换多数据源的方案。 一、多数据源需求 随着应用程序的发展和复杂性增加,对于多数据源的需求也变得越来越普遍。在某些场景下,一个应用程序可能需要连接和操作多个不同的数据库或数据源。常见的场景包括…

Qt QThreadPool线程池

1.简介 QThreadPool类管理一个QThread集合。 QThreadPool管理和重新设计单个QThread对象,以帮助降低使用线程的程序中的线程创建成本。每个Qt应用程序都有一个全局QThreadPool对象,可以通过调用globalInstance来访问该对象。 要使用其中一个QThreadPool…

深度学习入门(4)

神经网络的构建 import numpy as np import matplotlib.pyplot as plt def sigmoid(x):return 1/(1np.exp(-x)) def identity_function(x):#恒等函数return x def init_network():#进行权重和偏置的初始化,并保存到字典中network{}network[W1]np.array([[0.1,0.3,0…

ezplot--Matlab学习

目录 一、代码 二、效果 ​编辑 三、ezplot讲解 四、如何自定义一个函数 一、代码 clc; clear; t0:32; x4(t) cos(2*pi*t/4).*sin(2*pi*t/4); x8(t) cos(2*pi*t/8).*sin(2*pi*t/8); x16(t) cos(2*pi*t/16).*sin(2*pi*t/16); subplot(3,1,1) ezplot(x4,[0,32]); subplot…

POCEXP编写—多线程

POC&EXP编写—多线程 1. 前言2. 多进程&多线程2.1. 多进程2.1.1. 案例 2.2. 多线程2.2.1. 案例: 2.3. POC的案例(模板) 3. UA头设置3.1. 随机UA头3.1.1. 案例3.1.2. 模板拼接 4. 代理Proxy4.1. 单代理案例4.2. 多代理案例4.2.1. 请求…

【AI心理咨询应用】继Woebot之后,国内诞生的“LLM+CBT”应用:白小喵

导言 AI认知行为疗法(Cognitive Behavioral Therapy,CBT)早在2017年便有了首例,即美国知名CBT治疗机器人Woebot。 然而,Woebot在CBT的完整落地上仍有缺陷问题,LLM的出现促进了对该问题的解决,…

【机器学习基础1】什么是机器学习、预测模型解决问题的步骤、机器学习的Python生态圈

文章目录 一. 什么是机器学习1. 概念2. 机器学习算法分类 二. 利用预测模型解决问题的步骤三. 机器学习的Python生态圈 一. 什么是机器学习 1. 概念 机器学习(Machine Learning,ML)是一门多领域的交叉学科,涉及概率论、统计学、…

服务器数据恢复—Storwize V3700存储数据恢复案例

服务器存储数据恢复环境: 某品牌Storwize V3700存储,10块硬盘组建了2组Mdisk加入到一个存储池中,一共创建了1个通用卷来存放数据,主要数据为oracle数据库。 服务器存储故障: 其中一组Mdisk中两块磁盘出现故障离线&…

【每日刷题】Day28

【每日刷题】Day28 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 ​ 1. 121. 买卖股票的最佳时机 - 力扣(LeetCode) 2. 205. 同构字符串 - 力扣…

关于discuz论坛网址优化的一些记录(网站地图sitemap提交)

最近网站刚上线,针对SEO做了些操作,为了方便网站网页百度被收录,特此记录下 discuz有免费的sitemap插件可以用,打开后台管理,找到插件栏,然后找到更多插件,进入插件市场。 选择这个免费的sitem…

【数据分析面试】34.填充NaN值 (Python:groupby/sort_value/ffill)

题目:填充NaN值 (Python) 给定一个包含三列的DataFrame:client_id、ranking、value 编写一个函数,将value列中的NaN值用相同client_id的前一个非NaN值填充,按升序排列。 如果不存在前一个client_id,则返…