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

k8s笔记 | helm包管理

什么是Helm

kubenetes包管理器,是查找,分享和使用软件构件 kubernetes的最佳方式;

可以做什么

  • 从头开始创建新的chart
  • 将chart打包成归档(tgz)文件
  • 与存储chart的仓库进行交互
  • 与现有的kubernates集群中安装和卸载chart
  • 管理与Helm一起安装的 chart的发布周期

三个重要概念

  1. chart创建 kubernates应用程序所必须的一组信息
  2. config包含了可以合并的chart中的配置信息,用于创建和发布镜像
  3. release是一个与待定配置相结合的chart的运行是咧

安装Helm

其他常用命令

# 列出,增加,更新,删除chart仓库
helm repo
# 使用关键字搜索chart
helm search
# 拉去远程仓库中的chart到本地
helm pull
# 在本地创建新的chart
helm create
# 管理chart依赖
helm dependency
# 安装chart
helm install
# 列出所有的release
helm list
# 查看chart配置信息是否有错
helm lint
# 打包本地chart
helm package
# 回滚release 到历史版本
helm rollback
# 卸载
helm uninstall/delete
# 升级release
helm upgrade

chart详解

目录结构

修改默认源

# 查看默认仓库
helm repo list# 添加仓库
helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
helm repo add aliyun https://apphub.aliyuncs.com/
helm repo add bitnami https://charts.bitnami.com/bitnami/
helm repo add azure https://mirror.azure.cn/kubernetes/charts/

Redis Chart实战

# 搜索
helm search repo redis# 结果
azure/prometheus-redis-exporter 3.5.1           1.3.4           DEPRECATED Prometheus exporter for Redis metrics  
azure/redis                     10.5.7          5.0.7           DEPRECATED Open source, advanced key-value stor...
azure/redis-ha                  4.4.6           5.0.6           DEPRECATED - Highly available Kubernetes implem...
bitnami/redis                   19.3.3          7.2.4           Redis(R) is an open source, advanced key-value ...
bitnami/redis-cluster           10.0.4          7.2.4           Redis(R) is an open source, scalable, distribut...
stable/redis                    1.1.15          4.0.8           Open source, advanced key-value store. It is of...
stable/redis-ha                 2.0.1                           Highly available Redis cluster with multiple se...
azure/sensu                     0.2.5           0.28            DEPRECATED Sensu monitoring framework backed by...
stable/sensu                    0.2.0                           Sensu monitoring framework backed by the Redis ...# 查看安装说明
helm show readme bitnami/redis# 结果,内容过多,不做展示
...# 拉去镜像
helm pull bitnami/redis
# 解压
tar -xvf redis-19.3.3.tgz# 进入 redis目录,修改一下内容# 修改storageClass 为 managed-nfs-storage
# 修改redis密码 ggbhack
# 修改 architecture 改为集群或者单列
# 修改实例存储大小 persistence.size 1Gi 根据情况而定# 新增命名空间
kubectl create namespace redis# 回到上一级目录进行安装 redis是别名  后面的redis是命名空间
helm install redis ./redis/ -n redis# 安装完成会打印相关信息
...# 查看所有redis相关的
kubectl get all -n redis# 删除
helm delete redis -n redis# 出现错误后续的解决方案 看下文# 如果redis报错,镜像拉去失败,还是因为arm64的原因 更values.yaml改镜像为image:registry: docker.iorepository: arm64v8/redis# tag: 7.2.4-debian-12-r16tag: latestdigest: ""# 继续往下操作
# 查看pvc 情况
kubectl get pvc -n redid#结果
NAME                          STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS          AGE
redis-data-redis-master-0     Bound    pvc-7561bad7-27f0-4de7-9496-e490bc496204   1Gi        RWO            managed-nfs-storage   36m
redis-data-redis-replicas-0   Bound    pvc-2ade690e-67bd-44b7-80f8-9569c466251e   1Gi        RWO            managed-nfs-storage   36m
redis-data-redis-replicas-1   Bound    pvc-a8cf13d5-5147-4a36-be26-cfeb714689f5   1Gi        RWO            managed-nfs-storage   6m34s
redis-data-redis-replicas-2   Bound    pvc-237f9e5b-5b9b-48ac-8580-071e16e3c47f   1Gi        RWO            managed-nfs-storage   6m5s# 都运行了的结果 
kubectl get all -n redisNAME                   READY   STATUS    RESTARTS   AGE
pod/redis-master-0     1/1     Running   0          8m55s
pod/redis-replicas-0   1/1     Running   0          100s
pod/redis-replicas-1   1/1     Running   0          7m37s
pod/redis-replicas-2   1/1     Running   0          75sNAME                     TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
service/redis-headless   ClusterIP   None            <none>        6379/TCP   8m59s
service/redis-master     ClusterIP   10.108.214.27   <none>        6379/TCP   8m58s
service/redis-replicas   ClusterIP   10.101.47.243   <none>        6379/TCP   8m57sNAME                              READY   AGE
statefulset.apps/redis-master     1/1     8m57s
statefulset.apps/redis-replicas   3/3     8m57s# 进入master容器
kubectl exec -it redis-master-0 -n redis -- bash
# 操作
I have no name!@redis-master-0:/data$ redis-cli
127.0.0.1:6379> auth ggbhack
OK
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> set name ggb
OK
127.0.0.1:6379> get name
"ggb"
127.0.0.1:6379> # 进入replicas
kubectl exec -it redis-replicas-0 -n redis -- bash# 操作
I have no name!@redis-replicas-0:/data$ redis-cli
127.0.0.1:6379> auth ggbhack
OK
127.0.0.1:6379> get name
"ggb"
127.0.0.1:6379> set name 123
(error) READONLY You can't write against a read only replica.
127.0.0.1:6379> 说明我们的安装是成功了的# 更新
# 修改密码为ggbhack123
redis:password: "ggbhack123"helm upgrade [RELEASE][CHART][FLAG]
helm upgrade redis ./redis/ -n redis# 进入容器,测试如上
[root@k8s-master ~]# kubectl exec -it redis-replicas-0 -n redis -- bash
I have no name!@redis-replicas-0:/data$ redis-cli
127.0.0.1:6379> auth ggbhack
(error) WRONGPASS invalid username-password pair or user is disabled.
127.0.0.1:6379> auth ggbhack123
OK
127.0.0.1:6379> get name
"ggb"
127.0.0.1:6379> 到此完结

注意事项:

由于需要提前创建storageClass    manage-nfc-storage,在前面的章节中总共有三个文件

nfc-storage-class.yaml

nfs-provisioner-deployment.yaml

nfs-provisioner-rbac.yaml

需要的文件在 这里

nfs-subdir-external-provisioner 下的nfc文件夹里

如果是在 arm64下的话,使用 registry.cn-beijing.aliyuncs.com/pylixm/nfs-subdir-external-provisioner:v4.0.0 这个镜像会报错  exec / nfs-subdir-external-provisioner format error 简单来说就是平台不匹配,解决方案就是自己构建一个匹配的镜像包

# 下载git项目
git clone https://github.com/ishow520/nfs-subdir-external-provisioner.git# 构建所属平台的镜像
docker buildx build --platform linux/arm64 -t 你的hub用户名/nfs-provisioner-arm:v1.0.0 -f Dockerfile.multiarch --push .也可以使用我构建的 ggbhack/nfs-provisioner-arm:v1.0.0

相关文章:

  • Spring 事务源码分析
  • Docker配置国内镜像源
  • 匿名内部类(重点)
  • Linux磁盘高级操作
  • 计算机网络数据链路层知识点总结
  • OpenHarmony集成OCR三方库实现文字提取
  • golang中的位运算 << >> ^ 高位数,低位数示例
  • 有趣的css - 两个圆形加载效果
  • MVS net笔记和理解
  • JAVA面试题大全(九)
  • Web(数字媒体)期末作业
  • Centos 7 上安装【Docker】
  • RPC原理技术
  • docker ps显示的参数具体是什么意思
  • java集合类详解
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • CSS实用技巧干货
  • javascript从右向左截取指定位数字符的3种方法
  • javascript数组去重/查找/插入/删除
  • LeetCode29.两数相除 JavaScript
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • log4j2输出到kafka
  • MobX
  • ng6--错误信息小结(持续更新)
  • Rancher-k8s加速安装文档
  • Redash本地开发环境搭建
  • SQLServer之创建数据库快照
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 爱情 北京女病人
  • 高程读书笔记 第六章 面向对象程序设计
  • 解析 Webpack中import、require、按需加载的执行过程
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 深度解析利用ES6进行Promise封装总结
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 数据科学 第 3 章 11 字符串处理
  • 我感觉这是史上最牛的防sql注入方法类
  • 延迟脚本的方式
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 最简单的无缝轮播
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • 数据库巡检项
  • ​ubuntu下安装kvm虚拟机
  • ​渐进式Web应用PWA的未来
  • #if和#ifdef区别
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (2024,RWKV-5/6,RNN,矩阵值注意力状态,数据依赖线性插值,LoRA,多语言分词器)Eagle 和 Finch
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (待修改)PyG安装步骤
  • (多级缓存)缓存同步
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (理论篇)httpmoudle和httphandler一览
  • (四)opengl函数加载和错误处理