人才网站建设方案,有没有不花钱建设网站的方法,如何增加网站pr值,永泰县网站集约化建设目录 概述Helm 的三大概念Helm 的安装仓库管理Helm 的常用命令 chart详解目录结构Redis chart 实践升级回滚 概述
Kubernetes 上的应用对象#xff0c;都是由特定的资源描述组成#xff0c;包括 Deployment、Service 等#xff0c;都保存在各自的文件中或者集中写在一个配置… 目录 概述Helm 的三大概念Helm 的安装仓库管理Helm 的常用命令 chart详解目录结构Redis chart 实践升级回滚 概述
Kubernetes 上的应用对象都是由特定的资源描述组成包括 Deployment、Service 等都保存在各自的文件中或者集中写在一个配置文件然后通过 kubectl apply -f 部署。
如果应用只由一个或几个这样的服务组成上面的部署方式就足够了。
但是对于一个复杂的应用会有很多类似上面的资源描述文件如微服务架构应用组成应用的服务可能多达几十、上百个如果有更新或回滚应用的需求可能要修改和维护所涉及到大量的资源文件而这种组织和管理应用的方式就显得力不从心了。并且由于缺少对发布过的应用进行版本管理和控制使得 Kubernetes 上的应用维护和更新面临诸多的挑战主要面临以下的问题 ① 如何将这些服务作为一个整体管理 ② 这些资源文件如何高效复用 ③ 应用级别的版本如何管理
Helm 是 Kubernetes 的包管理工具就像 Linux 下的包管理器如yum、apt 等可以很方便的将之前打包好的 yaml 文件部署到 Kubernetes 上。
Helm 可以做以下的事情
从头开始创建新的 chart将 chart 打包成归档(tgz)文件与存储 chart 的仓库进行交互在现有的 Kubernetes 集群中安装和卸载 chart管理与 Helm 一起安装的 chart 的发布周期
Helm 的三大概念
Chart 代表着 Helm 包。它包含在 Kubernetes 集群内部运行应用程序工具或服务所需的所有资源定义。你可以把它看作是 Homebrew formulaApt dpkg或 Yum RPM 在Kubernetes 中的等价物。Repository仓库 是用来存放和共享 charts 的地方。它就像 Perl 的 CPAN 档案库网络 或是 Fedora 的 软件包仓库只不过它是供 Kubernetes 包所使用的。Release 是运行在 Kubernetes 集群中的 chart 的实例。一个 chart 通常可以在同一个集群中安装多次。每一次安装都会创建一个新的 release 。以 MySQL chart为例如果你想在你的集群中运行两个数据库你可以安装该 chart 两次。每一个数据库都会拥有它自己的 release 和 release name 。
Helm 安装 charts 到 Kubernetes 集群中每次安装都会创建一个新的 release。你可以在 Helm 的 chart repositories 中寻找新的 chart。
可以类比 Docker 来理解Chart 就类似于 Docker 中的镜像Docker 中的镜像就是一系列文件的集合Chart 也是一系列文件的集合Repository仓库就类似于 Docker HubRelease 就类似于 Docker 中的容器可以根据镜像 run 多个容器。
Helm 的安装
使用 Helm 需要一个 Kubernetes 集群。对于 Helm 的最新版本我们建议使用 Kubernetes 的最新稳定版 在大多数情况下它是倒数第二个次版本。
查看 Helm 和对应支持的 Kubernetes 版本 下载额二进制文件
wget https://get.helm.sh/helm-v3.2.3-linux-amd64.tar.gz解压文件
tar -zxvf helm-v3.10.2-linux-amd64.tar.gz将解压目录下的 helm 程序移动到 usr/local/bin/helm
mv linux-amd64/helm /usr/local/bin/helmhelm 命令补全
helm completion bash | sudo tee /etc/bash_completion.d/helm /dev/null
source /usr/share/bash-completion/bash_completion添加阿里云 helm 仓库
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts仓库管理
常用仓库 微软仓库http://mirror.azure.cn/kubernetes/charts推荐。 阿里云仓库https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts。
添加 chart 仓库
helm repo add 仓库名 仓库URL地址
# 如下
helm repo add stable http://mirror.azure.cn/kubernetes/charts
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts查看 chart 仓库列表
helm repo list
# 如下
NAME URL
stable http://mirror.azure.cn/kubernetes/charts
aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
ingress-nginx https://kubernetes.github.io/ingress-nginx从 chart 仓库中更新本地可用 chart 的信息
helm repo update
# 更新从各自chart仓库中获取的有关 chart 的最新信息。信息会缓存在本地被诸如 helm search 等命令使用。删除 Chart 仓库
helm repo remove 仓库名
# 如下
helm repo remove aliyunHelm 的常用命令 命令描述create创建一个chart并指定名字dependency管理chart依赖get下载一个release。可用的子命令all、hooks、manifest、notes、values。history获取release历史。install安装一个chart。list列出release。package将chart目录打包到chart存档文件中。pull从远程仓库中下载chart并解压到本地。比如helm install stable/mysql --untar。repo添加、列出、移除、更新和索引chart仓库。可用的子命令add、index、list、remove、update。rollback从之前的版本回退。search根据关键字搜索chart。可用的子命令all、chart、readme、values。show查看chart的详细信息。可用的子命令all、chart、readme、values。status显示已命名版本的状态。template本地呈现模板。uninstall卸载一个release。upgrade更新一个release。version查看Helm客户端版本。
chart详解
目录结构
mychart
├── Chart.yaml
├── charts # 该目录保存其他依赖的 chart子 chart
├── templates # chart 配置模板用于渲染最终的 Kubernetes YAML 文件
│ ├── NOTES.txt # 用户运行 helm install 时候的提示信息
│ ├── _helpers.tpl # 用于创建模板时的帮助类
│ ├── deployment.yaml # Kubernetes deployment 配置
│ ├── ingress.yaml # Kubernetes ingress 配置
│ ├── service.yaml # Kubernetes service 配置
│ ├── serviceaccount.yaml # Kubernetes serviceaccount 配置
│ └── tests
│ └── test-connection.yaml
└── values.yaml # 定义 chart 模板中的自定义配置的默认值可以在执行 helm install 或 helm update 的时候覆盖
Redis chart 实践
添加仓库
helm repo add bitnami https://charts.bitnami.com/bitnami搜索 redis chart
helm search repo redis
# 结果如下
NAME CHART VERSION APP VERSION DESCRIPTION
aliyun/redis 1.1.15 4.0.8 Open source, advanced key-value store. It is of...
aliyun/redis-ha 2.0.1 Highly available Redis cluster with multiple se...
bitnami/redis 18.0.1 7.2.0 Redis(R) is an open source, advanced key-value ...
bitnami/redis-cluster 9.0.1 7.2.0 Redis(R) is an open source, scalable, distribut...
stable/prometheus-redis-exporter 3.5.1 1.3.4 DEPRECATED Prometheus exporter for Redis metrics
stable/redis 10.5.7 5.0.7 DEPRECATED Open source, advanced key-value stor...
stable/redis-ha 4.4.6 5.0.6 DEPRECATED - Highly available Kubernetes implem...
aliyun/sensu 0.2.0 Sensu monitoring framework backed by the Redis ...
stable/sensu 0.2.5 0.28 DEPRECATED Sensu monitoring framework backed by...DEPRECATED版本的一般是废弃的不使用。
查看安装说明
helm show readme bitnami/redis拉取chart并解压
helm pull bitnami/redis
tar -xvf redis-17.4.3.tgz修改配置
修改 storageClass 为 managed-nfs-storage 设置 redis 密码 password 修改集群架构 architecture默认是主从replication3个节点可以修改为 standalone 单机模式 修改实例存储大小 persistence.size 为需要的大小 修改 service.nodePorts.redis 向外暴露端口范围 30000-32767
创建命名空间
给他一个单独命名空间方便管理实际生产看情况
kubectl create namespace redis安装
cd ../
helm install redis ./redis -n redis查看安装情况
# 查看 helm 安装列表
helm list# 查看 redis 命名空间下所有对象信息
kubectl get all -n redis卸载
helm delete redis -n redis升级回滚
要想升级 chart 可以修改本地的 chart 配置并执行
helm upgrade [RELEASE] [CHART] [flags]
helm upgrade redis ./redis使用 helm ls 的命令查看当前运行的 chart 的 release 版本并使用下面的命令回滚到历史版本
helm rollback RELEASE [REVISION] [flags]查看历史
helm history redis回退到上一版本
helm rollback redis回退到指定版本
helm rollback redis 3