当前位置: 首页 > news >正文

k8s使用kustomize来部署应用

k8s使用kustomize来部署应用

本文主要是讲述kustomzie的基本用法。首先,我们说一下部署文件的目录结构。

./
├── base
│   ├── deployment.yaml
│   ├── kustomization.yaml
│   └── service.yaml
└── overlays└── dev├── kustomization.yaml└── patch-dev.yaml

这是一个标准的kustomize项目的目录结构,base存放这deployment和service相关,overlay存放着不同环境定制化的一下信息,这里只有一个dev的环境。我们逐一看看每个文件里面的内容吧。

1. base/deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:name: api-helloworld # 部署的名称# namespace: dev-api # 部署到哪个命名空间, 使用kustomize的话这里不能出现,需要在overlays/dev/kustomization.yaml 指定
spec:replicas: 2  # 设置副本数量为2selector:matchLabels:app: api-helloworld # 用于选择匹配的Pod标签template:metadata:labels:app: api-helloworld # Pod的标签spec:containers:- name: api-helloworld-c # 容器名称# image: docker.io/library/restfulapi:latest # For image in container, use ctr -n k8s.io images import restfulapi.tar to import imagesimage: restfulapi:1  # For image in dockerimagePullPolicy: IfNotPresent # 镜像拉取策略,如果本地没有就拉取ports:- containerPort: 80 # 容器内部监听的端口

2. base/service.yaml

apiVersion: v1
kind: Service
metadata:name: api-helloworld-service # 服务的名称
spec:externalTrafficPolicy: Cluster # 外部流量策略设置为集群selector:app: api-helloworld # 用于选择匹配的Pod标签ports:- protocol: TCP # 使用TCP协议port: 5000 # 服务暴露的端口targetPort: 5000 # Pod中容器的端口nodePort: 30500 # 在每个Node上分配的端口,用于外部访问type: NodePort # 服务类型,使用NodePort

3. base/kustomization.yaml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- deployment.yaml
- service.yaml

4. overlay/dev/patch-dev.yaml

apiVersion: apps/v1  
kind: Deployment  
metadata:  name: api-helloworld
spec:  replicas: 3

5. overlay/dev/kustomization.yaml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../base
namespace: dev-api
images:
- name: restfulapinewTag: latest
patches:
- path: patch-dev.yaml

部署命令

如果需要查看kustomize合成结果,可以运行下面命令:

cd overlay/dev
kubectl kustomize

输出合成后的结果,重点关注replica和image,已经换成我们在overlay/dev下面定制的参数。

apiVersion: v1
kind: Service
metadata:name: api-helloworld-servicenamespace: dev-api
spec:externalTrafficPolicy: Clusterports:- nodePort: 30500port: 5000protocol: TCPtargetPort: 5000selector:app: api-helloworldtype: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:name: api-helloworldnamespace: dev-api
spec:replicas: 3selector:matchLabels:app: api-helloworldtemplate:metadata:labels:app: api-helloworldspec:containers:- image: restfulapi:latestimagePullPolicy: IfNotPresentname: api-helloworld-cports:- containerPort: 80

直接运行下面命令apply到集群:

kubectl kustomize | kubectl apply -f -

结果如下:
在这里插入图片描述
成功访问:
在这里插入图片描述
好了以上是本期分享的全部内容了,如果你觉得对你还有帮助,建议点赞分享并收藏哦。如果大家想对我表示肯定,扫描下面的二维码即可哦,原创不易,一分钱也是爱哦。
在这里插入图片描述

相关文章:

k8s使用kustomize来部署应用

k8s使用kustomize来部署应用 本文主要是讲述kustomzie的基本用法。首先,我们说一下部署文件的目录结构。 ./ ├── base │ ├── deployment.yaml │ ├── kustomization.yaml │ └── service.yaml └── overlays└── dev├── kustomization.…...

基于开源FFmpeg和SDL2.0的音视频解码播放和存储系统的实现

目录 1、FFMPEG简介 2、SDL简介 3、视频播放器原理 4、FFMPEG多媒体编解码库 4.1、FFMPEG库 4.2、数据类型 4.3、解码 4.3.1、接口函数 4.3.2、解码流程 4.4、存储(推送) 4.4.1、接口函数 4.4.2、存储流程 5、SDL库介绍 5.1、数据结构 5.…...

保姆级教程,一文了解LVS

目录 一.什么是LVS tips: 二.优点(为什么要用LVS?) 三.作用 四.程序组成 五.LVS 负载均衡集群的类型 六.分布式内容 六.一.分布式存储 六.二.分布式计算 六.三.分布式常见应用 tips: 七.LVS 涉及相关的术语 八.LVS 负…...

【STM32】DMA数据转运(存储器到存储器)

本篇博客重点在于标准库函数的理解与使用,搭建一个框架便于快速开发 目录 DMA简介 DMA时钟使能 DMA初始化 转运起始和终止的地址 转运方向 数据宽度 传输次数 转运触发方式 转运模式 通道优先级 开启DMA通道 DMA初始化框架 更改转运次数 DMA应用实例-…...

【Android】通过代码打开输入法

获取焦点 binding.editText.requestFocus()打开键盘 val imm getSystemService(InputMethodManager::class.java) imm.showSoftInput(binding.editText, InputMethodManager.SHOW_IMPLICIT)...

爬虫集群部署:Scrapyd 框架深度解析

🕵️‍♂️ 爬虫集群部署:Scrapyd 框架深度解析 🛠️ Scrapyd 环境部署 Scrapyd 是一个开源的 Python 爬虫框架,专为分布式爬虫设计。它允许用户在集群中调度和管理爬虫任务,并提供了简洁的 API 进行控制。以下是 Scr…...

pytorch GPU操作事例

>>> import torch >>> if_cuda torch.cuda.is_available() >>> print("if_cuda",if_cuda) if_cuda True >>> gpu_count torch.cuda.device_count() >>> print("gpu_count",gpu_count) gpu_count 8...

linux常见性能监控工具

常用命令top、free 、vmsata、iostat 、sar命令 具体更详细命令可以查看手册,这里只是简述方便找工具 整体性能top,内存看free,磁盘cpu内存历史数据可以vmsata、iostat 、sar、iotop top命令 交互:按P按照CPU排序,按M按照内存…...

C++ | Leetcode C++题解之第331题验证二叉树的前序序列化

题目&#xff1a; 题解&#xff1a; class Solution { public:bool isValidSerialization(string preorder) {int n preorder.length();int i 0;int slots 1;while (i < n) {if (slots 0) {return false;}if (preorder[i] ,) {i;} else if (preorder[i] #){slots--;i…...

【多模态处理】利用GPT逐一读取本地图片并生成描述并保存,支持崩溃后从最新进度恢复

【多模态处理】利用GPT逐一读取本地图片并生成描述&#xff0c;支持崩溃后从最新进度恢复题 代码功能&#xff1a;核心功能最后碎碎念 代码&#xff08;使用中转平台url&#xff09;&#xff1a;代码&#xff08;直接使用openai的key&#xff09; 注意 代码功能&#xff1a; 读…...

【rk3588】获取相机画面

需求&#xff1a;获取相机画面&#xff0c;并在连接HDMI线&#xff0c;在显示器上显示 查找设备 v4l2-ctl --list-devices H65 USB CAMERA: H65 USB CAMERA (usb-0000:00:14.0-1):/dev/video2/dev/video3播放视频 gst-launch-1.0 v4l2src device/dev/video22 ! video/x-ra…...

数据结构的基本概念

数据结构的基本概念 数据是什么&#xff1f; 数据 &#xff1a; 数据是信息的载体&#xff0c;是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别&#xff08;二进制0|1&#xff09;和处理的符号的集合。数据是计算机程序加工的原料。 早期计算机处理的…...

AI人工智能机器学习

AI人工智能 机器学习的类型(ML) 学习意味着通过学习或经验获得知识或技能。 基于此&#xff0c;我们可以定义机器学习(ML) 它被定义为计算机科学领域&#xff0c;更具体地说是人工智能的应用&#xff0c;它提供计算机系统学习数据和改进经验而不被明确编程的能力。 基本上&…...

试用AWS全新神器:Amazon Bedrock的「Open Artifacts」版Claude.ai Artifacts

Claude.ai的Artifacts真是太方便了。 GitHub上的AWS Samples仓库中有一个仿制Artifacts的应用程序。 Open Artifacts for Amazon Bedrock https://github.com/aws-samples/open_artifacts_for_bedrockhttps://github.com/aws-samples/open_artifacts_for_bedrock本文将介绍「…...

W3C XML 活动

关于W3C的XML活动&#xff0c;XML&#xff08;可扩展标记语言&#xff09;是一种用于描述、存储、传送及交换数据的标准。W3C&#xff08;万维网联盟&#xff09;对XML的发展起到了关键作用&#xff0c;推出了一系列的版本和相关的技术规范。 XML版本历史&#xff1a; XML 1.0&…...

vue请求springboot接口下载zip文件

说明 其实只需要按照普通文件流下载即可&#xff0c;以下是一个例子&#xff0c;仅供参考。 springboot接口 RestController RequestMapping("/api/files") public class FileController {GetMapping("/download")public ResponseEntity<Resource>…...

PySide6||QPushButton的QSS样式

1、狗狗拜按钮 QQ202484-03338 (online-video-cutter.com) /* QPushButton的基本样式 */ QPushButton { background-image:url(:/xxx/第1帧.png); /* 设置背景图片 */ background-repeat: no-repeat; /* 不重复背景图片 */ background-position: center; /* 将背景图片居中…...

HarmonyOS鸿蒙应用开发之ArkTS基本语法

ArkTS&#xff08;Ark TypeScript&#xff09;是一种基于TypeScript的扩展语言&#xff0c;专为鸿蒙应用开发设计。它在保持TypeScript基本语法风格的基础上&#xff0c;对TypeScript的动态类型特性施加了更严格的约束&#xff0c;并引入了静态类型&#xff0c;以减少运行时开销…...

Web开发-CSS篇-上

CSS的发展历史 CSS&#xff08;层叠样式表&#xff09;最初由万维网联盟&#xff08;W3C&#xff09;于1996年发布。CSS1是最早的版本&#xff0c;它为网页设计提供了基本的样式功能&#xff0c;如字体、颜色和间距。随着互联网的发展&#xff0c;CSS也不断演进&#xff1a; C…...

在mac上通过 MySQL 安装包安装 MySQL 之后,终端执行 mysql 命令报错 command not found: mysql

在 mac 上通过 MySQL 安装包安装 MySQL 之后&#xff0c;如果在终端中运行 mysql 命令时遇到 command not found: mysql 错误&#xff0c;通常是因为 MySQL 的二进制文件没有被添加到系统的 PATH 环境变量中。 解决方法&#xff1a;手动添加 MySQL 到 PATH 环境变量 1.找到 M…...

C语言void关键字详解:无类型与void指针用法

于C语言里头&#xff0c;“void”属于一种特殊的数据类型&#xff0c;其表明“没有类型”&#xff0c;具体来讲&#xff0c;当我们声明一个函数的返回值类型为“void”之际&#xff0c;我们所指的是该函数不返回任何值&#xff0c;此外地&#xff0c;我们还能够运用“void”指针…...

MTK NV数据损坏 刷机、串号修复、串号修改 ,基带调试 工具教程

MTK 机型刷机工具 SP Flash Tool 最常用的 MTK 芯片刷机工具&#xff0c;支持通过 USB 线刷固件&#xff08;ROM&#xff09;。需下载与机型匹配的 Scatter 文件&#xff08;MTxxxx_Android_scatter.txt&#xff09;和固件包。操作时需进入设备的 BROM 模式&#xff08;通常通…...

LabVIEW发动机性能评估与故障诊断

基于 LabVIEW 的发动机性能评估与故障诊断系统采用模块化架构&#xff0c;以 PXI 总线为硬件核心&#xff0c;软件层通过图形化编程实现多维度数据处理与分析。硬件部分整合振动、压力、转速等多类型传感器&#xff0c;经信号调理模块与 PXI 数据采集卡完成信号转换&#xff0c…...

终极RVM Gemset完全指南:如何优雅隔离Ruby项目依赖

终极RVM Gemset完全指南&#xff1a;如何优雅隔离Ruby项目依赖 【免费下载链接】rvm Ruby enVironment Manager (RVM) 项目地址: https://gitcode.com/gh_mirrors/rv/rvm Ruby开发中&#xff0c;项目依赖冲突是开发者最头疼的问题之一。Ruby enVironment Manager (RVM) …...

如何快速创建专业作品集:awesome-portfolio-websites完全指南

如何快速创建专业作品集&#xff1a;awesome-portfolio-websites完全指南 【免费下载链接】awesome-portfolio-websites A community maintained open source project aimed at making a personal portfolio for researchers, developers, and analysts simple, fast, and less…...

AI术语大白话:一张表让你从“小白“变“懂王“

看完这篇&#xff0c;下次开会再也不怕听不懂同事说的"黑话"了。为什么你需要了解这些&#xff1f;现如今&#xff0c;AI已经无处不在&#xff0c;想象一下这个场景&#xff1a;老板&#xff1a;"这个需求用RAGFine-tuning实现&#xff0c;Prompt要优化一下&…...

ICLR 2026 | 大模型当裁判也“翻车“?北大清华联合多校提出TrustJudge,让LLM评估更值得信赖

让 GPT-4 给两篇文章打分&#xff0c;A 拿了 4 分、B 拿了 3 分。按常理 A 应该比 B 好吧&#xff1f;但换成成对比较&#xff0c;同一个模型却说 "B 更好"。更离谱的情况也有——A > B > C > A 的"石头剪刀布"循环&#xff0c;连传递性都守不住。…...

告别虚拟机!在WSL2的Ubuntu里5分钟搞定LVGL v9.2模拟器(SDL2显示)

在WSL2中5分钟快速搭建LVGL v9.2开发环境 对于习惯Windows开发环境的嵌入式工程师来说&#xff0c;传统虚拟机方案往往显得笨重且资源占用高。WSL2的出现彻底改变了这一局面——它不仅能提供完整的Linux内核支持&#xff0c;还能实现与Windows系统的无缝文件互通和硬件加速。本…...

OpenClaw本地知识库:Qwen3.5-9B-AWQ-4bit自动索引图片资料

OpenClaw本地知识库&#xff1a;Qwen3.5-9B-AWQ-4bit自动索引图片资料 1. 为什么需要自动化图片管理 作为一个长期囤积各类截图、设计稿和参考图的用户&#xff0c;我的"图片黑洞"问题越来越严重——3TB的硬盘里散落着上万张未分类的图片。传统方案要么依赖手动打标…...

ArcGIS个人版许可(一):从零开始的美元购买实战

1. 为什么需要购买ArcGIS个人版许可 最近两年&#xff0c;国内很多GIS爱好者发现一个头疼的问题&#xff1a;ArcGIS个人版在国内突然买不到了。作为地理信息系统领域的标杆软件&#xff0c;ArcGIS在科研、教育和个人学习中都扮演着重要角色。我去年准备续费时也遇到了这个情况&…...