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发来的chart与config,合并生成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

helm,efk日志系统的更多相关文章

  1. k8s-搭建 EFK 日志系统

    搭建 EFK 日志系统 大家介绍了 Kubernetes 集群中的几种日志收集方案,Kubernetes 中比较流行的日志收集解决方案是 Elasticsearch.Fluentd 和 Kibana( ...

  2. k8s系列---EFK日志系统

    文章拷于:http://blog.itpub.net/28916011/viewspace-2216748/   用于自己备份记录错误 一个完整的k8s集群,应该包含如下六大部分:kube-dns.i ...

  3. kubernetes集群EFK日志系统搭建

    日志收集架构 Kubernetes 集群本身不提供日志收集的解决方案,一般来说有主要的3种方案来做日志收集: 在节点上运行一个 agent 来收集日志 在 Pod 中包含一个 sidecar 容器来收 ...

  4. Kubernetes 学习25 创建自定义chart及部署efk日志系统

    一.概述 1.我们说过在helm架构中有这么几个关键组件,helm,tiller server,一般托管运行于k8s之上,helm能够通过tiller server在目标k8s集群之上部署应用程序,而 ...

  5. Kubernetes 日志:搭建 EFK 日志系统

    Kubernetes 中比较流行的日志收集解决方案是 Elasticsearch.Fluentd 和 Kibana(EFK)技术栈,也是官方现在比较推荐的一种方案. Elasticsearch 是一个 ...

  6. 十九,基于helm搭建EFK日志收集系统

    目录 EFK日志系统 一,EFK日志系统简介: 二,EFK系统部署 1,EFK系统部署方式 2,基于Helm方式部署EFK EFK日志系统 一,EFK日志系统简介: 关于系统日志收集处理方案,其实有很 ...

  7. centos7搭建EFK日志分析系统

    前言 EFK可能都不熟悉,实际上EFK是大名鼎鼎的日志系统ELK的一个变种 在没有分布式日志的时候,每次出问题了需要查询日志的时候,需要登录到Linux服务器,使用命令cat -n xxxx|grep ...

  8. Docker搭建EFK日志收集系统,并自定义es索引名

    EFK架构图 一.EFK简介 EFK不是一个软件,而是一套解决方案,并且都是开源软件,之间互相配合使用,完美衔接,高效的满足了很多场合的应用,是目前主流的一种日志系统. EFK是三个开源软件的缩写,分 ...

  9. K8S 部署es,搭建efk日志收集系统

    1.k8s部署es集群:https://www.jianshu.com/p/e490f7597539 2.k8s搭建efk日志收集系统:https://www.cnblogs.com/minseo/p ...

  10. C++ 高性能无锁日志系统

    服务器编程中,日志系统需要满足几个条件 .高效,日志系统不应占用太多资源 .简洁,为了一个简单的日志功能引入大量第三方代码未必值得 .线程安全,服务器中各个线程都能同时写出日志 .轮替,服务器不出故障 ...

随机推荐

  1. mysqldump从mysql迁移数据到OceanBase

    使用mysqldump导出数据 /usr/bin/mysqldump --single-transaction -B employees -S /data/mysql/mysql.sock -uroo ...

  2. 动态能力理论&知识管理理论--商业之所见

    动态能力理论:企业整合,建立和再配置内外部资源以适应快速变化环境的能力. (1)"动态"指的是适应不断变化的环境,企业必须具有不断更新自身能力的能力: (2)"能力&qu ...

  3. Informatica - [01] 概述

    题记部分 001 || 概述   Informatica 是一家全球领先的数据集成和数据管理解决方案提供商,致力于为客户提供具有强大的元数据管理.数据集成和个性化分析递送功能.Informatica的 ...

  4. Oracle - [03] 存储过程

    一.什么是存储过程 存储过程是一种数据库对象,是一种存储在数据库中的可执行程序,是一些经过编写.编译而存在数据库中的SQL语句集. 二.创建存储过程的语法 create or replace proc ...

  5. Linux - 禁ping & 开放访问端口

    适用于Linux操作系统 禁ping 1.编辑 /etc/sysctl.conf 文件,文件末尾增加如下内容后,保存退出. net.ipv4.icmp_echo_ignore_all = 1 2.在命 ...

  6. C#中对面向standard2.0、standard2.1的项目进行单元测试

    单元测试项目的目标框架 (TargetFramework或TargetFrameworks) 不能是standard2.0或standard2.1. 这是因为.NET Standard只是一个规范,它 ...

  7. C/C++跨平台开发1-windows和linux中的类库

    基本概念: 什么是库: 在windows平台和linux平台下都大量存在着库. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 静态库:在程序链接的时候使用,链接器会将程序中使 ...

  8. linux下安装cmake版本

    点击查看代码 要在基于ARM的Linux系统上安装CMake 3.19.3版本,你可以按照以下步骤进行操作: 1. **下载CMake 3.19.3版本的ARM架构压缩包**: 你可以从CMake的官 ...

  9. .NET Core 中如何实现缓存的预热?

    在构建高性能的 .NET Core 应用时,缓存是提升系统响应速度.减轻数据库压力的利器.然而,缓存并非一蹴而就,它也需要"热身"才能发挥最佳性能.这就是缓存预热的意义所在. 一. ...

  10. GPU的硬件组成及运行原理

    GPU的硬件组成 GPU 是一种专门为图形处理而设计的处理器,它的设计目标是在处理大规模.高并发的图形数据时提供高效的计算能力.与 CPU 相比,GPU 的处理器数量更多,每个处理器的计算能力相对较弱 ...