专门做效果图的网站,wordpress 主题缩略图,音乐网站开发案例,网站风格包括什么意思前置依赖 k8s集群#xff0c;如果没有安装#xff0c;请先安装  kubectl #xff0c;客户端部署需要依赖  
应用镜像构建 
应用镜像构建不用自己去执行#xff0c;相关镜像已经推送到docker hub 仓库#xff0c;如果要了解过程和细节#xff0c;可以看一下#xff0c;否…前置依赖 k8s集群如果没有安装请先安装  kubectl 客户端部署需要依赖  
应用镜像构建 
应用镜像构建不用自己去执行相关镜像已经推送到docker hub 仓库如果要了解过程和细节可以看一下否则直接跳到k8syaml文件配置章节 
Java应用镜像构建 
代码地址https://github.com/dongweizhao/backend 
Java应用打包 
调用sh package.sh会执行mvn的package命令进行打包 
编写Dockerfile 
从target目录复制可执行jar 
FROM openjdk:8-jre
COPY target/backend-0.0.1-SNAPSHOT.jar /app.jar
ENTRYPOINT java -jar ${JAVA_OPTS} /app.jar镜像打包推送 
执行sh push.sh 推送至dockerhub仓库镜像地址dweizhao/backend:latest 
前端应用镜像构建 
代码地址https://github.com/dongweizhao/frontend 
前端项目结构如下 采用百度低代码平台amis进行开发 
编写Dockerfile 
拷贝前端工程dist目录至/frontend并进行目录授权 
from nginx
copy ./dist /frontend
run chown nginx.nginx /frontend -R
copy nginx.conf /etc/nginx/conf.d/default.conf 
编写nginx.conf文件 
server{listen 80;server_name localhost;root  /frontend;index index.html index.htm;location /login {try_files $uri $uri/ /login.html;}
}推送镜像 
执行sh push.sh推送dockerhub仓库镜像地址dweizhao/frontend:latest 
k8s yaml文件配置 
以下是我们部署的服务在k8s 中路由示意图 后端服务配置 
backend-dp.yaml 
由于我们服务是无状态服务使用Deployment进行部署Deployment拥有更加灵活强大的升级、回滚功能并且支持滚动更新 
apiVersion: apps/v1
kind: Deployment
metadata:name:  backend
spec:selector:matchLabels:app:  backendreplicas: 1template:metadata:labels:# service 会根据此标签来查找此podapp:  backendversion: latestspec:containers:- name: backendimage: dweizhao/backend:latestimagePullPolicy: Alwaysbackend-svc.yaml 
Service相当于Spring cloud中Ribbon的作用提供了服务发现和负载均衡的功能而不用关心具体服务实例有多少个在 k8s的服务实例就是Pod这里我们使用ClusterIP类型因为是通过Ingress在集群内访问通过 app:backend标签来查找对应pod所以 pod 的label必须包含app:backend 
apiVersion: v1
kind: Service
metadata:name: backend
spec:type: ClusterIPports:- name: backend-httpport: 8080targetPort: 8080protocol: TCPselector:# 根据标签查找 podapp: backend前端服务配置 
frontend-dp.yaml 
前端镜像是一个 nginx 
apiVersion: apps/v1
kind: Deployment
metadata:name:  frontend
spec:selector:matchLabels:app:  frontendreplicas: 1template:metadata:labels:# service 会根据此标签来查找此podapp:  frontendversion: latestspec:containers:- name: frontendimage: dweizhao/frontend:latestimagePullPolicy: Alwaysfrontend-svc.yaml 
apiVersion: v1
kind: Service
metadata:name: frontend
spec:type: ClusterIPports:- name: frontend-httpport: 80targetPort: 80protocol: TCPselector:# 根据标签查找 podapp: frontendIngress配置 
Ingress相当于nginx的作用匹配url转发请求至Service 注意k8s不同的版本对应的Ingress apiVerson有点细微差别所以要找到对应k8s版本的Ingress我们的k8s版本为v1.25.13 apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: test-ingress
spec:ingressClassName: nginxrules:- host: k8sdemo.comhttp:paths:- path: /pathType: Prefixbackend:service:name: frontendport:number: 80#backend开头的 url转发到后端服务 否则都转发到前端服务              - path: /backendpathType: Prefixbackend:service:name: backendport:number: 8080k8s部署 
部署使用kubectl进行部署如果没有请先安装安装完成以后把以上yaml文件保存至本地 
创建命名空间 
kubectl create namespace k8sdemo部署 
部署系统至k8sdemo空间下 
kubectl create namespace k8sdemo  kubectl apply -f backend-dp.yaml -f backend-svc.yaml -f frontend-dp.yaml -f frontend-svc.yaml -f ingress.yaml -n k8sdemo查看系统状态 
#查看pod 启动状态
kubectl get pods -n k8sdemo
# 查看服务状态
kubectl get svc -n k8sdemo
# 查看Ingress状态
kubectl get ingress -n k8sdemohost 解析 
在 hosts 文件中对k8sdemo.com域名映射映射到k8s 的任意node节点上即可假设IP为172.18.2.53配置如下 
172.18.2.53 k8sdemo.com测试 
在浏览器访问k8sdemo.com如果出现以下结果则部署成功可以看到正确请求到数据这个数据为backend提供 总结 
以上我们只是简单演示了下如何在 k8s 中快速部署一个前后端应用让你对在 k8s 操作有一个快速认识但是此应用如果要在生产使用还要在做些配置比如探针配置因为后端服务的启动可能是个假启动必须要配置探针探活之后才能让 service访问否则导致请求异常同时应用有些文件如果需要持久化还需要配置存储卷等操作