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

环境准备

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

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

 

原创文章,作者:sunnyman218,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/243936.html

(0)
上一篇 2022年4月11日 22:20
下一篇 2022年4月11日 22:20

相关推荐

发表回复

登录后才能评论