暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

每天五分钟写K8(三):部署SpringBoot项目

CodingWithFun 2019-09-16
125

一、准备一个SpringBoot的工程

Spring Initializr创建一个spring boot的项目,之后加入一个controller即可

 1@RestController
2@SpringBootApplication
3public class DemoApplication {
4
5    public static void main(String[] args) {
6        SpringApplication.run(DemoApplication.class, args);
7    }
8
9    @RequestMapping("/hello")
10    public String hello() {
11        return "Hello, world!";
12    }
13
14}


二、创建镜像

准备dockerfile文件

    FROM openjdk:8-jdk-alpine
    ARG JAR_FILE
    ADD ${JAR_FILE} app.jar
    ENTRYPOINT [ "java", "-jar", "/app.jar"]


    执行以下命令打包镜像,并上传到worker节点

      docker build --build-arg JAR_FILE=./target/k8s-demo-0.0.1-SNAPSHOT.jar  -t k8s-boot:1.0 .

      如果worker节点有多个,需上传到所有节点,或者只上传到一个节点,但将该节点打上特殊label,调度的时候只调度到该标签节点。本文采用第二种方式处理。

      对节点打标签的命令如下:

        kubectl label nodes <hostname> <label key value>

        本文中打标签命令如下:

        kubectl label nodes <hostnode> testnode=test


        三、kubectl发布应用

        与以前不同的是deployment与Service放在同一文件中,内容如下:

          apiVersion: apps/v1beta1
          kind: Deployment
          metadata:
          name: k8s-boot-deployment
          labels:
          app: k8s-boot-deployment
          spec:
          replicas: 1
          selector:
          matchLabels:
          app: k8s-boot

          template:
          metadata:
          labels:
          app: k8s-boot
          spec:
          containers:
          - name: springboot-demo
          image: k8s-boot:1.0
          imagePullPolicy: Never
          ports:
          - containerPort: 8080
          nodeSelector:
          testnode: test


          ---
          apiVersion: v1
          kind: Service
          metadata:
          name: k8s-boot-service


          spec:
          type: NodePort
          ports:
          - port: 8080
          nodePort: 30000
          selector:
          app: k8s-boot


          注意这里我们采用本地镜像,故imagePullPolicy: Never,而且借助NodeSelector使pod运行到镜像上传的节点上。


          最后在浏览器输入:http://<worker node IP>:30000/hello即可访问我们写的SpringBoot项目


          代码下载:

          https://github.com/loveoobaby/blog_code


          文章转载自CodingWithFun,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

          评论