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

编程教程 > Java > Spring (1511) 2024-11-26 14:39:04

环境准备

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

[user]

apiVersion: apps/v1  #kubectl api-versions 可以通过这条指令去看版本信息
kind: Deployment # 指定资源类别
metadata: #资源的一些元数据
  name: k8s-boot-app-deployment #deloyment的名称
  labels:
    app: k8s-boot-app  #标签
spec:
  replicas: 3 #创建pod的个数
  selector:
    matchLabels:
      app: k8s-boot-app #满足标签为这个的时候相关的pod才能被调度到
  template:
    metadata:
      labels:
        app: k8s-boot-app
    spec:
      containers:
        - name: k8s-boot-app
          image: k8s-boot-app:1.0
          imagePullPolicy: IfNotPresent #当本地有镜像的时候优先选用本地,没有才选择网络拉取
          ports:
            - containerPort: 8080 #开放8080

[/user]


部署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 #删除服务

 


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

 

 


评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
环境准备minikube 安装,参考minikube k8s 安装详细教程spring boot demo项目一个spring boot项目 maven 主要依赖 &lt;depe...
接上篇文章minikube(k8s)部署spring boot项目(一)上篇文章讲解了k8s部署spring boot demo项目的一部分,本文主要讲解如何将服务暴露指定的端口给外部调用
环境本次minikube安装环境为Ubuntu 18.04.6 LTS安装docker-ce参考:Ubuntu 在线安装 Docker-xqlee (blog.xqlee.com)注意配置doc...
罗技k375s优联配对默认情况下,K375s键盘的优联是f1那个键。由于某些原因被替换成为了蓝牙链接模式导致优联无法正常使用。这个时候需要下载一个软件 unif
idea2018配置Tomcat8热部署完整记录
yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel注意必须安装java-1.8.0-openjdk-devel,否则没有javac命令
spring boot项目打war包再部署到外部tomcat中
jenkins是devops神器,本篇文章介绍如何安装和使用jenkins部署Spring Boot项目jenkins搭建 部署分为三个步骤;第一步,jenkins安装第二步,插件安装和配置第三...
skywalking 是一款不错的java apm监控服务,比zipkin功能更强大,需要的服务器配置也更多一些
前置条件安装部署好graylog server创建graylog input 打开System/Inputs菜单选择输入类型为filebeat进行创建input创建inputinput信息配置i...
Spring Boot logback tomcat部署不生效问题解决
视频封装/格式常见的封装格式:MP4/MKV....MP4/MKV是你下载的视频文件最常见的种类(文件后缀是.mp4/.mkv)。这些文件其实类似一个包裹,它的
引言    通过之前spring boot mybatis 整合的讲解: spring boot mybaties整合  (spring boot mybaties 整合 基于Java注解方式写...
Java EE 8 JSON Pointer讲解,Java EE 8包含JSON处理API的更新,并为最新的JSON标准提供最新的IEFT标准。
概述Vue3 + Vite 打包整合到Spring boot项目,两种模式。单一项目和多重项目单一项目:vue 单一项目整合到一个Spring Boot 项目多