minikube(k8s)部署spring boot项目(一)

教程分享 > Java教程 > Spring (1773) 2024-08-07 11:05:25

环境准备

minikube 安装,参考minikube k8s 安装详细教程

spring boot demo项目一个

spring boot项目

maven 主要依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>


构建主要配置,配置一个打包后的名称:
打包名称

项目主要内容,一个文件 

package net.ifok.demo.k8s;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.net.InetAddress;
import java.net.UnknownHostException;

@RestController
@SpringBootApplication
public class DemoK8sApplication {

    @GetMapping("/info")
    public String getInfo() throws UnknownHostException {
        InetAddress addr = InetAddress.getLocalHost();
        String address = addr.getHostAddress();
        String hostName= addr.getHostName();
        return System.getProperty("os.name")+":"+address+":"+hostName;
    }

    public static void main(String[] args) {
        SpringApplication.run(DemoK8sApplication.class, args);
    }

}


Get请求,返回一个信息

构建docker镜像


首先将上面的spring boot项目打包为一个jar文件
k8s-boot-app.jar

创建Dockerfile

FROM openjdk:8-alpine
#更新Alpine的软件源为国内(清华大学)
RUN echo "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/main/" > /etc/apk/repositories

RUN apk update \
        && apk upgrade \
        && apk add --no-cache bash \
        bash-doc \
        bash-completion \
        && rm -rf /var/cache/apk/* \
        && /bin/bash
ADD k8s-boot-app.jar /
EXPOSE 8080
CMD ["java","-Xms256M","-Xmx256M","-Duser.timezone=Asia/ShangHai", "-jar", "/k8s-boot-app.jar"]


将dockerfile和项目文件上传到Linux服务器上的一个目录。接下来进行docker镜像构建

sudo docker build -t k8s-boot-app:1.0 ./


构建完成后可以通过命令查看

sudo docker images

编写k8s deployment配置文件

k8s-boot-app-deployment.yml

登录后查阅

此处内容已经隐藏,需要登录后刷新查阅

登录/注册


部署spring boot项目到k8s


部署命令:

sudo kubectl create -f ./k8s-boot-app-deployment.yml


查看deployment信息

sudo kubectl get deployments


开放访问端口

sudo kubectl expose deployment k8s-boot-app-deployment --type=NodePort


查看开放端口的服务信息

sudo kubectl get services


查看部署的prod信息

sudo kubectl get pods


查看某个prod的日志信息

sudo kubectl logs -f springboot-k8s-template-deployment-687f8bf86d-lcq5p

提示:springboot-k8s-template-deployment-687f8bf86d-lcq5p 为上面查询到的prod名称


获取访问url地址

sudo minikube service k8s-boot-app-deployment --url

获取访问地址

浏览器打开访问接口

接口访问

查看k8s的仪表盘

deployment信息
deployment信息

prod信息
prod信息

其他命令:

sudo kubectl create -f ./k8s-boot-app-deployment.yml #部署k8s应用
sudo kubectl get deployments #查看deployment信息

sudo kubectl expose deployment k8s-boot-app-deployment --type=NodePort #开放端口访问
sudo kubectl get services #查看services信息,如端口映射情况
sudo kubectl delete service nginx-service #删除service

sudo kubectl get pods #获取部署的prod列表信息
sudo kubectl logs -f springboot-k8s-template-deployment-687f8bf86d-lcq5p #查看某个pod的日志

sudo minikube service k8s-boot-app-deployment --url #获取访问url

sudo kubectl delete -f ./k8s-boot-app-deployment.yml #删除服务

 


下一期讲解如何通过服务指定端口访问项目

 

 

https://www.leftso.com/article/971.html

相关文章
环境准备minikube 安装,参考minikube k8s 安装详细教程spring boot demo项目一个spring boot项目 maven 主要依赖 &lt;depe...
接上篇文章minikube(k8s)部署spring boot项目(一)上篇文章讲解了k8s部署spring boot demo项目的一部分,本文主要讲解如何将服务暴露指定的端口给外部调用
spring boot项目打war包再部署到外部tomcat中
jenkins是devops神器,本篇文章介绍如何安装和使用jenkins部署Spring Boot项目jenkins搭建 部署分为三个步骤;第一步,jenkins安装第二步,插件安装和配置第三...
Spring Boot logback tomcat部署不生效问题解决
       ​Spring Boot       这里主要对Spring Boot 项目和Spring MVC 相关项目中,日期参数的使用以及Ajax请求日期数据返回格式的处理
Spring Boot 2.0 Redis整合,通过spring boot 2.0整合Redis作为spring缓存框架的实现。
一、spring boot shiro 无状态token认证项目结构图​二、无状态spring boot shiro相关配置2.1shiro redis 缓存配置首先是实现shiro的cache...
引言    通过之前spring boot mybatis 整合的讲解: spring boot mybaties整合  (spring boot mybaties 整合 基于Java注解方式写...
Java编程之spring boot shiro redis整合基于角色和权限的安全管理,Java编程,spring boot,shiro,权限控制
spring boot又一个spring框架的经典项目,本文讲解spring boot入门的环境配置以及第一个项目,Spring Boot 入门教程
前言    本教程主要讲解spring boot如何整合 spring data elasticsearch 实现elasticsearch检索引擎的整合使用
spring boot webflux client实战,webclient是spring webflux的一个小组件。对于Java的http通讯来说,webclient是非常简单易用的。
spring boot是一个崭新的spring框架分支项目,本文讲解基本的数据库配置
Java编程中spring boot项目如何获取spring容器applicationContext