k8s部署模板

1. 部署前端项目

# 定义 Deployment 对象,用于部署前端应用
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: xingtu-ui          # 应用标签,用于选择器name: xingtu-ui           # 部署的名称namespace: xingtu-cloud   # 指定部署的命名空间
spec:progressDeadlineSeconds: 600  # 设置升级的最长时间限制replicas: 1                   # 设置副本数为1selector:                     # 选择器配置,用于匹配模板中的标签matchLabels:app: xingtu-ui            # 匹配模板中的标签为 app: xingtu-uistrategy:rollingUpdate:           # 定义滚动升级策略maxSurge: 50%          # 允许的最大扩容比例maxUnavailable: 50%    # 允许的最大不可用比例type: RollingUpdate      # 指定升级类型为 RollingUpdate 逐步替换每个Podtemplate:metadata:labels:app: xingtu-ui      # 模板中的标签,与选择器匹配spec:volumes:- name: xingtu-mysql-config  # 定义一个卷,用于挂载配置文件configMap:name: xingtu-ui-config # 指定 ConfigMap 的名称,用于存储配置数据items:- key: nginx.conf  # ConfigMap 中的键,表示要挂载的配置文件path: nginx.conf  # 挂载到容器中的路径defaultMode: 420   # 设置挂载的文件的默认权限(权限值为420对应八进制文件权限0644)imagePullSecrets:- name: horbor-134-160-180-87-secret  # 提前在项目中配置访问阿里云的账号密码containers:- image: $REGISTRY/$DOCKERHUB_NAMESPACE/xingtu-ui:SNAPSHOT-$BUILD_NUMBER # 定义容器使用的镜像,其中 $REGISTRY、$DOCKERHUB_NAMESPACE 和 $BUILD_NUMBER 是变量imagePullPolicy: Always   # 镜像拉取策略为始终拉取最新版本name: app  # 定义容器的名称ports:- containerPort: 80 # 容器监听的端口号protocol: TCP  # 定义协议为 TCPresources:  # 定义容器的资源限制,包括CPU和内存limits: #定义资源的上限cpu: 300m  # 容器的 CPU 资源限制为300m(300毫核)memory: 600Mi # 容器的内存资源限制为600Mi(600兆字节)terminationMessagePath: /dev/termination-log #定义容器终止时的日志路径terminationMessagePolicy: File #设置终止消息的策略为 File,表示终止消息将写入到文件中volumeMounts: #定义容器挂载的卷的配置- name: xingtu-ui-config #指定要挂载的卷的名称readOnly: true #设置挂载为只读,确保容器只能读取卷中的内容mountPath: /etc/nginx/nginx.conf #定义挂载到容器中的路径subPath: nginx.conf #指定卷中的子路径,即挂载的文件名dnsPolicy: ClusterFirst #指定 DNS 策略为 ClusterFirst,表示容器将使用 Kubernetes 集群内部的 DNS 解析服务restartPolicy: Always #定义容器的重启策略为 Always,表示当容器终止时,始终自动重启容器terminationGracePeriodSeconds: 30 #定义终止容器的优雅期限为30秒# 定义 Service 对象,用于提供前端应用的访问服务
---
apiVersion: v1
kind: Service
metadata:labels:app: xingtu-ui      # 为服务添加标签,用于标识该服务name: xingtu-ui       # 定义服务的名称为 xingtu-uinamespace: xingtu-cloud   # 指定服务所在的命名空间
spec:ports:- name: http         # 定义端口的名称为 httpport: 80           # 服务监听的端口号protocol: TCP      # 定义协议为 TCPtargetPort: 80     # 将流量转发到 Pod 的 80 端口selector:app: xingtu-ui # 选择器,用于将服务与特定的 Pod 关联sessionAffinity: None # 会话亲和性设置为 None,表示没有会话保持type: ClusterIP    # 服务类型为 ClusterIP,适用于集群内部访问

使用教程:

  1. 创建 ConfigMap YAML 文件,例如 configmap.yaml:
apiVersion: v1
kind: ConfigMap
metadata:name: xingtu-ui-config
data:nginx.conf: |server {listen 80; # Nginx 监听的端口server_name your-domain.com; # 填写你的域名或者公共 IP 地址location / {proxy_pass http://xingtu-ui-service; # 这指定了代理请求的后端服务proxy_set_header Host $host; #设置一些代理请求的头信息proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme; }
}

在这个文件中,我们定义了一个名为 xingtu-ui-config 的 ConfigMap,其中包含了一个键为 nginx.conf 的配置文件。

  1. 使用 kubectl 应用 ConfigMap:
kubectl apply -f configmap.yaml
  1. 将此 YAML 文件保存为 deployment.yaml。
  2. 使用 kubectl apply 命令部署应用:kubectl apply -f deployment.yaml。
  3. 查看部署状态:kubectl get deployments -n xingtu-cloud。
  4. 查看服务状态:kubectl get services -n xingtu-cloud。
  5. 获取服务的 ClusterIP 地址:kubectl get service xingtu-ui -n xingtu-cloud。
  6. 在浏览器中访问前端应用:http://(使用步骤5中获取的 ClusterIP 地址)。

2.部署后端项目

apiVersion: apps/v1
kind: Deployment
metadata:labels:app: xingtu-authname: xingtu-authnamespace: xingtu-cloud   #一定要写名称空间
spec:progressDeadlineSeconds: 600replicas: 1selector:matchLabels:app: xingtu-authstrategy:rollingUpdate:maxSurge: 50%maxUnavailable: 50%type: RollingUpdatetemplate:metadata:labels:app: xingtu-authspec:imagePullSecrets:- name: horbor-134-160-180-87-secret  #提前在项目下配置访问阿里云的账号密码containers:- image: $REGISTRY/$DOCKERHUB_NAMESPACE/xingtu-auth:SNAPSHOT-$BUILD_NUMBER
#           readinessProbe: #检查容器是否准备好接收流量的设置
#             httpGet: #HTTP GET 请求检查容器的健康状态
#               path: /actuator/health #检查的路径 
#               port: 8080 #检查的端口
#             timeoutSeconds: 10 #容器健康检查的超时时间
#             failureThreshold: 30 #失败次数
#             periodSeconds: 5 #间隔时间imagePullPolicy: Alwaysname: appports:- containerPort: 8080protocol: TCPresources:limits:cpu: 300mmemory: 600MiterminationMessagePath: /dev/termination-logterminationMessagePolicy: FilednsPolicy: ClusterFirstrestartPolicy: AlwaysterminationGracePeriodSeconds: 30
---
apiVersion: v1
kind: Service
metadata:labels:app: xingtu-authname: xingtu-authnamespace: xingtu-cloud
spec:ports:- name: httpport: 8080protocol: TCPtargetPort: 8080selector: #指定该服务将关联到哪些标签匹配的 Podapp: xingtu-auth #关联到具有标签 app: xingtu-auth 的 PodsessionAffinity: None # 设置会话亲和性。在这里,设置为 None,表示没有会话保持type: ClusterIP #定义服务的类型。在这里,服务类型为 ClusterIP,该服务只能在 Kubernetes 集群内部访问
  1. 保存配置文件: 将上述的 YAML 配置保存为一个文件,例如 xingtu-auth-deployment.yaml
  2. 应用配置: 使用 kubectl apply 命令将配置文件应用到 Kubernetes 集群。在终端中运行:
kubectl apply -f xingtu-auth-deployment.yaml

这将在指定的命名空间 (xingtu-cloud) 中创建 Deployment 和 Service。

  1. 检查部署状态: 可以使用以下命令检查部署的状态:
kubectl get deployments -n xingtu-cloud

确保 Deployment 的副本数量为 1,并且可以看到应用正常运行。

  1. 检查服务状态: 使用以下命令检查服务的状态:
kubectl get services -n xingtu-cloud

获取服务的 ClusterIP 地址。

  1. 访问应用: 你可以使用获取到的 ClusterIP 地址和服务的端口(在这里是 8080)访问应用。例如,如果 ClusterIP 地址是 10.0.0.1
curl http://10.0.0.1:8080

如果你是在浏览器中访问,可以打开 http://10.0.0.1:8080

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/694086.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux系统消息队列的模式和介绍

消息队列 消息队列的两种模式点对点模式(生产者消费者模型)发布/订阅模式(发布者和订阅者模型) 常用消息队列介绍RabbitMQ主要特性安装需要优点缺点 ActiveMQ主要特性安装需要优点缺点 RocketMQ主要特性安装需要优点缺点 kafka主要…

【Vue】v-for中:key中item.id与Index使用的区别

先说结论&#xff0c;推荐使用【:key"item.id"】而不是将数组下标当做唯一标识&#xff0c;前者能做到全部复用 场景&#xff1a;删除无序列表中的<li>标签 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8&q…

vulfocus靶场搭建

vulfocus靶场搭建 什么是vulfocus搭建教程靶场配置场景靶场编排靶场优化 什么是vulfocus Vulfocus 是一个漏洞集成平台&#xff0c;将漏洞环境 docker 镜像&#xff0c;放入即可使用&#xff0c;开箱即用&#xff0c;我们可以通过搭建该靶场&#xff0c;简单方便地复现一些框架…

mysql删除idb文件,或者idb文件损坏后的修复

由于使用docker磁盘已满&#xff0c;导致建立表过程中&#xff0c;数据的插入存在问题&#xff0c;进而导致后续启动时读取该表的idb存在问题&#xff0c;导致无法启动 现在提供一种思路处理该种情况 innodb_force_recovery 选项可以让你在某些类型的错误发生时仍然启动 MySQL。…

OpenSIPS3.4.3的db_virtual模块

请看下面的配置&#xff1a; loadmodule "db_postgres.so" loadmodule "db_virtual.so" modparam("db_virtual", "db_urls", "define group FAILOVER") modparam("db_virtual", "db_probe_time", 10) …

纯血鸿蒙系统,拿什么与安卓、iOS比?

鸿蒙系统的出现就是来打破这种僵局的&#xff0c;华为鸿蒙是以生态系统为基本而产生的独立系统。如果与Android、iOS系统无异何必浪费时间。生态圈为18N&#xff0c;其中不止是app应用层开发、还有智能家居、家电、数码、车载等等一系列生态闭环。 而华为鸿蒙是全栈自研底座&am…

【明道云】如何实现循环处理

【背景】 发现明道云工作流中并没有直接的循环逻辑模块&#xff0c;那么如何实现循环呢&#xff1f; 【方案】 通过主流程获取多条数据&#xff0c;搭配子流程来实现遍历循环效果。子流程中可以直接感应获取单行数据。 如果直接在主流程中通过直接获取方式获取多条数据&…

向量数据库Milvus字符串查询

因为项目需要&#xff0c;用到了向量数据库Milvus&#xff0c;刚开始都没有遇到问题&#xff0c;直到一个表的主键是字符串&#xff08;VARCHAR&#xff09;&#xff0c;在查询时刚好要以该主键作为查询条件&#xff0c;此时会出现异常&#xff0c;特此记录一下。 记住&#xf…

如何理解CSS的边框宽度?

CSS 边框宽度学习手记 CSS 边框宽度小概念 在CSS的世界里&#xff0c;border-width这个属性真的很实用&#xff0c;它能帮我指定HTML元素四周边框的宽度。这个宽度嘛&#xff0c;可以用像素px、点pt、厘米cm、相对单位em这些来表示&#xff0c;很方便吧&#xff01;还有呢&am…

算法竞赛STL:array的使用方法

算法竞赛STL&#xff1a;array的使用方法 文章目录 算法竞赛STL&#xff1a;array的使用方法array array 容器描述&#xff1a; array是一种固定大小的容器&#xff0c;它包含指定数量的元素。每个元素都有一个非负整数索引&#xff0c;用于访问或修改它。 使用方法&#xff…

Camunda和SpringBoot的兼容版本

官网 https://docs.camunda.org/manual/7.15/user-guide/spring-boot-integration/version-compatibility/ Camunda和SpringBoot的兼容版本

iOS面试:2.操作系统

1. 什么是虚拟内存&#xff1f;有什么作用&#xff1f; 虚拟内存是计算机系统中的一种技术&#xff0c;它允许操作系统将部分硬盘空间用作临时的内存扩展&#xff0c;以满足程序运行时的内存需求。虚拟内存的主要作用是扩展计算机的内存空间&#xff0c;使得系统能够同时运行更…

26进制问题

一、问题描述 Excel地址 二、算法简析 本题要求我们将十进制转换为二十六进制。与正常的二十六进制&#xff08;数由 0 , 1 , . . . , 25 0, 1, ..., 25 0,1,...,25 组成&#xff09;不同&#xff0c;本题的二十六进制没有 0 0 0。由题意&#xff0c; ( 1 ) 10 A , ( 2 )…

微信小程序uniapp劳务咨询系统知识百科考试系统java+python+nodejs+php均支持

使用劳务咨询服务平台小程序的分别管理员和用户二个权限子模块。 管理员所能使用的功能主要有&#xff1a;首页、个人中心、用户管理、百科分类管理、知识百科管理、地区信息管理、劳务需求管理、试卷管理、试题管理、论坛交流、系统管理、考试管理等。 用户用户端可以实现首页…

更改WordPress作者存档链接author和Slug插件Edit Author Slug

WordPress默认所有用户的存档永久链接都是/author/username/&#xff0c;不管是管理员还是订阅者或贡献者或作者或编辑。如果你想要自定义用户存档链接&#xff0c;比如根据角色不同使用不一样的author&#xff0c;或者自定义作者链接中的用户名Slug&#xff0c;那么建议考虑使…

【Deep Learning 7】深度可分离卷积

&#x1f31e;欢迎来到Pytorch的世界 &#x1f308;博客主页&#xff1a;卿云阁 &#x1f48c;欢迎关注&#x1f389;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f31f;本文由卿云阁原创&#xff01; &#x1f4c6;首发时间&#xff1a;&#x1f339;2024年2月21日&a…

spark sql 的join调优

背景 spark sql中join操作是最耗费性能的操作&#xff0c;因为这涉及到数据的shuffle操作&#xff0c;如果由此导致数据倾斜更是会雪上加霜&#xff0c;那么如何优化join操作的性能呢&#xff1f; join优化 方式一 broadcast广播&#xff1a; 如果是大表和小表的join操作&a…

CTFshow web(sql注入171-175)

web171 还得先爆表名 -1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema database()-- 注意这里已经提示你了&#xff0c;只要知道是ctfshow_user&#xff0c;就可以拿到flag -1 union select 1,2,password from ctfshow_user…

Python第十九章(模块)

系统的模块库一般处于外部库中的Lib里面 一。导入模块的方式&#xff1a; 1.方式一&#xff1a; 导入&#xff1a;import 模块名1&#xff0c;模块名2 调用&#xff1a;模块名 . 功能名() 2.方式二&#xff1a; 导入&#xff1a;from 模块名 import 功能1&#xff0c;功能…

(每日持续更新)jdk api之ObjectOutput基础、应用、实战

博主18年的互联网软件开发经验&#xff0c;从一名程序员小白逐步成为了一名架构师&#xff0c;我想通过平台将经验分享给大家&#xff0c;因此博主每天会在各个大牛网站点赞量超高的博客等寻找该技术栈的资料结合自己的经验&#xff0c;晚上进行用心精简、整理、总结、定稿&…