zoukankan      html  css  js  c++  java
  • Kubernetes Part4 ---- HELM操作

    为什么需要HELM

    Docker解决了应用的打包问题以及部署问题使得程序更加轻便以及灵活 但无法实现应用调度和编排 需要借助K8S的deployment和statefullset service ingress等完成 但是通常一个应用系统不可能只由一个deployment或statefulset就能部署完成的 那么有没有一种方式能够去组织 deployment以及service 一条命令就完成整个应用系统的部署呢? 答案是有的 那就是HELM

    总结来说就是

    由于Kubernetes缺少对发布的应用版本管理和控制,使得部署的应用维护和更新等面临诸多的挑战,主要面临以下问题:

     •如何将这些服务作为一个整体管理?

    •这些资源文件如何高效复用?

    •不支持应用级别的版本管理

    需要HELM来拯救

    什么是HELM

    Helm是一个Kubernetes的包管理工具,就像Linux下的包管理器,如yum/apt等,可以很方便的将之前打包好的yaml文件部署到kubernetes上。

    Helm有3个重要概念:

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

    Chart:应用描述,一系列用于描述k8s 资源相关文件的集合。

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

     

    访问模式也很简单:

    下载HELM客户端 该客户端会读取kubectl config配置文件($HOME/.kube/config)从而能够访问到 k8s群集 然后直接操作k8s群集

    使用VMware BITNAMI HELM 仓库

    这里就不演示自己构建HELM CHART创建应用了,因为现在公网有太多的公共仓库供使用了,这里我们演示使用VMware的TANZU Bitnami公共仓库

    下载helm客户端

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

     

    添加bitnami仓库

    helm repo add bitnami https://charts.bitnami.com/bitnami
    
    ### 更新
    helm repo update
    

    安装kubeapp 该应用汇提供bitnami的界面 

    ### 为kubeapp创建namespace
    kubectl create namespace kubeapps
    
    ### 安装 kubeapp 使用刚刚添加的bitnami仓库
    helm install --version 5.0.0 kubeapps bitnami/kubeapps -n kubeapps --set useHelm3=true --set frontend.service.type=LoadBalancer
    
    ### 验证
    kubectl get pods,svc -n kubeapps -o wide
    NAME                           TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE   SELECTOR
    kubeapps                       LoadBalancer   10.99.8.255     <pending>     80:30624/TCP   18d   app=kubeapps,release=kubeapps
    kubeapps-internal-assetsvc     ClusterIP      10.98.48.108    <none>        8080/TCP       18d   app=kubeapps-internal-assetsvc,release=kubeapps
    kubeapps-internal-dashboard    ClusterIP      10.106.62.114   <none>        8080/TCP       18d   app=kubeapps-internal-dashboard,release=kubeapps
    kubeapps-internal-kubeops      ClusterIP      10.104.137.77   <none>        8080/TCP       18d   app=kubeapps-internal-kubeops,release=kubeapps
    kubeapps-postgresql            ClusterIP      10.98.126.33    <none>        5432/TCP       18d   app.kubernetes.io/instance=kubeapps,app.kubernetes.io/name=postgresql,role=primary
    kubeapps-postgresql-headless   ClusterIP      None            <none>        5432/TCP       18d   app.kubernetes.io/instance=kubeapps,app.kubernetes.io/name=postgresql
    kubeapps-postgresql-read       ClusterIP      10.102.159.14   <none>        5432/TCP       18d   app.kubernetes.io/instance=kubeapps,app.kubernetes.io/name=postgresql,role=read
    
    ### 看到 service/kubeapps   LoadBalancer   10.99.8.255   80:30624/TCP 我们可以通过Nodeport的方式来访问kubeapp
    

     

    为用户授权访问kubeapp

    ### 创建 service account
    kubectl create serviceaccount kubeapps-operator
    
    ### 创建rolebonding
    kubectl create clusterrolebinding kubeapps-operator --clusterrole=cluster-admin --serviceaccount=default:kubeapps-operator
    
    ### 获取登录token
    kubectl get secret $(kubectl get serviceaccount kubeapps-operator -o jsonpath='{range .secrets[*]}{.name}{"
    "}{end}' | grep kubeapps-operator-token) -o jsonpath='{.data.token}' -o go-template='{{.data.token | base64decode}}' && echo
    

    访问kubeapp(通过nodeport) 输入上步获取的token

    登录成功

     搜索WordPress 点击

     选择最新版本

     输入相关点击部署

     部署进行中

     部署成功

    获取登录口令 

    [root@k8s-master03 deploy]#    export NODE_PORT=$(kubectl get --namespace default -o jsonpath="{.spec.ports[0].nodePort}" services delightful-produce-wordpress)
    [root@k8s-master03 deploy]#    export NODE_IP=$(kubectl get nodes --namespace default -o jsonpath="{.items[0].status.addresses[0].address}")
    [root@k8s-master03 deploy]#    echo "WordPress URL: http://$NODE_IP:$NODE_PORT/"
    WordPress URL: http://172.16.0.13:32319/
    [root@k8s-master03 deploy]#    echo "WordPress Admin URL: http://$NODE_IP:$NODE_PORT/admin"
    WordPress Admin URL: http://172.16.0.13:32319/admin
    [root@k8s-master03 deploy]#   

     

    登录成功

  • 相关阅读:
    Tomcat 8.5 添加https认证
    常用服务的搭建、配置及优化
    Linux基础知识整理
    在CentOS-6系统中二进制安装MySQL-5.6
    搭建本地yum源仓库
    Redis-请慎用String类型
    Redis AOF日志备份原理
    MySQL 输入查询
    MySQL 命令行连接选项
    感思-最好的优化就是减少数据量!
  • 原文地址:https://www.cnblogs.com/houcong24/p/14219973.html
Copyright © 2011-2022 走看看