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

news2024/12/26 10:37:09

目录

实验:部署发布镜像(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-deployment
  namespace: cubechat
spec:
  replicas: 2  
  selector:
    matchLabels:
      app: cubefile
  template:
    metadata:
      labels:
        app: cubefile
    spec:
      containers:
      - name: cubefile
        image: cubefile:0.4.0
        resources:
          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:  # 使用标签选择器匹配Pod
      app: cubefile  # 标签选择器,选择具有标签"app: cubefile"的Pod

  template:  # 指定要创建的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-service
  namespace: cubechat  
  labels:
    app: cubefile
spec:
  type: NodePort
  selector:
    app: cubefile
  ports:
    - protocol: TCP
      port: 8088
      targetPort: 8088
      nodePort: 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"的Pod

  ports:  # 指定Service要监听的端口配置
    - protocol: TCP  # 指定协议为TCP
      port: 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.coloradmin.cn/o/999994.html

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

相关文章

SSL证书验签时要带www吗?

单域名证书:顶级域名如www.abc.com或abc.com 不管你提交订单的时候填写的域名是带www或不带www的域名,签发的证书均支持www和不带www的域名 单域名证书:子域名如mail.abc.com,签发的证书仅支持mail.abc.com 通配符证书&#xff…

LeetCode 50题:实现Pow(x,n)

题目 实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。 示例 1: 输入:x 2.00000, n 10 输出:1024.00000示例 2: 输入:x 2.10000, n 3 输出:9.26…

你知道SOLIDWORKS焊件类零件有个快速草图建立工具吗?

背景: 焊件是SOLIDWORKS中一个重要的组成模块,通过该模块可以很快的建立起一个庞大的型材结构网络。 但是我们也明白焊件是基于草图的,普通的方式建立复杂的草图是需要较多的精力和时间,本次视频的出发点就是针对此问题给出的一个…

Python网页请求超时如何解决

在进行网络爬虫项目时,我们经常需要发送大量的请求来获取所需的数据。然而,由于网络环境的不稳定性,请求可能会因为超时而失败。请求超时可能导致数据获取不完整,影响爬虫的效率和准确性。此外,频繁的请求超时可能会被…

一个或多个筛选器启动失败。完整的详细信息将在相应的容器日志文件中找到

网上找了好久没解决 问题代码: 11-Sep-2023 16:47:22.109 严重 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal 一个或多个筛选器启动失败。完整的详细信息将在相应的容器日志文件中找到 11-Sep-2023 16:47:22.109 严重 [RMI TCP…

二叉树题目:二叉树的层平均值

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题:二叉树的层平均值 出处:637. 二叉树的层平均值 难度 4 级 题目描述 要求 给定一个二叉树的根结点 …

新人白嫖:基于揽睿星舟云部署Stable Diffusion,10 分钟体验 SDXL 1.0 超强功能(AI绘画保姆级教程)

一、前言 SDXL 1.0 自推出到现在,已经有一段时间了,网上也看到了用 SDXL 做出的各种惊艳的图,相对于 Stable Diffusion 之前的版本来说,功能确实强大了很多。 SDXL 1.0 给我们带来最大的好处就是,基本可以实现靠嘴出图…

Openlayers 教程 - feature(图形要素)三种悬浮事件(移入移出)以及适用范围

Openlayers 教程 - feature(图形要素)两种悬浮事件以及使用范围 核心代码完整代码:在线示例 之前介绍了 Openlayers 的点击事件,这次介绍一下悬浮事件。 悬浮事件和点击事件还是有区别的:一般点击事件是一次事件&…

element plus表格合并行

/*** 合并相同数据,导出合并列所需的方法(只适合el-table)*/ export function getRowSpanMethod(data, rowSpanArray) {/*** 要合并列的数据*/const rowSpanNumObject {};//初始化 rowSpanNumObjectrowSpanArray.map((item) > {rowSpanNumObject[item] new Arr…

Informatica使用操作流程--聚合、表达式转换、查找、排序组件的使用 案例3

一、需求: 将oracle数据库的scott用户源表items 直抽至 EDW层 EDW_items。数据存储到oracle的edw01用户下 数据抽取至EDW层做聚合转换 求各供应商 min(price),avg(price),max(price),sum(price), 2*avg(price) 根据供应商id去供应商表查找供应商名称 查验…

【Java核心知识】idea项目编译错误排查思路

文章目录 idea项目编译错误排查思路一个项目是如何运行的项目编译报错时排查常见思路 idea项目编译错误排查思路 一个项目是如何运行的 在开始之前,我们需要知道idea对一个项目是如何维护和运行的?idea会把用户自定义配置放在.idea文件夹中&#xff0c…

LeetCode:2. 两数之和

这个解题思路来自代码随想录&#xff1a;代码随想录 (programmercarl.com) class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {std::unordered_map <int,int> map;for(int i 0; i < nums.size(); i) {// 遍历当前元素&am…

ME21N 采购订单屏幕增强

1、业务需求 采购订单行项目新增“图号”和“价格类型”字段。其中图号只查询底表展示&#xff0c;不做修改&#xff1b;价格类型做下拉框&#xff1b; 2、增强实现 增强标准表EKPO结构CI_EKPODB。抬头增加字段则修改EKKO结构CI_EKKODB 增强点CMOD&#xff1a;MM06E005 出口…

Redis7--基础篇1(概述,安装、卸载及配置)

1. Redis概述 1.1 什么是Redis Redis&#xff1a;REmote Dictionary Server&#xff08;远程字典服务器&#xff09; Remote Dictionary Server(远程字典服务)是完全开源的&#xff0c;使用ANSIC语言编写遵守BSD协议&#xff0c;是一个高性能的Key-Value数据库提供了丰富的数…

运营岗位需要一个内部知识库吗?

在运营岗位中&#xff0c;一个内部知识库是非常有价值的。运营岗位涉及到许多不同的任务和责任&#xff0c;需要掌握大量的专业知识和最佳实践。一个内部知识库可以帮助运营团队更好地管理和共享这些知识&#xff0c;提高工作效率和质量。 内部知识库对运营岗位的价值和应用场…

Eclipse安装FTP连接工具

查看Eclipse版本 Eclipse 安装串口终端工具_哭哭啼的博客-CSDN博客 安装 选择您的版本的插件发布站点&#xff1a; 在过滤器字段中,键入"remote".选择Mobile and Device Development&#xff0c;并选择 点击"下一步",然后接受条款.它现在应该下载并安装.…

SAP物料主数据归档详解(物理删除)

平时在操作系统过程中经常会不小心创建出很多无用的物料主数据&#xff0c;但是系统只能通过MM06打上删除标记&#xff0c;但是物料最终在系统中还是可以查询到的。 相信各位大顾问们肯定被用户问过&#xff0c;有没有办法把物料或者是业务数据从物理上删除。顾问们的回答肯定…

【算法】Java-使用数组模拟单向链表,双向链表

目录 试题1&#xff1a;实现一个单链表&#xff0c;并实现以下功能&#xff1a; 试题2&#xff1a;实现一个双链表&#xff0c;并实现以下功能 思路总结&#xff1a; 什么情况下可能涉及到用数组实现链表呢&#xff1f; 在学习时了解到了可以用数组模拟链表&#xff0c;使其…

【LInux编译器gcc/g++】gcc使用方法和动静态库相关概念

目录 一.前言 二.源代码的翻译环境 三.gcc相关指令 四.动静态库 1.什么是库&#xff1f; 2.库的命名 3.库的链接方式 4.动静态链接的优缺点 5.小结 一.前言 在Windows系统上我们常用VisualStudio来进行C/C开发&#xff0c;VS并不是一款单一的软件&#xff0c;而是集成…

UI设计模式是什么?有哪些常用的?

UI设计模式是针对常见的用户界面问题提出的解决方案。当解决方案得到验证时&#xff0c;它经常被使用&#xff0c;最终演变成可重复使用的设计模式。 设计师可以根据不同的网站功能类型选择使用相应的网站UI设计模式&#xff0c;从而创建一致高效的网站UI界面。 本文推荐8种常…