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发来的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
匹配字段
logstash-*
@timestamp
最后点击 create index pattern
helm,efk日志系统的更多相关文章
- k8s-搭建 EFK 日志系统
搭建 EFK 日志系统 大家介绍了 Kubernetes 集群中的几种日志收集方案,Kubernetes 中比较流行的日志收集解决方案是 Elasticsearch.Fluentd 和 Kibana( ...
- k8s系列---EFK日志系统
文章拷于:http://blog.itpub.net/28916011/viewspace-2216748/ 用于自己备份记录错误 一个完整的k8s集群,应该包含如下六大部分:kube-dns.i ...
- kubernetes集群EFK日志系统搭建
日志收集架构 Kubernetes 集群本身不提供日志收集的解决方案,一般来说有主要的3种方案来做日志收集: 在节点上运行一个 agent 来收集日志 在 Pod 中包含一个 sidecar 容器来收 ...
- Kubernetes 学习25 创建自定义chart及部署efk日志系统
一.概述 1.我们说过在helm架构中有这么几个关键组件,helm,tiller server,一般托管运行于k8s之上,helm能够通过tiller server在目标k8s集群之上部署应用程序,而 ...
- Kubernetes 日志:搭建 EFK 日志系统
Kubernetes 中比较流行的日志收集解决方案是 Elasticsearch.Fluentd 和 Kibana(EFK)技术栈,也是官方现在比较推荐的一种方案. Elasticsearch 是一个 ...
- 十九,基于helm搭建EFK日志收集系统
目录 EFK日志系统 一,EFK日志系统简介: 二,EFK系统部署 1,EFK系统部署方式 2,基于Helm方式部署EFK EFK日志系统 一,EFK日志系统简介: 关于系统日志收集处理方案,其实有很 ...
- centos7搭建EFK日志分析系统
前言 EFK可能都不熟悉,实际上EFK是大名鼎鼎的日志系统ELK的一个变种 在没有分布式日志的时候,每次出问题了需要查询日志的时候,需要登录到Linux服务器,使用命令cat -n xxxx|grep ...
- Docker搭建EFK日志收集系统,并自定义es索引名
EFK架构图 一.EFK简介 EFK不是一个软件,而是一套解决方案,并且都是开源软件,之间互相配合使用,完美衔接,高效的满足了很多场合的应用,是目前主流的一种日志系统. EFK是三个开源软件的缩写,分 ...
- K8S 部署es,搭建efk日志收集系统
1.k8s部署es集群:https://www.jianshu.com/p/e490f7597539 2.k8s搭建efk日志收集系统:https://www.cnblogs.com/minseo/p ...
- C++ 高性能无锁日志系统
服务器编程中,日志系统需要满足几个条件 .高效,日志系统不应占用太多资源 .简洁,为了一个简单的日志功能引入大量第三方代码未必值得 .线程安全,服务器中各个线程都能同时写出日志 .轮替,服务器不出故障 ...
随机推荐
- mysqldump从mysql迁移数据到OceanBase
使用mysqldump导出数据 /usr/bin/mysqldump --single-transaction -B employees -S /data/mysql/mysql.sock -uroo ...
- 动态能力理论&知识管理理论--商业之所见
动态能力理论:企业整合,建立和再配置内外部资源以适应快速变化环境的能力. (1)"动态"指的是适应不断变化的环境,企业必须具有不断更新自身能力的能力: (2)"能力&qu ...
- Informatica - [01] 概述
题记部分 001 || 概述 Informatica 是一家全球领先的数据集成和数据管理解决方案提供商,致力于为客户提供具有强大的元数据管理.数据集成和个性化分析递送功能.Informatica的 ...
- Oracle - [03] 存储过程
一.什么是存储过程 存储过程是一种数据库对象,是一种存储在数据库中的可执行程序,是一些经过编写.编译而存在数据库中的SQL语句集. 二.创建存储过程的语法 create or replace proc ...
- Linux - 禁ping & 开放访问端口
适用于Linux操作系统 禁ping 1.编辑 /etc/sysctl.conf 文件,文件末尾增加如下内容后,保存退出. net.ipv4.icmp_echo_ignore_all = 1 2.在命 ...
- C#中对面向standard2.0、standard2.1的项目进行单元测试
单元测试项目的目标框架 (TargetFramework或TargetFrameworks) 不能是standard2.0或standard2.1. 这是因为.NET Standard只是一个规范,它 ...
- C/C++跨平台开发1-windows和linux中的类库
基本概念: 什么是库: 在windows平台和linux平台下都大量存在着库. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 静态库:在程序链接的时候使用,链接器会将程序中使 ...
- linux下安装cmake版本
点击查看代码 要在基于ARM的Linux系统上安装CMake 3.19.3版本,你可以按照以下步骤进行操作: 1. **下载CMake 3.19.3版本的ARM架构压缩包**: 你可以从CMake的官 ...
- .NET Core 中如何实现缓存的预热?
在构建高性能的 .NET Core 应用时,缓存是提升系统响应速度.减轻数据库压力的利器.然而,缓存并非一蹴而就,它也需要"热身"才能发挥最佳性能.这就是缓存预热的意义所在. 一. ...
- GPU的硬件组成及运行原理
GPU的硬件组成 GPU 是一种专门为图形处理而设计的处理器,它的设计目标是在处理大规模.高并发的图形数据时提供高效的计算能力.与 CPU 相比,GPU 的处理器数量更多,每个处理器的计算能力相对较弱 ...