zoukankan      html  css  js  c++  java
  • Kubernetes 0-1 Helm-K8S的包管理工具

    image-20210205103617348

    Helm is the best way to find, share, and use software built for Kubernetes.

    Helm是为Kubernetes寻找,共享和使用软件构建的最佳方式。

    简介

    Helm帮助管理Kubernetes应用程序,即使是面对复杂的K8S引用,Helm Charts也可以轻松实现定义,安装和升级。

    Helm是CNCF的毕业项目,由Helm社区维护。

    Charts

    Charts可以看作是Helm的程序包,一个Chart是描述Kubernetes资源集的文件集合。

    Repository

    存储和共享Charts,可以看作是Kubernetes程序包的存储中心。

    Release

    由一个Chart运行起来的实例,这将在kubernetes集群中生成或更新一组资源,可以使用同一个chart运行成多个release。例如,如果你想运行多个redis服务,你可以通过多次安装redis的chart得到。

    看到以上三个概念,你可能会觉得似曾相识,没错,与docker三个概念——image,registry,container如出一辙,也许现在你会加深点理解了。

    安装

    可以方便的使用脚本安装

    curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
    chomd 700 ./get-helm-3
    ./get-helm-3
    

    也可以下载指定版本手动安装

    下载地址:https://github.com/helm/helm/releases

    wget https://get.helm.sh/helm-v3.5.2-linux-amd64.tar.gz
    tar -zxvf ./helm-v3.5.2-linux-amd64.tar.gz
    sudo mv linux-amd64/helm /usr/local/bin/helm
    

    第一个helm命令

    helm help
    

    更多安装方式可查看:https://helm.sh/docs/intro/install/

    使用

    初始化Helm Chart仓库

    首先添加helm官方的helm stable charts仓库

    helm repo add stable https://charts.helm.sh/stable
    

    查询charts仓库

    例如你想查找prometheus应用仓库,打开https://artifacthub.io/站点,在查询输入框中输入prometheus之后,搜索可以得到官方或民间的仓库。

    image-20210207095836149

    image-20210207095854693

    一般选择具有官方标志的仓库,进入该仓库的主页,里面会有charts的基本信息,以及安装命令的帮助。

    image-20210207100040044

    添加Prometheus的官方Charts仓库

    helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
    

    添加仓库后,就可以在当前已经添加的仓库中搜索你需要的kubernetes应用了

    $ helm search repo prometheus
    NAME                                                    CHART VERSION   APP VERSION     DESCRIPTION                                       
    prometheus-community/kube-prometheus-stack              13.5.0          0.45.0          kube-prometheus-stack collects Kubernetes manif...
    prometheus-community/prometheus                         13.2.1          2.24.0          Prometheus is a monitoring system and time seri...
    prometheus-community/prometheus-adapter                 2.11.1          v0.8.3          A Helm chart for k8s prometheus adapter
    ...
    

    创建release

    使用特定的chart安装kubernetes应用

    $ helm install prometheus prometheus-community/prometheus
    NAME: prometheus
    LAST DEPLOYED: Sun Feb  7 02:04:59 2021
    NAMESPACE: default
    STATUS: deployed
    REVISION: 1
    ...
    

    查看release

    $ helm ls
    NAME        NAMESPACE  REVISION  UPDATED              STATUS    CHART              APP VERSION
    prometheus  default    1         2021-02-07 02:04:59  deployed  prometheus-13.2.1  2.24.0 
    $ helm status prometheus
    NAME: prometheus
    LAST DEPLOYED: Sun Feb  7 02:04:59 2021
    NAMESPACE: default
    STATUS: deployed
    REVISION: 1
    

    并且可以查看K8S集群是否正在创建你需要的应用

    $ kubectl get pod
    NAME                                                        READY   STATUS              RESTARTS   AGE
    prometheus-alertmanager-5dbfffbbc4-jppgj         0/2     Pending             0          36s
    prometheus-kube-state-metrics-66c4db67ff-r65tg   0/1     ContainerCreating   0          36s
    prometheus-node-exporter-tvjnx                   1/1     Running             0          36s
    prometheus-pushgateway-798b886754-x4fvq          0/1     ContainerCreating   0          36s
    prometheus-server-74656c5bbc-k4m6x               0/2     Pending             0          36s
    

    删除 release

    以下命令会删除所有install创建的所有Kubernetes资源

    $ helm uninstall prometheus
    release "prometheus" uninstalled
    

    如果你想保存安装的历史信息,方便以后查看发布审计或者回滚发布,可以使用--keep-history命令标识。

    $ helm uninstall prometheus --keep-history
    release "prometheus" uninstalled
    
    # 此时查看安装状态将变成uninstalled
    $ helm ls
    NAME    NAMESPACE       REVISION        UPDATED STATUS  CHART   APP VERSION
    $ helm ls -a
    NAME        NAMESPACE  REVISION  UPDATED             STATUS       CHART              APP VERSION
    prometheus  default    1         2021-02-07 02:12:46 uninstalled  prometheus-13.2.1  2.24.0   
    $ helm status prometheus
    NAME: prometheus
    LAST DEPLOYED: Sat Feb  6 02:49:41 2021
    NAMESPACE: default
    STATUS: uninstalled
    REVISION: 1
    ...
    

    将删除release重新安装/回滚回来

    每次成功的install或upgrade release后,我们都会得到release的REVISION,在回滚release时需要使用到这个版本号

    $ helm rollback prometheus 1
    Rollback was a success! Happy Helming!
    

    定制

    Charts是允许用户定制的,例如你想修改应用端口,或者应用的副本数量,可以通过修改charts的资源文件,然后依据资源文件创建release。

    首先,下载应用的charts文件集合到本地

    $ helm repo add bitnami https://charts.bitnami.com/bitnami
    "bitnami" has been added to your repositories
    $ mkdir nginx
    $ helm show values bitnami/nginx > ./nginx/values.yaml
    

    修改values.yaml文件,如果你对K8S资源的定义有所了解,那么你能轻松的修改该文件。

    $ vim ./nginx/values.yaml
    ...
    # 修改nginx deployment副本数为2
    replicaCount: 2
    ...
    

    文件修改完成后,使用如下命令安装

    $ helm install nginx -f ./nginx/values.yaml bitnami/nginx
    NAME: nginx
    LAST DEPLOYED: Sun Feb  7 02:59:48 2021
    NAMESPACE: default
    STATUS: deployed
    REVISION: 1
    ...
    

    以上操作可以使用如下命令代替:

    helm install nginx --set replicaCount=2 bitnami/nginx
    

    使用--set设置配置说明:

    • 如果同时指定了values.yaml文件和使用--set设置配置,那么--set设置的配置优先级更高

    • 多组配置:--set a=1,b=2

    • 层级:--set user.name=jaychou

    • 数组:--set users={jay,jack,john} --set users[0].name=jaychou

    由于文件更易管理和迁移,更推荐修改values.yaml的方式定制Chart

    查看release的资源创建情况

    $ kubectl get pod
    NAME                            READY   STATUS    RESTARTS   AGE
    nginx-78956d9896-5qvdl          1/1     Running   0          32s
    nginx-78956d9896-fhw5w          1/1     Running   0          32s
    

    确实,如我们所愿,创建了2个副本实例。

    更新Release

    已经安装了的release,修改定制文件后升级发布

    $ helm upgrade nginx -f ./values.yaml bitnami/nginx
    Release "nginx" has been upgraded. Happy Helming!
    NAME: nginx
    LAST DEPLOYED: Sun Feb 7 03:05:26 2021
    NAMESPACE: default
    STATUS: deployed
    REVISION: 2
    TEST SUITE: None
    ...
    

    常用命令

    帮助命令

    helm help
    helm get -h
    

    更新charts仓库

    helm repo update 
    

    更多helm install的方式

    • 从chart仓库安装,我们上面使用的方式

    • 本地编写chart模板和values.yaml等文件,然后使用以下命令安装

      helm install nginx /path/to/nginx-chart
      
    • 得到chart压缩文件,使用以下命令安装

      helm install nginx nginx-chart.tgz
      
    • chart压缩文件的http url,使用以下命令安装

      helm install nginx https://xxx.com/charts/ngin-chart.tgz
      

    如果你有兴趣,你可以创建自己的charts,执行以下命令会在目录下生成charts文件

    $ helm create my-nginx
    Creating my-nginx
    
    # 定制后
    $ helm package my-nginx
    Successfully packaged chart and saved it to: /path/to/my-nginx-0.1.0.tgz
    $ helm install my-nginx ./my-nginx-0.1.0.tgz
    NAME: nginx2
    LAST DEPLOYED: Sun Feb 28 14:20:53 2021
    NAMESPACE: default
    STATUS: deployed
    REVISION: 1
    ...
    

    更多了解请前往官方文档

    gzh

  • 相关阅读:
    JS基础的入口函数以及函数
    JS基础的数组
    JS基础的数学函数、日期时间函数、运算符和流程语句
    JS基础的引入、注释、变量、数据类型和输出语法
    CSS3的动画、弹性盒子和多媒体查询
    CSS3的颜色(RGBA)透明度、渐变颜色、图片、旋转和过渡
    CSS3边框、背景和字体
    java基础(九)---继续聊聊map
    java基础(八)---map
    java基础(七)--- set
  • 原文地址:https://www.cnblogs.com/Med1tator/p/14461063.html
Copyright © 2011-2022 走看看