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 项目的主要内容,如果未能解决你的问题,请参考以下文章