Kubernetes 部署发布镜像(cubefile:0.4.0)

目录

实验:部署发布镜像(cubefile:0.4.0)

需求分析:

1、部署Kubenetes环境:

2、撰写 cubefile-deployment.yaml 文件

代码解释:

遇到的问题:

问题解决 :

3、撰写 cubefile-service.yaml 文件

代码解释:

遇到的问题:

4、最后测验

查看端口和进程:​编辑

浏览器访问:​编辑


实验:部署发布镜像(cubefile:0.4.0)

需求分析:

部署一个关于cubefile镜像的deployment

其中包含了2个副本,1CPU,2G内存,并创建暴露一个host port 的service服务

固定端口为8088:31326

1、部署Kubenetes环境:

参考:Kubernetes的介绍(组件、Pod)和 安装使用_Claylpf的博客-CSDN博客

2、撰写 cubefile-deployment.yaml 文件

(base) root@sd-cluster-04:~# cat cubefile-deployment.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:name: cubefile-deploymentnamespace: cubechat
spec:replicas: 2  selector:matchLabels:app: cubefiletemplate:metadata:labels:app: cubefilespec:containers:- name: cubefileimage: cubefile:0.4.0resources:requests:cpu: "1"memory: "2Gi"command: ["poetry", "run", "python"]args: ["cubefile/main.py"]    
(base) root@sd-cluster-04:~# 

代码解释:

apiVersion: apps/v1  # 使用的Kubernetes API版本
kind: Deployment  # 定义一个Deployment对象metadata:  # 元数据,包含Deployment的名称和所在的命名空间name: cubefile-deployment  # Deployment的名称namespace: cubechat  # 部署所在的命名空间spec:  # 指定Deployment的规范replicas: 2  # 指定要创建的Pod副本数,这里是2,表示要创建两个相同的Pod副本selector:  # 指定用于选择要管理的Pod的标签选择器matchLabels:  # 使用标签选择器匹配Podapp: cubefile  # 标签选择器,选择具有标签"app: cubefile"的Podtemplate:  # 指定要创建的Pod的模板metadata:  # 模板的元数据,包括Pod的标签labels:  # 定义Pod的标签,用于与Deployment中的标签选择器匹配app: cubefile  # Pod的标签,与Deployment中的标签选择器匹配spec:  # 指定Pod的规范containers:  # 定义Pod中的容器- name: cubefile  # 容器的名称image: cubefile:0.4.0  # 指定要使用的Docker镜像(自定义镜像)resources:  # 定义容器的资源请求和限制requests:  # 定义资源请求cpu: "1"  # 请求1个CPU单位memory: "2Gi"  # 请求2GB内存command: ["poetry", "run", "python"]  # 容器启动时执行的命令args: ["cubefile/main.py"]  # 启动命令的参数

遇到的问题:

其中比较重要的部分是我使用了 command: ["poetry", "run", "python"] (容器启动时执行的命令)
和args: ["cubefile/main.py"]  (启动命令的参数),目的是用于代替镜像中错误的运行命令

在部署过程中遇到的错误:

其实就是找不到/app/cuebfile/main.py文件

但是我进入镜像中,发现目录是:

所以是镜像中的运行地址输入错误了

问题解决 :

可以更改错误的方式有两种,一种是修改Dockerfile文件,重新打包镜像,但是问题是,如果这个镜像是别人上传到镜像库中的,你无法修改镜像,那应该怎么办呢,那么你就应该想到使用Kubernetes里面的命令来解决了。

所以我使用了 command和args命令的组合,替代了错误的CMD命令,从而实现镜像正常的部署。

3、撰写 cubefile-service.yaml 文件

(base) root@sd-cluster-04:~# cat cubefile-service.yaml 
apiVersion: v1
kind: Service
metadata:name: cubefile-servicenamespace: cubechat  labels:app: cubefile
spec:type: NodePortselector:app: cubefileports:- protocol: TCPport: 8088targetPort: 8088nodePort: 31326
(base) root@sd-cluster-04:~# 

代码解释:

apiVersion: v1  # 使用的Kubernetes API版本
kind: Service  # 定义一个Service对象metadata:  # 元数据,包含Service的名称和所在的命名空间name: cubefile-service  # Service的名称namespace: cubechat  # Service所在的命名空间labels:  # 定义Service的标签,用于与其他资源关联app: cubefile  # Service的标签,用于与与之匹配的Pod关联spec:  # 指定Service的规范type: NodePort  # 指定Service的类型为NodePort,这将使Service通过Node上的端口暴露服务selector:  # 指定用于选择要关联的Pod的标签选择器app: cubefile  # 标签选择器,选择具有标签"app: cubefile"的Podports:  # 指定Service要监听的端口配置- protocol: TCP  # 指定协议为TCPport: 8088  # Service监听的端口targetPort: 8088  # Service路由到的Pod的端口nodePort: 31326  # NodePort,用于暴露Service的端口到每个Node上的指定端口

遇到的问题:

其中遇到了一个问题,就是在定义port: 8088(Service监听的端口)和targetPort: 8088(Service路由到的Pod的端口)的时候,必须是我们Pod内容器打开的端口,如nginx默认打开80,Mysql默认打开3306,redis默认打开6379,必须要确定容器或者程序打开的端口,否则就会访问不到,最后通过nodePort固定端口即可。

4、最后测验

查看端口和进程:

浏览器访问:

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

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

相关文章

Date日期工具类(数据库日期区间问题)

文章目录 前言DateUtils日期工具类总结 前言 在我们日常开发过程中,当涉及到处理日期和时间的操作时,字符串与Date日期类往往要经过相互转换,且在SQL语句的动态查询中,往往月份的格式不正确,SQL语句执行的效果是不同的…

mac 13.x 打开第三方应用,提示已损坏无法打开

前排提示,不一定有效 1、先在终端执行下面这个,因为要提权,输入自己的密码 sudo xattr -r -d com.apple.quarantine 具体应用 # 具体应用是一个路径,拖入 访达——应用程序——第三方应用 到终端就行 # sudo xattr -r -d com.app…

数据结构--二叉树-堆(1)

文章目录 树概念相关的基本概念树的表示 二叉树概念特殊二叉树性质 堆二叉树的顺序结构堆的概念 堆的实现初始化数组初始化为堆向上调整向下调整插入删除打印、摧毁、判空、获取堆顶数据验证 堆的应用堆排序TopK问题 树 概念 树是一种常见的非线性的数据结构,&…

ERROR 之 SpringMVC开发注解版之版本问题

如果你也和我一样,完全是按照狂神老师的代码来敲的,不用注解版的情况下是不会出错的,但是一用注解版,就出现了404,500的类型的错误。那我真诚的建议你换个jdk版本,再来试试。我试了3遍,事实证明用jdk1.8&am…

约瑟夫环(循环列表实现)

约瑟夫(Joseph)问题的一种描述是:编号为1,2,3,…,n的n个人按顺时针方向围坐一圈。每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个…

echarts环图配置

echarts环图配置 1、安装echarts npm install echarts4.9.02、页面引入echarts import echarts from echarts;3、应用 template片段 <div class"chart-wrap"><div id "treeChart" style "width: 180px; height:180px;" ><…

【回眸】牛客网刷刷刷!(八)——中断专题

目录 前言 1、在CortexM内核中&#xff0c;当系统响应一个中断时 2、用与非门和或非门可以实现其他基本门电路。进而实现任何逻辑电路 3、cpu interface提供了功能包含 4、以Cortex-M3内核为例&#xff0c;如果某个中断在得到响应之前&#xff0c;其请求信号以若干的脉冲的…

windows 下载安装 mysql

windows 下载安装 mysql 官网地址&#xff1a;https://dev.mysql.com/ 下载地址&#xff1a;https://cdn.mysql.com//Downloads/MySQLInstaller/mysql-installer-community-8.0.34.0.msi 点击 Downloads 点击 MySQL Community (GPL) Downloads 点击 MySQL Installer for Window…

qt 正则表达式

以上是正则表达式的格式说明 以下是自己写的正则表达式 22-25行 是一种设置正则表达式的方式&#xff0c; 29-34行 : 29行 new一个正则表达式的过滤器对象 30行 正则表达式 的过滤格式 这个格式是0-321的任意数字都可以输入 31行 将过滤格式保存到过滤器对象里面 32行 将验…

NPM使用技巧

NPM使用技巧 前言技巧全局模块位置PowerShell报错安装模块冲突 NPM介绍NPM命令使用方法基本命令模块命令查看模块运行命令镜像管理 常用模块rimrafyarn 前言 本文包含NodeJS中NPM包管理器的使用技巧&#xff0c;具体内容包含NPM介绍、NPM命令、常用模块等内容&#xff0c;还包…

RK3399平台开发系列讲解(内核调试篇)USB摄像头快速测试

🚀返回专栏总目录 文章目录 一、检测设备二、安装必要的库三、 mjpeg-stream 安装四、实时预览沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇介绍如何快速测试 USB 摄像头。 一、检测设备 将 USB 摄像头插上,查看是否找到设备,输入指令:v4l2-ctl --list-d…

谈一谈冷门的C语言爬虫

目录 C语言写爬虫是可行的 C语言爬虫不受待见 C语言爬虫有哪些可用的库和工具 C语言爬虫示例 总结 在当今的编程世界中&#xff0c;C语言相比于一些主流编程语言如Python、JavaScript等&#xff0c;使用范围相对较窄。然而&#xff0c;尽管C语言在爬虫领域的应用并不常见&…

Django Form实现表单使用及应用场景

首先需要定义一个使用场景&#xff1a; 音乐网站的前端部分可以添加上传歌手的单曲&#xff0c; 这个添加页面就使用django form表单来实现。 目录 数据表内容 歌手表及表模型 单曲表及表模型 演示表单使用 设置路由 创建form.py 视图实例化表单类 模板使用表单对象 表…

Spring系列文章1:Spring入门程序

一、什么是spring 一个java框架、java语言开发&#xff0c;轻量级、开源框架、在j2se、j2ee中都可以使用。它是一个管理对象的容器&#xff0c;Spring 容器不装文本&#xff0c;数字。装的是java对象。 核心技术&#xff1a;ioc、aop 官网地址 https://spring.io 项目列表…

第6章_瑞萨MCU零基础入门系列教程之串行通信接口(SCI)

本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写&#xff0c;需要的同学可以在这里获取&#xff1a; https://item.taobao.com/item.htm?id728461040949 配套资料获取&#xff1a;https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总&#xff1a; ht…

包管理工具--》其他包管理器之cnpm、pnpm、nvm

包管理工具系列文章目录 一、包管理工具--》npm的配置及使用&#xff08;一&#xff09; 二、包管理工具--》npm的配置及使用&#xff08;二&#xff09; 三、包管理工具--》发布一个自己的npm包 四、包管理工具--》yarn的配置及使用 五、包管理工具--》其他包管理器之cnpm…

软件设计师学习笔记10-死锁资源数计算+进程资源图+段页式存储

目录 1.死锁资源数计算 1.1死锁 1.2进程管理与死锁资源的计算 2.进程资源图 3.段页式存储 3.1页式存储 3.1.1页式存储组织 3.1.2完整页表及页面淘汰原则 3.1.3页面置换算法(了解一下) 3.2段式存储 1.死锁资源数计算 1.1死锁 (1)死锁的概念&#xff1a;所谓死锁&…

Matlab学习-自定义函数

Matlab学习-自定义函数 常用自定义函数 文章目录 Matlab学习-自定义函数1. 打印时间2. 计算统计参数3. 画图函数 1. 打印时间 function result calculate_time(time)% Function describe : calculate time% Input : time:N*1% Output : result.hour/min/sec hour/min/sec…

构建全面 AI Agent 解决方案:Chocolate Factory 框架的文本到 UI、图表和测试用例生成...

长太不看版&#xff1a;基于领域驱动设计思考的 AI Agent 框架 Chocolate Factory&#xff0c;框架现在还在 PoC 阶段&#xff0c;欢迎加入开发。&#xff08;当前主要关注于 SDLC AIGC 的场景&#xff09;。 GitHub&#xff1a;https://github.com/unit-mesh/chocolate-facto…

文件上传之图片马混淆绕过与条件竞争

一、图片马混淆绕过 1.上传gif imagecreatefromxxxx函数把图片内容打散&#xff0c;&#xff0c;但是不会影响图片正常显示 $is_upload false; $msg null; if (isset($_POST[submit])){// 获得上传文件的基本信息&#xff0c;文件名&#xff0c;类型&#xff0c;大小&…