k8s使用kustomize来部署应用

news2024/11/14 14:52:31

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  # 设置副本数量为2
  selector:
    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 images
        image: restfulapi:1  # For image in docker
        imagePullPolicy: 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: restfulapi
  newTag: latest
patches:
- path: patch-dev.yaml

部署命令

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

cd overlay/dev
kubectl kustomize

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

apiVersion: v1
kind: Service
metadata:
  name: api-helloworld-service
  namespace: dev-api
spec:
  externalTrafficPolicy: Cluster
  ports:
  - nodePort: 30500
    port: 5000
    protocol: TCP
    targetPort: 5000
  selector:
    app: api-helloworld
  type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: api-helloworld
  namespace: dev-api
spec:
  replicas: 3
  selector:
    matchLabels:
      app: api-helloworld
  template:
    metadata:
      labels:
        app: api-helloworld
    spec:
      containers:
      - image: restfulapi:latest
        imagePullPolicy: IfNotPresent
        name: api-helloworld-c
        ports:
        - containerPort: 80

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

kubectl kustomize | kubectl apply -f -

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

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

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

相关文章

SpringBoot 集成 Sharding-JDBC 实现读写分离、分库分表

文章目录 一、Sharding-JDBC的应用场景二、SpringBoot 集成 Sharding-JDBC2.1、前期准备2.2、导入pom.xml依赖包2.3、结构代码实现2.3.1、MybatisPlusConfig(分页插件)2.3.2、TOrder(订单对象)2.3.3、TOrderMapper(订单…

【论文阅读】Fourier Spectrum Discrepancies in Deep Network Generated Images

文章目录 Learning Self-Consistency for Deepfake Detection背景关键方法傅立叶谱分析图像转换分类实验讨论总结Learning Self-Consistency for Deepfake Detection 会议:NeurIPS 2020 作者: 背景 深度生成模型(GAN、VAE等)能生成与真图无法区分的逼真图像 关键 对…

批发行业进销存-库存预警 源码CyberWinApp-SAAS 本地化及未来之窗行业应用跨平台架构

一交互代码 未来之窗_人工智能_VOS通用(数据,库存预警,1080,500);"> 二、通用代码 function 未来之窗_人工智能_VOS通用(网址,标题,宽度,高度){var 机器人默认page网址;var 未来之窗app_通用ID"未来之窗防重复";var title标题;var 机器人宽度宽度;var 机器…

Tensorflow预训练模型转PyTorch

深度学习领域是计算机科学中变化最快的领域之一。大约 5 年前,当我开始研究这个主题时,TensorFlow 被认为是主导框架。如今,大多数研究人员已经转向 PyTorch。 NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/…

Opencv学习-窗口交互

交互操作能够增加用户对程序流程的控制,使程序可以根据用户需求实现不同的处理结果。有时某一个参数需要反复尝试不同的数值,这时交互操作可以实现在程序运行过程中改变参数数值的作用,避免重复运行程序,节省时间,同时…

AI智能名片小程序源码在付费媒体与企业营销策略中的创新应用

摘要:在数字化浪潮的推动下,付费媒体已成为企业营销战略的核心组成部分。从视频流媒体平台到社交媒体,企业需不断探索新颖且高效的营销手段以吸引目标受众并促进业务增长。AI智能名片小程序源码,作为融合人工智能、小程序技术与传…

什么是实时数据仓库?它有哪些不可替代之处?

【实时数据仓库】可以分开来理解: ✅【实时数据】:即能够快速处理数据,且几乎无延迟的提供最新的数据的能力。 ✅【仓库管理】:可以理解为对仓库的库存控制、对仓库的存储优化以及协调物流。 那么实时数据仓库就是:…

Windows 找不到音频输入/输出设备

0.具体现象 系统音量为0,且无法通过任何方式调整。音量表示非静音表示,而是下图这个叉。 1. 解决方案 以Windows 11电脑为例,从搜索框输入【设备管理器】,进入界面如下: 发现一个感叹号的设备【Intel High Defini…

对象与类的一些基本定义与例子(C++)

1.例题要求,设计一个学生类,实例化对象,并且进行赋值 我们通过创建学生的类,给予了学生名字和年龄的两个属性,我们在main函数中创建了学生类的对象s1,通过s1调用了学生类的属性并给予赋值,最后调用学生类打…

Nginx统计PV、NV

目录 PV 分析 UV 分析 在 Nginx 的配置文件中设置 access_log 主要涉及到以下几个方面: 以下是一个基本的 access_log 配置示例: 使用命令行工具对日志进行基本分析: 后端记录 对于 nginx 的 access.log 日志,我们可以根据日…

进程的等待(非阻塞轮询+阻塞)和替换控制详解

引言 在Linux系统中,进程管理是核心功能之一。理解进程的创建、执行和终止是系统编程中的基础。本文将深入探讨Linux中的进程控制机制,包括进程的生命周期、父子进程的交互、以及进程状态的管理 1. 进程创建:fork()函数 在Linux操作系统中…

Prompt万能框架与常用评估指标

引言 在人工智能的飞速发展中,大型语言模型(LLM)已成为研究和应用的热点。LLM以其强大的语言理解和生成能力,在诸如自然语言处理、文本生成、问答系统等多个领域展现出巨大潜力。然而,要充分发挥LLM的能力&#xff0c…

NSSCTF练习记录:[SWPUCTF 2021 新生赛]caidao

题目: 图片上给出了代码,是php的一句话木马 eval($_POST[wllm]);符号 符号表示后面的语句即使执行错误,也不报错。 eval()函数 eval()函数的作用是把括号内的字符串全部当作php代码来执行。 ** P O S T [ ′ w l l m ′ ] ∗ ∗ p o s t …

一起学习LeetCode热题100道(30/100)

30.两两交换链表中的节点(学习) 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 示例 1: 输入:head …

【LVS】调度算法概念

fd相当于静态 ovf相当于动态

界面控件DevExpress WinForms,支持HTML CSS提升用户体验(二)

DevExpress WinForms现在可以利用HTML/CSS强大的功能,帮助受DevExpress驱动的WinForms应用程序引入现代的UI元素和用户体验! P.S:DevExpress WinForms拥有180组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。Dev…

室内定位导航技术:蓝牙信号强度(RSSI)与三角定位算法应用

在数字化时代,位置服务已成为连接物理世界与数字世界的桥梁。在室内环境中,由于GPS信号受建筑物遮挡而失效,传统的室外定位技术难以满足需求,无法精准指引我们在商场、机场、医院等庞大而复杂的建筑内部寻路。室内定位导航技术不仅…

在 Manim 中,kwargs 传递的关键字参数

在 Manim 中,kwargs 用于传递关键字参数,常用于构造对象时。这里的关键参数有那些。我都要,给我整理一下 Sider Fusion 在 Manim 中,kwargs 允许您传递可选的关键字参数来控制动画、对象的外观和行为。尽管具体可用的参数会因对象…

【开端】通过Java 过滤器灵活配置URL访问权限,并返回403

一、绪论 在JAVA项目系统中,后端给前端提供接口。但是在某些场景我们需要临时控制接口是否能被访问。或关闭某一接口的访问权限。 比如某一接口被攻击了或者某一接口存在漏洞,在系统不关闭的情况下,如何控制系统的访问权限。 二、控制接口访…

CVE-2017-15715~Apache解析漏洞【春秋云境靶场渗透】

Apache解析漏洞 漏洞原理 # Apache HTTPD 支持一个文件拥有多个后缀,并为不同后缀执行不同的指令。比如如下配置文件: AddType text/html .html AddLanguage zh-CN .cn# 其给 .html 后缀增加了 media-type ,值为 text/html ;给 …