• helm包管理工具


    K8S正常部署应用是如下方式

    kubectl create deployment web --image=nginx --dru-run=client -o yaml > web.yaml
    kubectl expose web --port=80 --target-port=80 --type NodePort --dry-run=client -o yaml > svc.yanl
    
    kubectl apply -f web.yaml
    kubectl apply -f svc.yaml
    创建ingress 规则暴露
    

    如果需要部署的应用多了就需要经常修改或创建yaml,部署起来就会力不从心了,目前kubernetes推出了helm 3.0版本,

    解决管理应用问题,重复使用yaml

    1、将这些yaml作为整体管理
    2、解决yaml高效复用
    3、不支持应用级别版本管理
    

    helm 是一个命令行管理工具

    chart 把yaml打包

    release 版本,指应用级别的版本管理

    helm v3

    1、 架构改变,去掉Tiller,直接helm通过kubeconfig连接apiserver

    2、 release名称可以在不同命名空间

    helm官网地址:https://helm.sh/docs/intro/quickstart/

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

    部署helm 

    wget https://get.helm.sh/helm-v3.0.0-linux-amd64.tar.gz
    安装
    tar xf helm-v3.0.0-linux-amd64.tar.gz
    mv linux-amd64/helm /usr/bin/
    

    配置harbor源仓库

    helm repo list              #查看已经配置的源
    helm repo add stable http://mirror.azure.cn/kubernetes/charts    #添加源仓库地址
    helm search repo weave     #搜索镜像
    

    部署容器,weave 官方的UI镜像

    helm install ui stable/weave-scope  
    helm list                           #查看已经部署的版本
    kubectl edit svc ui-weave-scope      #修改type暴露NodePort访问
    

    kubectl get svc,ep

    kubectl get pods -o wide|grep weave 

     

    制作chart

    helm create mychart
    

    执行命令后会自动生成两个文件夹和两个yaml 文件

    charts             templates             Chart.yaml    values.yaml
    一般不会有什么内容   模板文件yaml存放位置     属性信息        所有yaml全局变量
    

    删除原来templates下的所有yaml文件,生成自己的项目文件,rm -rf mychart/templates/*   生成yaml文件

    kubectl create deployment nginx --image=nginx --dry-run=client -o yaml > deployment.yaml
    kubectl expose deployment nginx --port=80 --target-port=80 --type=NodePort --dry-run=client -o yaml > service.yaml
    

    使用helm 直接安装目录下的即可

    helm install web mychart/

    升级

    helm upgrade web mychart
    

    helm核心应用

    yaml 里面进行变量进行传入,维护values.yaml

    一套yaml部署多个应用时,找出yaml修改的位置

    1、	资源名称
    2、	镜像
    3、	标签
    4、	副本数
    5、	端口
    6、	PV、PVC 等等这些
    service的需要修改的
    1、	端口
    2、	资源名称
    3、	标签。。。等等
    

    动态渲染模板

    标准deployment模板

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: nginx
      name: nginx
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      strategy: {}
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - image: nginx
            name: nginx
    

    动态deployment模板

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: {{ .Release.Name }}-deploy
    spec:
      replicas: {{ .Values.replicas }}
      selector:
        matchLabels:
          app: {{ .Values.label }}
      strategy: {}
      template:
        metadata:
          labels:
            app: {{ .Values.label }}
        spec:
          containers:
          - image: {{ .Values.image }}:{{ .Values.tag }}
            name: nginx
    

    标准的service模板

    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: nginx
      name: nginx
    spec:
      ports:
      - port: 80
        protocol: TCP
        targetPort: 80
      selector:
        app: nginx
      type: NodePort
    

    动态service模板

    apiVersion: v1
    kind: Service
    metadata:
      name: {{ .Release.Name }}-svc
    spec:
      ports:
      - port: 80
        protocol: TCP
        targetPort: {{ .Values.port }}
      selector:
        app: {{ .Values.label }}
      type: NodePort
    

    全局变量模板values.yaml

    replicas: 1
    image: lizhenliang/java-demo
    tag: latest
    label: java-demo
    port: 8080
    

    测试执行

    helm install --dry-run web mychart/
    

    正式运行

    helm install web1 mychart/
    helm list

    kubectl get pods,svc | egrep "web1-deploy|web1-svc"

    扩容副本

    helm upgrade web1 --set replicas=3 mychart/
    kubectl get pods | grep "web1-deploy"
    

    回滚

    helm history web1   # 查看版本更新记录
    helm rollback web1 1
    

  • 相关阅读:
    用OFC画多条曲线
    C# 写Windows服务
    asp.net遍历文件夹和文件
    Sqlserver常用函数收集之truncate table
    如何构建多用户商城
    asp.net 获取客户端IP
    Jquery从头学起第四讲
    c#相对路径和系统路径
    JQuery获取URL
    【转】 ASP.NET session 保存到数据库
  • 原文地址:https://www.cnblogs.com/huanglingfa/p/13797330.html
Copyright © 2020-2023  润新知