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.部署流程 概述

  1. 创立SpringBoot 我的项目 凋谢一个 /k8s/hello 接口 用于测试
  2. 通过编写 dockerfile 把springboot我的项目增加进去 构建一个镜像
  3. 把镜像 push 到对应的 阿里云仓库(或者harbor 等等..)
  4. 编写 k8s yaml 进行部署2个正本 + ingress 实现根本的负载平衡
  5. kubectl 进行部署
  6. 拜访申请门路 进行测试

3.创立springboot我的项目

省略创立我的项目步骤

提供一个 /k8s/hello 接口 接管一个 name 参数,打印并且返回

4.编写 Dockerfile文件构建镜像

dockerfile文件很简略 就是启动下面的springboot 我的项目
4.1 Dockerfile 文件
FROM openjdk:8-alpineCOPY ./target/springboot-k8s-0.0.1-SNAPSHOT.jar /app/springboot-k8s-demo.jarENTRYPOINT ["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.comdocker push registry.cn-hangzhou.aliyuncs.com/askajohnny/k8s:v1 #推送镜像到 阿里云仓库

6.编写 k8s yaml 进行部署2个正本 + ingress 实现根本的负载平衡

部署中 简略定义了Deployment 和 一个 Service 最初还定义了一个 Ingress 资源文件,前提是 曾经部署了 Ingress-nginx 来解析这个文件(不详 能够看上一篇 对于 如何部署 Ingress-nginx )
apiVersion: apps/v1kind: Deployment #部署metadata:  name: springboot-appspec:  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: v1kind: Servicemetadata:  name: springboot-appspec:  selector:    app: springboot-app #选中下面的 Deployment  ports:  - port: 7003 #对外7003端口    targetPort: 8080--- #Ingress apiVersion: networking.k8s.io/v1kind: Ingressmetadata:  name: myingress  labels:    name: myingressspec:  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小屋