zoukankan      html  css  js  c++  java
  • helm,efk日志系统

    helm:存放配单清单的   chart图表 chart仓库

    chart,helm-->Tiller-->api server -->kube_cluster

    chart--->release

    helm:     

    核心术语

    chart: 一个helm程序包,部署清单的定义,包含资源关系,镜像定义,并不包含镜像,          

    repository: chart仓库,存放chart的,就是一个https/http服务器

    release:特定的chart部署于目标集群上的一个实例

    chart -->configmap --> Relese

          values.yaml

    程序架构:

    helm:客户端,管理本地chart仓库,管理chart,Tiller服务器交互,用于发送chart,实例安装,查询,卸载等操作

    Tiller:服务端  监听来自helm的请求,接收helm发来的chartconfig,合并生成release;

    部署helm

    https://github.com/helm/helm/releases/tag/v2.9.1

     mkdir helm && cd helm

    tar xf helm-v2.9.1-linux-amd64.tar.gz && cd linux-amd64/

    mv helm /usr/bin/

    helm --help

     

    部署Tiller

    建议部署在k8s集群上

    ls .kube/config kubectl的文件,能够被helm获取到

    服务账号是tiller,需要很大权限,用clusterrolebing绑定在cluster-admin角色上

    kubeadm安装方式强制启用了rbac

    rbac文件:https://github.com/helm/helm/blob/master/docs/rbac.md

    vim  tiller-rbac.yaml

    apiVersion: v1

    kind: ServiceAccount

    metadata:

      name: tiller

      namespace: kube-system

    ---

    apiVersion: rbac.authorization.k8s.io/v1

    kind: ClusterRoleBinding

    metadata:

      name: tiller

    roleRef:

      apiGroup: rbac.authorization.k8s.io

      kind: ClusterRole

      name: cluster-admin

    subjects:

      - kind: ServiceAccount

        name: tiller

        namespace: kube-system

    kubectl apply -f tiller-rbac.yaml

    初始化helm

    export NO_PROXY="172.20.0.0/16,127.0.0.0/8"

    helm init --service-account tiller --upgrade --tiller-image=registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.11.0

    kubectl get pods -n kube-system pods是否运行起来了

    vim ~/.helm/repository/repositories.yaml

    url: https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts  修改远程charts仓库

    使用helm

        source <(helm completion bash)  helm命令自动补全

    helm  repo update  更新仓库

    https://helm.sh 官方网站

    https://hub.kubeapps.com 官方可用charts列表

    helm repo list  查看可用仓库

    helm search  列出可用charts

    helm inspect stable/mysql 查看charts详细信息

                charts

    安装运用

    helm install --name mem1 stable/memcached

    安装命名release   仓库名/安装的运用名

    验证

    kubectl get pods --namespace default -l "app=mem1-memcached" -o jsonpath="{.items[0].metadata.name}”

    kubectl get pods

    卸载运用

    helm delete --help

    helm delete mem1

    查看release

    helm list

    helm list --all

    滚动更新

    helm upgrade

    回滚

    helm rollback

    下载charts

    helm fetch stable/mysql

    release管理:install ,delete, upgrade/rollback ,list, histoty,status

    charts管理: fetch,create,inspect,verify,package

    每安装一个charts,都会下载 charts~ .helm/cache/archive/这个目录

    values.yaml  定义默认值 修改默认值并单独引用这个文件,则会生效

    cp values.yaml  ~

    vim values.yaml

    replicaCount: 2  修改部署节点数

    helm install --name mem3 stable/memcached -f values.yaml

    对于redis

    persistence:

      enabled: false 关闭持久存储

      annotations:

    prometheus.io/scrape: "true"  允许prometheus抓取数据

    charts介绍

    https://helm.sh/docs/developing_charts/#charts

    helm dep up foochart 下载依赖关系的chart

    templates and values

    模板语法:https://golang.org/pkg/text/template/

    模板实例

    apiVersion: v1

    kind: ReplicationController

    metadata:

      name: deis-database

      namespace: deis

      labels:

        app.kubernetes.io/managed-by: deis

    spec:

      replicas: 1

      selector:

        app.kubernetes.io/name: deis-database

      template:

        metadata:

          labels:

            app.kubernetes.io/name: deis-database

        spec:

          serviceAccount: deis-database

          containers:

            - name: deis-database

              image: {{.Values.imageRegistry}}/postgres:{{.Values.dockerTag}}  .Value表示来自values.yaml这个文件 一级字段或二级字段

              imagePullPolicy: {{.Values.pullPolicy}}

              ports:

                - containerPort: 5432

              env:

                - name: DATABASE_STORAGE

                  value: {{default "minio" .Values.storage}} 如果在values.yaml没有设置storage这个key,就用这个默认值

    对应的values.yaml

    imageRegistry: "quay.io/deis"

    dockerTag: "latest"

    pullPolicy: "Always"

    storage: "s3"

                                           

    内建变量

    Predefined Values

    可以使用自定义的文件

    wordpress这个charts组成如下

    wordpress:

      Chart.yaml

      requirements.yaml

      # ...

      charts/

        apache/

          Chart.yaml

          # ...

        mysql/

          Chart.yaml

          # ...

    charts/  表示wordpress依赖这个chart目录下的chart

    helm install --values=myvals.yaml wordpress

             自定义模板参数或文件 安装wordpress这个chart

    自定义chart

    helm create myapp 自动生成myapp目录,即自动生成chart文件

    myapp这个chart组成如下

    myapp/

    ├── charts

    ├── Chart.yaml

    ├── templates

    │   ├── deployment.yaml

    │   ├── _helpers.tpl

    │   ├── ingress.yaml

    │   ├── NOTES.txt

    │   └── service.yaml

    └── values.yaml

    vim Chart.yaml

    apiVersion: v1

    appVersion: "1.0"

    description: A Helm chart for Kubernetes myapp chart

    name: myapp

    version: 0.0.1

    maintainer:

    - name: mageedu

      email: mage@126.com

      url: https://www.baidu.com

    依赖其他charts的说明文件

    vim requirements.yaml

    cd templates/

    NOTES.txt  release信息

     _helpers.tpl 模板文件语法帮助

    vim values.yaml

    replicaCount: 2 以下为改动的地方

    image:

      repository: ikubernetes/myapp:v1

      tag: v1

    resources:

      limits:

        cpu: 100m

        memory: 128Mi

      requests:

        cpu: 100m

        memory: 128Mi

    模板值语法检查

    helm lint ../myapp

    打包成charts

    helm package --help

    helm package myapp/

               myapp目录打包 没写路径,默认放在当前目录myapp-0.0.1.tgz

    在当前存放charts的目录开启helm仓库服务

    helm serve

    打开另一终端测试

    helm search myapp

    修改NOTE.txt以便能正确显示release安装后信息

    测试helm安装

    helm install --name myapp local/myapp

                   release名  仓库名/charts

    helm delete --purge myapp1

                删除release安装的pod同时也把release名也删除 这样release名就可以重复使用了

    添加仓库

    https://hub.kubeapps.com/charts/incubator

    helm repo  add --help

    helm repo  add stable1 https://kubernetes-charts.storage.googleapis.com

    helm repo  add incubator https://storage.googleapis.com/kubernetes-charts-incubator

    helm repo remove incubator  删除incubator仓库

    EFK日志系统组件部署

    部署elasticsearch

    elasticsearch架构 data<-->master<--client

    cd helm/

    docker pull docker.elastic.co/elasticsearch/elasticsearch-oss:6.4.2 拖镜像

    helm repo  add incubator https://storage.googleapis.com/kubernetes-charts-incubator

    helm fetch incubator/elasticsearch

    tar xf elasticsearch-1.10.2.tgz

    cd elasticsearch/

    vim values.yaml

    appVersion: "6.2.4"

    image:

      repository: "docker.elastic.co/elasticsearch/elasticsearch-oss"

      tag: "6.3.1"  版本 kibana版本一致

    cluster:

      name: "elasticsearch"

        config:

        MINIMUM_MASTER_NODES: "1" 最少节点数

    client:

      name: client

      replicas: 1 启用1个副本

    master:

      name: master

      exposeHttp: false

      persistence:

    enabled: false

      replicas: 1

    data:

      name: data

      exposeHttp: false

      persistence:

    enabled: false 关闭持久存储

      replicas: 1  根据node资源调整pod数量

    kubectl create namespace efk

    helm install --name els6 --namespace=efk -f values.yaml incubator/elasticsearch

    els1-elasticsearch-client.efk.svc.cluster.local 服务访问入口

    测试

    kubectl run cirror-$RANDOM --rm -it --image=cirros -- /bin/sh 开启一个pod和终端

    curl els6-elasticsearch-client.efk.svc.cluster.local

    curl els6-elasticsearch-client.efk.svc.cluster.local:9200/_cat/nodes  查看有多少个节点

    curl els6-elasticsearch-client.efk.svc.cluster.local:9200/_cat/indices  查看生成多少索引

    部署fluentd-elasticsearch 收集工具

    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/fluentd-elasticsearch:v2.3.2 拖镜像

    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/fluentd-elasticsearch:v2.3.2 gcr.io/google-containers/fluentd-elasticsearch:v2.3.2 改镜像名

    helm  fetch incubator/fluentd-elasticsearch

    tar xf fluentd-elasticsearch-2.0.7.tgz && cd fluentd-elasticsearch/

    elasticsearch:

      host: 'els1-elasticsearch-client.efk.svc.cluster.local' 添加elasticsearch集群服务

    podAnnotations:  添加被prometheus监控

      prometheus.io/scrape: "true"

      prometheus.io/port: "24231"

    service:  添加监控的service

      type: ClusterIP

      ports:

        - name: "monitor-agent"

          port: 24231

    tolerations:  添加master污点容忍

      - key: node-role.kubernetes.io/master

       operator: Exists

       effect: NoSchedule

    helm install --name flu1 --namespace=efk -f values.yaml incubator/fluentd-elasticsearch

    部署kibana

    helm fetch stable/kibana

    tar xf kibana-0.2.2.tgz

    cd kibana/

    vim values.yaml

    image:

      repository: "docker.elastic.co/kibana/kibana-oss"

      tag: "6.3.1" 版本 与elasticsearch版本一致

    service:

      type: NodePort

      ELASTICSEARCH_URL: http://els6-elasticsearch-client.efk.svc.cluster.local:9200

    helm install --name kib1 --namespace=efk -f values.yaml stable/kibana

              release名   指定ns       指定自定义模板  仓库/charts

    测试

    kubectl get svc -n efk

    kib1-kibana   NodePort  10.105.194.250   <none>  443:30240/TCP

    http://192.168.81.10:30240

    匹配字段

    logstash-*

    @timestamp

    最后点击 create index pattern

  • 相关阅读:
    Flutter——限制按钮点击的时间间隔
    【友盟】添加埋点事件(以iOS和安卓端为例)
    Git——在VSCode中查看Git历史提交记录
    Flutter——【好用网站】大集合
    Flutter——数组(List)
    Flutter——实现强大的输入框功能
    基于腾讯位置服务定位实现物业巡检防作弊场景
    基于腾讯地图定位组件实现周边公用厕所远近排序分布图
    腾讯位置服务Flutter业务实践——地图SDK Flutter插件实现(一)
    微信小程序类快递自动填写收发货地址功能
  • 原文地址:https://www.cnblogs.com/leiwenbin627/p/11366900.html
Copyright © 2011-2022 走看看