K8S 部署 SpringBoot 项目

Posted cuiran

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8S 部署 SpringBoot 项目相关的知识,希望对你有一定的参考价值。

开篇

基于前面的文章 CentOS7 使用 kubeadm 部署 K8s(单机/集群) 介绍了k8s的部署,接下来需要验证,本文选择通过一个简单的springboot 项目来验证。

springboot项目构建

springboot项目这里不过多介绍,主要介绍如何构建镜像及推送到镜像仓库

镜像构建

首先新建文件dockerfile

FROM openjdk:8-jdk-alpine
MAINTAINER cayden <cuiran2001@163.com>

#定义时区参数
ENV TZ=Asia/Shanghai
# 设置时区
RUN rm -rf /etc/localtime
RUN apk --no-cache add tzdata && \\
    ln -sv /usr/share/zoneinfo/$TZ /etc/localtime &&\\
    echo '$TZ' >/etc/timezone
RUN echo "export LANG=C.UTF-8" > /etc/profile.d/locale.sh

VOLUME /data/app
EXPOSE 8080
# 定义参数
ARG JAR_FILE=target/*.jar
ENV JAVA_OPTS=""

# 复制jar
COPY $JAR_FILE app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

#docker run -e "SPRING_PROFILES_ACTIVE=prod" -p 8080:8080 -t springio/gs-spring-boot-docker

进行build 操作

docker build -t cuiran2001/helloworld .

镜像推送

镜像推送至docker hub

docker push cuiran2001/helloworld:v1.1

推送显示如下 ,表示推送成功!

The push refers to repository [docker.io/cuiran2001/helloworld]
41140fae9ea6: Layer already exists
20efe8a47454: Layer already exists
4a749ec3afe9: Layer already exists
e64205be4795: Layer already exists
ceaf9e1ebef5: Layer already exists
9b9b7f3d56a0: Layer already exists
f1b5933fe4b5: Layer already exists
v1.1: digest: sha256:5c8fed1f1d2af902204aab0b04060db227a1c539f9750c22bbcae025777c3cfb size: 1782

可以到docker hub 上进行查看

k8s部署

模版文件准备

准备一个模板文件 testspringboot-rc.yaml

apiVersion: v1
kind: ReplicationController
metadata:
  name: testspringboot  #必选,资源名称
spec:
  # 节点数,设置为多个可以实现负载均衡效果
  replicas: 1
  selector:
    app: testspringboot
  template:
    metadata:
      labels:
        app: testspringboot
    spec:
      containers:
      - name: helloworld
        #镜像名
        image: cuiran2001/helloworld:v1.1
        #本地有镜像就不会去仓库拉取
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 8080

配置说明:
kind:资源类型,详情见文末
metadata: 元数据,用于备注资源信息
spec: specification of the resource content 指定该资源的内容
selector: 选择器,将选择具有label标签的资源作为管理范围
template: 资源模版定义
containerPort: 容器暴露给 K8S 的端口

执行命令

kubectl create -f testspringboot-rc.yaml

暴露对外端口

1、创建 SVC 模板文件 testspringboot-svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: testsvc
spec:
  type: NodePort
  ports:
    - port: 8080
      targetPort: 8080
      # 节点暴露给外部的端口(范围必须为30000-32767)
      nodePort: 30001
  selector:
    app: testspringboot

2、创建 Service

kubectl create -f testspringboot-svc.yaml

3、验证测试

访问http://xxxxx:30001 即可

以上是关于K8S 部署 SpringBoot 项目的主要内容,如果未能解决你的问题,请参考以下文章

K8S 部署 SpringBoot 项目

K8S 部署 SpringBoot 项目

K8S 部署 SpringBoot 项目

K8S 部署 SpringBoot 项目

K8S 如何部署SpringBoot项目

springboot 项目部署在Kubernetes (k8s)集群上的demo