当前位置:   article > 正文

k8s笔记 | helm包管理

k8s笔记 | helm包管理

什么是Helm

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

可以做什么

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

三个重要概念

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

安装Helm

其他常用命令

  1. # 列出,增加,更新,删除chart仓库
  2. helm repo
  3. # 使用关键字搜索chart
  4. helm search
  5. # 拉去远程仓库中的chart到本地
  6. helm pull
  7. # 在本地创建新的chart
  8. helm create
  9. # 管理chart依赖
  10. helm dependency
  11. # 安装chart
  12. helm install
  13. # 列出所有的release
  14. helm list
  15. # 查看chart配置信息是否有错
  16. helm lint
  17. # 打包本地chart
  18. helm package
  19. # 回滚release 到历史版本
  20. helm rollback
  21. # 卸载
  22. helm uninstall/delete
  23. # 升级release
  24. helm upgrade

chart详解

目录结构

修改默认源

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

Redis Chart实战

  1. # 搜索
  2. helm search repo redis
  3. # 结果
  4. azure/prometheus-redis-exporter 3.5.1 1.3.4 DEPRECATED Prometheus exporter for Redis metrics
  5. azure/redis 10.5.7 5.0.7 DEPRECATED Open source, advanced key-value stor...
  6. azure/redis-ha 4.4.6 5.0.6 DEPRECATED - Highly available Kubernetes implem...
  7. bitnami/redis 19.3.3 7.2.4 Redis(R) is an open source, advanced key-value ...
  8. bitnami/redis-cluster 10.0.4 7.2.4 Redis(R) is an open source, scalable, distribut...
  9. stable/redis 1.1.15 4.0.8 Open source, advanced key-value store. It is of...
  10. stable/redis-ha 2.0.1 Highly available Redis cluster with multiple se...
  11. azure/sensu 0.2.5 0.28 DEPRECATED Sensu monitoring framework backed by...
  12. stable/sensu 0.2.0 Sensu monitoring framework backed by the Redis ...
  13. # 查看安装说明
  14. helm show readme bitnami/redis
  15. # 结果,内容过多,不做展示
  16. ...
  17. # 拉去镜像
  18. helm pull bitnami/redis
  19. # 解压
  20. tar -xvf redis-19.3.3.tgz
  21. # 进入 redis目录,修改一下内容
  22. # 修改storageClass 为 managed-nfs-storage
  23. # 修改redis密码 ggbhack
  24. # 修改 architecture 改为集群或者单列
  25. # 修改实例存储大小 persistence.size 1Gi 根据情况而定
  26. # 新增命名空间
  27. kubectl create namespace redis
  28. # 回到上一级目录进行安装 redis是别名 后面的redis是命名空间
  29. helm install redis ./redis/ -n redis
  30. # 安装完成会打印相关信息
  31. ...
  32. # 查看所有redis相关的
  33. kubectl get all -n redis
  34. # 删除
  35. helm delete redis -n redis
  36. # 出现错误后续的解决方案 看下文
  37. # 如果redis报错,镜像拉去失败,还是因为arm64的原因 更values.yaml改镜像为
  38. image:
  39. registry: docker.io
  40. repository: arm64v8/redis
  41. # tag: 7.2.4-debian-12-r16
  42. tag: latest
  43. digest: ""
  44. # 继续往下操作
  45. # 查看pvc 情况
  46. kubectl get pvc -n redid
  47. #结果
  48. NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
  49. redis-data-redis-master-0 Bound pvc-7561bad7-27f0-4de7-9496-e490bc496204 1Gi RWO managed-nfs-storage 36m
  50. redis-data-redis-replicas-0 Bound pvc-2ade690e-67bd-44b7-80f8-9569c466251e 1Gi RWO managed-nfs-storage 36m
  51. redis-data-redis-replicas-1 Bound pvc-a8cf13d5-5147-4a36-be26-cfeb714689f5 1Gi RWO managed-nfs-storage 6m34s
  52. redis-data-redis-replicas-2 Bound pvc-237f9e5b-5b9b-48ac-8580-071e16e3c47f 1Gi RWO managed-nfs-storage 6m5s
  53. # 都运行了的结果
  54. kubectl get all -n redis
  55. NAME READY STATUS RESTARTS AGE
  56. pod/redis-master-0 1/1 Running 0 8m55s
  57. pod/redis-replicas-0 1/1 Running 0 100s
  58. pod/redis-replicas-1 1/1 Running 0 7m37s
  59. pod/redis-replicas-2 1/1 Running 0 75s
  60. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
  61. service/redis-headless ClusterIP None <none> 6379/TCP 8m59s
  62. service/redis-master ClusterIP 10.108.214.27 <none> 6379/TCP 8m58s
  63. service/redis-replicas ClusterIP 10.101.47.243 <none> 6379/TCP 8m57s
  64. NAME READY AGE
  65. statefulset.apps/redis-master 1/1 8m57s
  66. statefulset.apps/redis-replicas 3/3 8m57s
  67. # 进入master容器
  68. kubectl exec -it redis-master-0 -n redis -- bash
  69. # 操作
  70. I have no name!@redis-master-0:/data$ redis-cli
  71. 127.0.0.1:6379> auth ggbhack
  72. OK
  73. 127.0.0.1:6379> get name
  74. (nil)
  75. 127.0.0.1:6379> set name ggb
  76. OK
  77. 127.0.0.1:6379> get name
  78. "ggb"
  79. 127.0.0.1:6379>
  80. # 进入replicas
  81. kubectl exec -it redis-replicas-0 -n redis -- bash
  82. # 操作
  83. I have no name!@redis-replicas-0:/data$ redis-cli
  84. 127.0.0.1:6379> auth ggbhack
  85. OK
  86. 127.0.0.1:6379> get name
  87. "ggb"
  88. 127.0.0.1:6379> set name 123
  89. (error) READONLY You can't write against a read only replica.
  90. 127.0.0.1:6379>
  91. 说明我们的安装是成功了的
  92. # 更新
  93. # 修改密码为ggbhack123
  94. redis:
  95. password: "ggbhack123"
  96. helm upgrade [RELEASE][CHART][FLAG]
  97. helm upgrade redis ./redis/ -n redis
  98. # 进入容器,测试如上
  99. [root@k8s-master ~]# kubectl exec -it redis-replicas-0 -n redis -- bash
  100. I have no name!@redis-replicas-0:/data$ redis-cli
  101. 127.0.0.1:6379> auth ggbhack
  102. (error) WRONGPASS invalid username-password pair or user is disabled.
  103. 127.0.0.1:6379> auth ggbhack123
  104. OK
  105. 127.0.0.1:6379> get name
  106. "ggb"
  107. 127.0.0.1:6379>
  108. 到此完结

注意事项:

由于需要提前创建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 简单来说就是平台不匹配,解决方案就是自己构建一个匹配的镜像包

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/620271
推荐阅读
相关标签
  

闽ICP备14008679号