当前位置: 首页 > 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 -

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 排序算法1:堆排序,直接插入排序与希尔排序
  • System Verilog--$scanf应用举例
  • 学习日志8.7--防火墙安全策略
  • Hadoop单机及集群部署
  • html--前端
  • 前端构建工具|vite快速入门
  • DVWA(SQL注入)medium、high
  • ESXI加入VMware现有集群提示常规性错误
  • RabbitMQ之基于注解声明队列交换机:使用@RabbitListener实现消息监听
  • Java日志框架
  • npm、pnpm、yarn镜像源设置
  • 深入探究Liunx服务器内存:模拟程序实际占用与缓存占用内存
  • 深入理解 Go 语言信号量 Semaphore
  • 数据库事务( 五 ) Spring管理事务的几道面试题
  • 史上最详细ArduinoESP32 外部中断
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • Android 控件背景颜色处理
  • Angular 响应式表单之下拉框
  • conda常用的命令
  • CSS盒模型深入
  • ES6语法详解(一)
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • Swoft 源码剖析 - 代码自动更新机制
  • windows下使用nginx调试简介
  • Zepto.js源码学习之二
  • 初识 beanstalkd
  • 警报:线上事故之CountDownLatch的威力
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 三栏布局总结
  • 算法系列——算法入门之递归分而治之思想的实现
  • 为视图添加丝滑的水波纹
  • 线上 python http server profile 实践
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • #QT(串口助手-界面)
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (35)远程识别(又称无人机识别)(二)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (ISPRS,2021)具有遥感知识图谱的鲁棒深度对齐网络用于零样本和广义零样本遥感图像场景分类
  • (Java入门)抽象类,接口,内部类
  • (STM32笔记)九、RCC时钟树与时钟 第一部分
  • (十六)串口UART
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转)setTimeout 和 setInterval 的区别
  • .NET Framework 3.5安装教程
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .NET 的程序集加载上下文
  • .net 使用ajax控件后如何调用前端脚本
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .NetCore部署微服务(二)
  • .net和jar包windows服务部署
  • .Net环境下的缓存技术介绍
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法
  • @Autowired 与@Resource的区别
  • [ C++ ] template 模板进阶 (特化,分离编译)