k8s 部署 springboot 我的项目
本篇来演示一下 如何应用 k8s 来疾速部署一个 springboot 我的项目,体验一下 k8s 和理论我的项目的联合
1. 环境筹备
- 操作系统:Centos7(CentOS Linux release 7.9.2009)
- Master 主节点:1 台 虚拟机
- Node 计算节点:2 台 虚拟机
- K8s version:v1.23.5(选的较新的版本)
- Docker version:20.10.14
环境和后面中 kubeadm 搭建 k8s 的统一
2. 部署流程 概述
- 创立 SpringBoot 我的项目 凋谢一个 /k8s/hello 接口 用于测试
- 通过编写 dockerfile 把 springboot 我的项目增加进去 构建一个镜像
- 把镜像 push 到对应的 阿里云仓库(或者 harbor 等等..)
- 编写 k8s yaml 进行部署 2 个正本 + ingress 实现根本的负载平衡
- kubectl 进行部署
- 拜访申请门路 进行测试
3. 创立 springboot 我的项目
省略创立我的项目步骤
提供一个 /k8s/hello 接口 接管一个 name 参数,打印并且返回
4. 编写 Dockerfile 文件构建镜像
dockerfile 文件很简略 就是启动下面的 springboot 我的项目
4.1 Dockerfile 文件
FROM openjdk:8-alpine
COPY ./target/springboot-k8s-0.0.1-SNAPSHOT.jar /app/springboot-k8s-demo.jar
ENTRYPOINT ["java", "-jar" , "/app/springboot-k8s-demo.jar"]
4.2 执行构建命令
docker build -t boot-k8s-demo:v1 #构建镜像
5. 把镜像 push 到对应的 阿里云仓库
这里简略应用 阿里云镜像仓库 作为 镜像存储地,能够依据理论状况 比方上传到 Harbor 等等都能够
docker tag boot-k8s-demo:v1 registry.cn-hangzhou.aliyuncs.com/askajohnny/k8s:v1 #打标签 用于上传到 阿里云镜像仓库
docker login --username=176xxxxx741 registry.cn-hangzhou.aliyuncs.com
docker push registry.cn-hangzhou.aliyuncs.com/askajohnny/k8s:v1 #推送镜像到 阿里云仓库
6. 编写 k8s yaml 进行部署 2 个正本 + ingress 实现根本的负载平衡
部署中 简略定义了 Deployment 和 一个 Service 最初还定义了一个 Ingress 资源文件,前提是 曾经部署了 Ingress-nginx 来解析这个文件(不详 能够看上一篇 对于 如何部署 Ingress-nginx)
apiVersion: apps/v1
kind: Deployment #部署
metadata:
name: springboot-app
spec:
replicas: 2 #2 个正本
selector:
matchLabels:
app: springboot-app
template:
metadata:
labels:
app: springboot-app
spec:
containers:
- name: springboot-app
image: registry.cn-hangzhou.aliyuncs.com/askajohnny/k8s:v1 #刚刚 push 到阿里云上的镜像地址
ports:
- containerPort: 8080 #默认 springboot 端口
---
apiVersion: v1
kind: Service
metadata:
name: springboot-app
spec:
selector:
app: springboot-app #选中下面的 Deployment
ports:
- port: 7003 #对外 7003 端口
targetPort: 8080
---
#Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: myingress
labels:
name: myingress
spec:
IngressClass: nginx
rules:
- host: springboot.demo.com #所有的 host 这个域名申请 转发到下面的 Service= springboot-app
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: springboot-app # 转发到 这个 Service
port:
number: 7003
7. kubectl 部署 deploy-springboot-k8s.yaml
应用 kubectl 进行部署下面的 部署文件
kubect apply -f deploy-springboot-k8s.yaml
kubectl get all #查看 default 上面的所有
能够看到 2 个 正本 pod 曾经 Running
8. 拜访申请门路 进行测试
拜访前 须要先把 springboot.demo.com 域名增加到 宿主机的 /etc/hosts 中 保障能够失常解析到 ingress-nginx 那台机器上的 nginx 即可(不详 能够看上一篇)
申请接口:http://springboot.demo.com/k8…
查看 两个正本的 日志,能够看到 Ingress 的默认轮训负载平衡策略也失效了,至此 k8s 部署 springboot 我的项目曾经完结
总结
本篇次要 解说了 k8s 如何部署 springboot 我的项目,过程很简略,目前只是半手动部署,前面引入 CICD 实现真正的 自动化部署。
欢送大家拜访集体博客:https://www.askajohnny.com
欢送大家拜访 集体博客 Johnny 小屋