使用k8s管理应用以及java案例

使用k8s管理应用

  • 制作镜像
  • 控制器管理pod
  • pod数据持久化
  • 创建service四层代理
  • 创建ingress规则对外发布应用
  • 日志与监控
  • 应用案例(因无开发代码,最终跑不起来)
    • 编写java代码
    • 编写 Dockerfile
    • 构建 Docker 镜像
    • 在 Kubernetes 上运行应用程序
    • 创建 Kubernetes 服务service
    • 创建ingress服务

制作镜像

使用dockerfile制作docker镜像
镜像分为

  • 基础镜像:centos,ubuntu、debian等
  • 服务镜像:openjdk,nginx,mysql、tomcat等
  • 项目镜像:项目代码打包在镜像里,最终交付

项目镜像

  • java或者go的代码需要编译,php和python的可以不用编译。
  • Java:mvn会生成一个jar结尾文件,Java –jar,现在把这个文件做到镜像
  • Go:go build ,会生成一个二进制文件,现在把二进制文件做到镜像里
  • Python:aa.py可以直接运行

控制器管理pod

  • Deployment:无状态部署,例如Web,微服务,API等
  • StatefulSet:有状态部署,例如数据库,zookeeper,eureka、elasticsearch等
  • DaemonSet:守护进程部署,例如监控Agent、日志Agent、HDFS的datanode等
  • JOB & CronJob:批处理,例如数据库备份,邮件通知等

pod数据持久化

容器部署过程中一般有以下三种数据:

  • 启动时需要的初始数据,可以是配置文件
  • 启动过程中产生的临时数据,该临时数据需要多个容器间共享
  • 启动过程中产生的业务数据
    在这里插入图片描述

创建service四层代理

使用Service ClusterIP类型暴露集群内部应用访问:

  • Service定义了Pod的逻辑集合和访问这个集合的策略
  • Service引入为了解决Pod的动态变化,提供服务发现和负载均衡
  • 使用CoreDNS解析Service名称
    在这里插入图片描述

创建ingress规则对外发布应用

使用Ingress对外暴露应用:

  • 通过Service关联Pod
  • 基于域名访问
  • 通过Ingress Controller实现Pod的负载均衡
  • 支持TCP/UDP 4层和HTTP 7层(Nginx)
    在这里插入图片描述

日志与监控

  • 使用Prometheus监控集群中资源的状态
  • 使用ELK来收集应用的日志

在这里插入图片描述
在这里插入图片描述

应用案例(因无开发代码,最终跑不起来)

基于 Java 编写一个简单的 Web 应用程序,并使用 Dockerfile 构建 Docker 镜像,并在 Kubernetes 上运行的步骤:

编写java代码

以下是一个基于 Spring Boot 构建的简单 REST API 示例,它将返回一个
包含问候语的 JSON 响应

首先,你需要安装 Java 和 Maven。然后,在命令行中执行以下步骤:

yum install java-1.8.0-openjdk-devel
java -version
yum install maven
mvn -version

创建一个新的 Spring Boot 项目,并指定项目名称和 Maven 坐标:
执行以下命令:创建myapp
需要跑很长时间

mvn archetype:generate \-DgroupId=com.example \-DartifactId=myapp \-DarchetypeArtifactId=maven-archetype-quickstart \-DinteractiveMode=false

在这里插入图片描述
在这里插入图片描述

在 pom.xml 文件中添加 Spring Boot 依赖项:

cd myapp/
vim pom.xml
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>

创建一个新的 Java 类,命名为 GreetingController.java,
并添加以下代码:

vim GreetingController.java
package com.example.myapp;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
public class GreetingController {@GetMapping("/greeting")public Greeting greeting(@RequestParam(value = "name", defaultValue = "World")String name) {return new Greeting(String.format("Hello, %s!", name));}
}

创建一个新的 Java 类,命名为 Greeting.java,并添加以下代码

vim  Greeting.java
package com.example.myapp;public class Greeting {private final String message;public Greeting(String message) {this.message = message;}public String getMessage() {return message;}
}

在命令行中进入项目目录,并执行以下命令来构建和打包应用程序:
需要较长时间

mvn clean package

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

会生成一个myapp.jar文件

编写 Dockerfile

创建一个名为 Dockerfile 的文件,并使用文本编辑器打开。输入以下内容:

cd ~/myapp/target
cp myapp-1.0-SNAPSHOT.jar myapp.jar
vim dockerfile
# 使用官方的 OpenJDK 8 镜像作为基础镜像
FROM openjdk:8-jdk-alpine
# 拷贝应用程序到容器中
COPY myapp.jar /app/myapp.jar
# 暴露端口
EXPOSE 8080
# 运行应用程序
ENTRYPOINT ["java","-jar","/app/myapp.jar"]
备注:做镜像,基础镜像最好用alpine或者rockylinux

构建 Docker 镜像

docker build -t myapp:1.0 .

在这里插入图片描述

导出镜像

docker save -o  myapp.tar.gz myapp:1.0

在 Kubernetes 上运行应用程序

使用 kubectl 命令行工具部署应用程序镜像。在命令行中,执行以下命令:

kubectl create deployment myapp --image=myapp:1.0 --port=8080  --replicas=3

上述命令会在 Kubernetes 集群中部署名为 myapp 的应用程序,使用镜像为 myapp:1.0,将容器
的端口设置为 8080,副本数为 3

创建 Kubernetes 服务service

在命令行中,执行以下命令创建 Kubernetes 服务:

kubectl expose deployment myapp --type=NodePort --port=80 --target-port=8080

上述命令会创建一个 Kubernetes 服务,将容器的端口映射到外部端口 80 上,以便可以通过外
部 IP 地址访问应用程序。

创建ingress服务

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: my-ingressannotations:nginx.ingress.kubernetes.io/rewrite-target: /
spec:rules:ingressClassName: nginx- host: example.comhttp:paths: - path: /myapppathType: Prefixbackend:service:name: myappport:name: 80

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

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

相关文章

【论文阅读笔记】CamoFormer: Masked Separable Attention for Camouflaged Object Detection

1.论文介绍 CamoFormer: Masked Separable Attention for Camouflaged Object Detection CamoFormer&#xff1a;用于隐藏目标检测的掩蔽可分离注意力 TPAMI 2024 Paper Code 2.摘要 如何从背景中识别和分割隐藏的对象是一个挑战。受transformer中多头自注意的启发&#xf…

【从零开始的LeetCode-算法】3254. 长度为 K 的子数组的能量值 I

给你一个长度为 n 的整数数组 nums 和一个正整数 k 。一个数组的 能量值 定义为&#xff1a; 如果 所有 元素都是依次 连续 且 上升 的&#xff0c;那么能量值为 最大 的元素。否则为 -1 。 你需要求出 nums 中所有长度为 k 的子数组的能量值。 请你返回一个长度为 n - k 1…

LLMs之PDF:zeroX(一款PDF到Markdown 的视觉模型转换工具)的简介、安装和使用方法、案例应用之详细攻略

LLMs之PDF&#xff1a;zeroX(一款PDF到Markdown 的视觉模型转换工具)的简介、安装和使用方法、案例应用之详细攻略 目录 zeroX的简介 1、支持的文件类型 zeroX的安装和使用方法 T1、Node.js 版本&#xff1a; 安装 使用方法 使用文件 URL&#xff1a; 使用本地路径&…

qt QStandardItemModel详解

1、概述 QStandardItemModel是Qt框架中提供的一个基于项的模型类&#xff0c;用于存储和管理数据&#xff0c;这些数据可以以表格的形式展示在视图控件&#xff08;如QTableView、QTreeView等&#xff09;中。QStandardItemModel支持丰富的数据操作&#xff0c;包括添加、删除…

思源笔记轻松连接本地Ollama大语言模型,开启AI写作新体验!

文章目录 前言1. 下载运行Ollama框架2. Ollama下载大语言模型3. 思源笔记设置连接Ollama4. 测试笔记智能辅助写作5. 安装Cpolar工具6. 配置Ollama公网地址7. 笔记设置远程连接Ollama8. 固定Ollama公网地址 前言 今天我们要聊聊如何通过cpolar内网穿透技术&#xff0c;把国产笔…

基于C++的决策树C4.5机器学习算法(不调包)

目前玩机器学习的小伙伴&#xff0c;上来就是使用现有的sklearn机器学习包&#xff0c;写两行代码&#xff0c;调调参数就能跑起来&#xff0c;看似方便&#xff0c;实则有时不利于个人能力发展&#xff0c;要知道现在公司需要的算法工程师&#xff0c;不仅仅只是会调参&#x…

这款Chrome 插件,使浏览器页面快速滑动到最底部和最顶部,并且还能...

前言 前几日我在使用谷歌浏览器&#xff0c;也就是chrome的时候&#xff0c;浏览一个内容很长的页面&#xff0c;由于页面上的内容有前后关联&#xff0c;所以我必须不停地切换到上面和下面。这非常不方便。使我非常抓狂。后来&#xff0c;我灵机一动&#xff0c;去谷歌浏览器…

汉诺塔问题代码分享及思路分享(c基础)

可以先自己尝试&#xff0c;只要看见过递归即可写。&#xff08;我自己是&#xff09;希望能自己尝试出来。 两种方法迭代比递归快很多.(不发代码的原因是想让你自己动手) 1 递归 2 迭代 猜数游戏是自己写的第一个有互动的程序。对我很有意义。 我绑定资源了的&#xff0c;大…

第9章 Apache WEB服务器企业实战

万维网 (WORLD WIDE WEB,WWW)服务器,也称之为WEB服务器,主要功能是提供网上信息浏览服务。WWW是 Internet的多媒体信息查询工具,是Internet上飞快发展的服务,也是目前用的最广泛的服务。正是因为有了WWW软件,才使得近年来 Internet 迅速发展。 目前主流的WEB服务器软件包…

第10章 MYSQL服务器企业实战

MySQL是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。 本章介绍关系型数据库特…

【初阶数据结构与算法】沉浸式刷题之顺序表练习(顺序表以及双指针两种方法)

文章目录 顺序表练习1.移除数组中指定的元素方法1&#xff08;顺序表&#xff09;方法2&#xff08;双指针&#xff09; 2.删除有序数组中的重复项方法1&#xff08;顺序表&#xff09;方法2&#xff08;双指针&#xff09; 3.双指针练习之合并两个有序数组方法1&#xff08;直…

【flask开启进程,前端内容图片化并转pdf-会议签到补充】

flask开启进程,前端内容图片化并转pdf-会议签到补充 flask及flask-socketio开启threading页面内容转图片转pdf流程前端主js代码内容转图片-browser端browser端的同步编程flask的主要功能route,def 总结 用到了pdf,来回数据转发和合成,担心flask卡顿,响应差,于是刚好看到threadi…

PADS的GND难解之谜——GND铺不上捅?GND焊盘上全是绿色叉号?

PADS难解之谜——GND覆不上铜&#xff1f;焊盘上全是叉号&#xff1f; 文章目录 PADS难解之谜——GND覆不上铜&#xff1f;焊盘上全是叉号&#xff1f;1、GND灌铜灌不上&#xff1f;2、GND焊盘上全是绿色叉号&#xff1f; 如果对你有帮助&#xff0c;就点赞收藏把&#xff01;(…

02- 模块化编程-007 Ltc1684( ADC16-Bit)采样显示

1、Ltc1684芯片介绍 该芯片是一款高精度的16位模数转换器(ADC)&#xff0c;适合于高精度仪器的开发&#xff0c;它能提供精准的模拟信号到数字信号的转换。 特性 采用 MSOP 封装的 16 位、250ksps ADC 单 5V 电源 低电源电流&#xff1a;850μA (典型值) 自动停机功能可把电源…

信息安全工程师(80)网络安全测评技术与工具

前言 网络安全测评是评估信息系统、网络和应用程序的安全性&#xff0c;以发现潜在的漏洞和威胁&#xff0c;并确保系统符合安全标准和政策的过程。 一、网络安全测评技术 渗透测试&#xff08;Penetration Testing&#xff09; 描述&#xff1a;通过模拟真实的攻击&#xff0c…

基于STM32的太阳跟踪系统设计

引言 本项目基于STM32微控制器设计了一个智能太阳跟踪系统&#xff0c;通过集成光敏传感器模块和电机控制系统&#xff0c;实现太阳能电池板的自动调节&#xff0c;以保持太阳能电池板始终垂直对准太阳&#xff0c;从而最大化光能的吸收效率。该系统通过实时监测太阳光的方向&…

新能源汽车与公共充电桩布局

近年来,全球范围内对新能源汽车产业的推动力度不断增强,中国新能源汽车市场也呈现蓬勃发展的势头,在政策与市场的共同推动下,新能源汽车销量持续增长。然而,据中国充电联盟数据显示,充电基础设施建设滞后于新能源汽车数量增长的现状导致充电桩供需不平衡,公共充电桩服务空白区域…

Qt中的Model与View 4:QStandardItemModel与QTableView

目录 QStandardItemModel API QTableView 导航 视觉外观 坐标系统 API 样例&#xff1a;解析一个表格txt文件 QStandardItemModel QStandardItemModel 可用作标准 Qt 数据类型的存储库。它是模型/视图类之一&#xff0c;是 Qt 模型/视图框架的一部分。它提供了一种基于…

【STM32】项目实战——OV7725/OV2604摄像头颜色识别检测(开源)

本篇文章分享关于如何使用STM32单片机对彩色摄像头&#xff08;OV7725/OV2604&#xff09;采集的图像数据进行分析处理&#xff0c;最后实现颜色的识别和检测。 目录 一、什么是颜色识别 1、图像采集识别的一些基本概念 1. 像素&#xff08;Pixel&#xff09; 2. 分辨率&am…

Request 和 Response 万字详解

文章目录 1.Request和Response的概述2.Request对象2.1 Request 继承体系2.2 Request获取请求数据2.2.1 获取请求行数据2.2.2 获取请求头数据2.2.3 获取请求体数据2.2.4 获取请求参数的通用方式 2.3 解决post请求乱码问题 掌握内容讲解内容小结 2.4 Request请求转发 3.HTTP响应详…