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

7-k8s-helm管理

文章目录

    • 一、为什么需要Helm
    • 二、Helm相关概念介绍
    • 三、Helm安装
    • 四、Helm指令介绍
    • 五、Helm创建tomcat
    • 六、Helm创建tomcat其他方式
    • 七、Helm创建redis

一、为什么需要Helm

k8s部署:k8s平台部署的服务都是由资源文件描述组成,传统的k8s部署应用需要手工编排yaml文件。编写完,然后通过kubectl apply -f xxx.yaml进行部署。

缺点:对于一个复杂的系统,随着服务的增多,yaml配置文件越来越多,甚至如果要更新服务,需要不断维护资源文件,较为杂乱。

Helm优点:可以统一管理这些资源文件,而且提供了kubernetes上的软件部署,删除,升级, 回滚应用的强大功能

二、Helm相关概念介绍

  1. helm:命令行客户端工具,主要用于 Kubernetes 应用中的 chart 的创建、打包、发布和管理。

  2. Chart:目录或者压缩包,一系列用于描述 k8s 资源相关文件的集合,比方说我们部署 nginx,需要deployment的yaml,需要 service 的 yaml,这两个清单文件就是一个 helm 程序包,在 k8s 中把这些yaml 清单文件叫做 chart 图表。

  3. repository:存放 chart 图表的仓库,提供部署 k8s 应用程序需要的那些 yaml 清单文件

  4. Release:基于 Chart 的部署实体,一个 chart 被 Helm 运行后将会生成对应的一个 release;将在k8s 中创建出真实运行的资源对象

  5. helm主要工作

    1)从头开始创建新的chart

    2)将chart 打包成归档(tgz)文件

    3)与存储chart的仓库进行交互

    4)在现有的Kubernetes集群中安装和卸载chart

    5)管理与Helm一起安装的chart的发布周期

三、Helm安装

  1. 下载helm:https://repo.huaweicloud.com/helm/v3.5.4/helm-v3.5.4-linux-amd64.tar.gz

  2. 创建文件夹:mkdir /opt/helm

  3. 上传到/opt/helm

  4. 解压:tar -xvf helm-v3.5.4-linux-amd64.tar.gz

  5. 将解压的文件移到/usr/local/bin: mv /opt/helm/linux-amd64/helm /usr/local/bin

  6. 查看版本:helm version
    在这里插入图片描述

  7. 添加仓库

    ps:比较慢,耐心等待

    #官方仓库:
    helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
    #添加微软仓库
    helm repo add azure http://mirror.azure.cn/kubernetes/charts/
    #添加阿里云仓库
    helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
    #添加chat仓库
    helm repo add bitnami https://charts.bitnami.com/bitnami
    
  8. 查询仓库列表:helm repo list
    在这里插入图片描述

  9. 更新所有仓库:helm repo update

四、Helm指令介绍

  1. 添加仓库:helm repo add 自定义库名 仓库地址
  2. 查看仓库:helm repo list
  3. 删除仓库:helm repo remove 自定义库名
  4. 更新仓库:helm repo update
  5. 搜索chart:helm search repo 包名
  6. 拉取chart到本地:helm pull
  7. 本地创建新的chart:helm create
  8. 查看 chart 信息:helm show chart 包名
  9. 管理chart依赖:helm dependency
  10. 安装chart:helm install
  11. 列出所有release:helm list
  12. 删除release:helm delete 名字
  13. 检查chart配置是否有误:helm lint
  14. 打包本地 chart:helm package
  15. 回滚release到历史版本:helm rollback
  16. 卸载release:helm uninstall
  17. 升级release:helm upgrade

五、Helm创建tomcat

  1. 去仓库查找nginx:helm search repo tomcat

  2. 创建chart:helm create tomcat

  3. 进入:cd tomcat

  4. 目录文件详解

    ├── charts:依赖其他包的charts文件

    Chart.yaml :该chart的描述文件,包括ip地址,版本信息等

    ├── templates:存放k8s模板文件目录

    │ ├── deployment.yaml:创建k8s deployment资源的yaml 模板

    │ ├── _helpers.tpl :下划线开头的文件,可以被其他模板引用

    │ ├── hpa.yaml:配置服务资源CPU 内存

    │ ├── ingress.yaml :ingress 配合service域名访问的配置

    │ ├── NOTES.txt :说明文件,helm install之后展示给用户看的内容

    │ ├── serviceaccount.yaml

    │ ├── service.yaml :kubernetes Serivce yaml模板

    │ └── tests

    │ └── test-connection.yaml

    └── values.yaml #给模板文件使用的变量

    ps:deployment.yaml、service.yaml这些文件的内容,和我们平时创建pod和service时编写的yaml文件类似,不同之处在于很多配置的值并非固定,而是用变量代替了。而变量,则是在values.yaml种定义的

  5. 修改参数:vi value.yaml

    service:type: NodePortport: 80
    
  6. 安装对应仓库的chart:helm install tomcat azure/tomcat -f values.yaml

  7. 查看:helm list
    在这里插入图片描述

  8. 查看pod:kubectl get pod
    在这里插入图片描述

  9. 查看访问地址:kubectl get svc
    在这里插入图片描述

  10. 往tomcat里面写入首页数据
    1)进入pod:kubectl exec -it tomcat-bf4bc978c-97fhx bash
    2)创建文件夹: mkdir webapps/ROOT
    3)写入文件:echo “helm test1” > webapps/ROOT/index.jsp

  11. 访问:http://192.168.248.10:30511/
    在这里插入图片描述

六、Helm创建tomcat其他方式

  1. 可以使用–set来配置value.yaml的参数:helm install tomcat azure/tomcat --set service.type=NodePort

  2. 可以先下载包,后配置

    1)下载:helm pull azure/tomcat

    2)解压:tar -xvf tomcat-0.4.3.tgz

    3)修改配置:vi tomcat/values.yaml

    service:name: httptype: NodePortexternalPort: 80internalPort: 8080
    

    4)启动: helm install tomcat tomcat

    ps:后面那个tomcat是指tomcat文件夹

七、Helm创建redis

  1. 对外提供NodePort访问

    helm install redis bitnami/redis  --set global.storageClass=managed-nfs-storage  --set global.redis.password=ffcsict123    --set architecture=standalone  --set master.service.type=NodePort  --set master.service.nodePorts.redis=30919  --version 17.4.3
    

相关文章:

7-k8s-helm管理

文章目录 一、为什么需要Helm二、Helm相关概念介绍三、Helm安装四、Helm指令介绍五、Helm创建tomcat六、Helm创建tomcat其他方式七、Helm创建redis 一、为什么需要Helm k8s部署:k8s平台部署的服务都是由资源文件描述组成,传统的k8s部署应用需要手工编排…...

零基础怎么样才能学好 Python?Python 入门必看

Python 目前可以用一个字来描述那就是 “火”,问题来了,这么火的语言零基础小白到底该怎样学习 Python? 首先,从基础开始学习,切勿毛躁。 刚开始学习 Python 的时候,我们可能会有些毛躁总觉得这些知识太简…...

1.X3-Warming up

/* 此程序使用 Boost Spirit 库来解析用户提供的逗号分隔的数字列表。它演示了如何使用 Spirit 来定义解析 器和执行解析操作,并且在用户输入时反复执行解析操作。用户可以提供一系列逗号分隔的数字,程序会检查它们 是否符合指定的解析规则。如果解析成功…...

【23真题】两电一邮之一,难度骤降!24可能回升!

今天分享的是23年电子科技大学858的信号与系统试题及解析。23成电858真题和22年相比,难度骤降!今年我预测可能会有反弹。22年成电858真题,是我做过的22真题中数一数二的难度!23年一般,但是题目也很好,真的很…...

持续集成部署-k8s-资源调度:DaemonSet

持续集成部署-k8s-资源调度:DaemonSet 1. DaemonSet 简介2. 部署 Fluent 日志收集程序1. DaemonSet 简介 在 Kubernetes 中,DaemonSet 是一种用于在集群中运行一个 Pod 副本的控制器对象。它可以保证在每个节点上都运行一个 Pod 副本,并且在节点加入或退出集群时自动地更新…...

RabbitMQ内容

RabbitMQ是一款开源的消息中间件,支持多个消息协议,包括AMQP、STOMP、MQTT等,它的主要功能是将分散的应用程序连接在一起,以便它们可以相互通信,从而构建可靠的、高效的分布式系统。 RabbitMQ的基础概念包括&#xff…...

搭建一个vscode+uni+vue的小程序项目

我们使用 vue2 创建工程作为示例,uni-app中Vue2版的组件库和插件也比较多,稳定、问题少,可以先参考下官方文档:uni-app官网 既然是使用vue脚手架,那肯定要全局安装vue/cli,已安装的可以跳过。 注意:Vue2创…...

处理ElementUI组件默认样式多次重复问题

问题截图: 解决办法: 在postcss.config.js文件里添加配置项: module.exports {plugins: {autoprefixer: {},cssnano: {} //添加这行代码}, } 处理结果: github issues: https://github.com/ElemeFE/element/is…...

配置hpa后,target显示<unknown>/50%

背景: 有两个服务,server 负责主要后端请求,bill 负责计量计费请求。服务都是使用 helm 部署。测试提了一个缺陷,说全部服务没有配置hpa。 解决一 按照之前的代码结构添加了hpa后,发现: ➜ kubectl get…...

用java实现抖音授权登录

要使用Java实现抖音授权登录,您需要使用抖音开放平台提供的API。以下是一个简单的Java代码示例,演示如何使用OAuth 2.0授权登录流程: 要使用Java实现抖音授权登录,您需要按照以下步骤进行操作: 创建抖音开放平台账号…...

Atlassian午餐会直播回顾:如何在Jira中进行项目时间与成本管理?

工时管理是项目过程管理的一个重要手段,通过科学记录项目组成员在项目执行过程中的任务完成和时间消耗情况,可以帮助管理者精准评估成员工作效率,实时掌握项目进展,并有效管控项目成本。 想要成为时间管理大师吗?在近…...

屏幕时代的数字化信息管理:从传统到纯软件的转变

随着数字化时代的推进,屏幕已经成为了企业和机构向外界传递信息的主要媒介。除了传统的手机和电脑屏幕,线下空间如办公楼、商场、店铺、医院、展厅等也需要利用屏幕来展示和发布各类信息。 管理这些屏幕和发布信息并不是一件容易的事情,特别是…...

Stm32_标准库_14_串口蓝牙模块_解决手机与蓝牙模块数据传输的不完整性

由手机向蓝牙模块传输时间信息,Stm32获取信息并将已存在信息修改为传入信息 测试代码: #include "stm32f10x.h" // Device header #include "Delay.h" #include "OLED.h" #include "Serial.h"uint16_t num…...

基于深度学习的“语义通信编解码技术”框架分类

目录 基于神经网络的语义提取基于神经网络的语义信源编码基于神经网络的语义信源信道联合编码基于神经网络的语义编码与数字调制联合设计参考文献 基于神经网络的语义提取 在现有的信源编码前端加上一个语义提取神经网络[53] ,如图所示。语义提取神经网络的输入是原…...

信钰证券:股票抵押是好还是坏?

股票典当是指将持有的股票作为质押品向银行或其他金融机构融资的行为。股票典当有其优势和下风,下面咱们将从多个角度来剖析股票典当是否好仍是坏。 一、优势 1.占用资金少 相比较于其他融资办法,股票典当所需求占用的资金较少,只需将股票作…...

媒体基础:打开多模态大模型的新思路

编者按:2023年是微软亚洲研究院建院25周年。25年来,微软亚洲研究院探索并实践了一种独特且有效的企业研究院的新模式,并以此为基础产出了诸多对微软公司和全球社会都有积极影响的创新成果。一直以来,微软亚洲研究院致力于创造具有…...

dubbo-admin安装

一、dubbo-admin安装 1、环境准备 dubbo-admin 是一个前后端分离的项目。前端使用vue,后端使用springboot,安装 dubbo-admin 其实就是部署该项目。我们将dubbo-admin安装到开发环境上。要保证开发环境有jdk,maven,nodejs 安装no…...

Kaggle - LLM Science Exam(三):Wikipedia RAG

文章目录 一、赛事概述1.1 OpenBookQA Dataset1.2 比赛背景1.3 评估方法和代码要求1.4 比赛数据集1.5 优秀notebook 二、 [EDA, Data gathering] LLM-SE ~ Wiki STEM | 1k DS2.1 Data overview2.2 Data gathering 三、如何高效收集数据3.1 概述3.2 与训练数据关联的维基百科类别…...

【机器学习】PyTorch-MNIST-手写字识别

文章目录 前言完成效果一、下载数据集手动下载代码下载MNIST数据集: 二、 展示图片三、DataLoader数据加载器四、搭建神经网络五、 训练和测试第一次运行: 六、优化模型第二次优化后运行: 七、完整代码八、手写板实现输入识别功能 前言 注意…...

玩转代码| Vue 中 JSX 的特性,这一篇讲的明明白白

目录 什么时候使用JSX JSX在Vue2中的基本使用 配置 文本插值 条件与循环渲染 属性绑定 事件绑定 v-show与v-model 插槽 使用自定义组件 在method里返回JSX JSX是一种Javascript的语法扩展,即具备了Javascript的全部功能,同时又兼具html的语义…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行&#xff1a; rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积

1.题目介绍 给定一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O…...

ubuntu22.04 安装docker 和docker-compose

首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...

前端调试HTTP状态码

1xx&#xff08;信息类状态码&#xff09; 这类状态码表示临时响应&#xff0c;需要客户端继续处理请求。 100 Continue 服务器已收到请求的初始部分&#xff0c;客户端应继续发送剩余部分。 2xx&#xff08;成功类状态码&#xff09; 表示请求已成功被服务器接收、理解并处…...