k8s
  • Initial page
  • 序言
  • 前言
    • 发展历史
    • CNCF - 云原生计算基金会简介
    • Kubernetes与云原生应用的概念
  • 概念与原理
    • 基本概念总结
    • 开放接口
      • CRI - Container Runtime Interface
      • CNI - Container Network Interface
      • CSI - Container Storage Interface
    • 核心概念与原理
      • Kubernetes简介
      • Kubernetes架构与原理
      • 核心组件
      • 设计理念
      • 核心组件原理
        • etcd概念与原理
          • Etcd基于RAFT的一致性
          • Etcd v2 与 v3存储
        • kube-apiserver
        • kube-scheduler
        • kube-Controller Manager
        • Kubelet
        • kubectl常用命令
      • kubectl
      • kube-proxy
      • IPVS负载均衡
      • kube-dns
      • Federation-集群联邦
      • kubeadm
    • 资源对象与基本概念解析
    • 资源对象
      • Pod
        • Pod概述
        • Pod解析
        • Pod 的生命周期
        • 探针
        • Init 容器
        • Pause容器
        • Pod 安全策略
        • Pod hook
        • Pod Preset
        • pod其他设置
        • Pod中断与PDB
    • Kubernetes中的网络
      • 图解Kubernetes网络(一)
      • 图解Kubernetes网络(二)
      • 图解Kubernetes网络(三)
      • calico
      • flannel
    • 转发K8S后端服务的四种方式
    • 集群资源对象
      • Node
      • Namespace
      • Label
      • Annotation
      • Taint和Toleration(污点和容忍
      • 垃圾收集
      • Autoscaling
      • Horizontal Pod Autoscaling
        • Metrics-Server
        • Heapster
      • ReplicationController和ReplicaSet
    • 控制器资源对象
      • CronJob
      • Job
      • DaemonSet
      • Deployment
      • StatefulSet
    • 服务发现-资源对象
      • DNS原理讲解
      • Ingress 选型
      • Service
      • Ingress
    • 存储对象
      • ConfigMap
      • Volume
      • Persistent Volume(持久化卷)
      • StorageClass
      • 本地持久化存储
      • Secret
    • 策略对象
      • Resource Quota
      • SecurityContext
    • 身份对象
      • 认证
      • Service Account
      • RBAC——基于角色的访问控制
      • 准入控制
      • Network Policy
    • 资源调度
      • QoS(服务质量等级)
  • 插件扩展
    • Kubernetes的CI/CD
    • Dashboard
    • CoreDNS
    • 监控
      • 概述
      • 第1章 采集
        • Probes
        • Docker Stats
        • cAdvisor
        • Heapster
          • HPA
        • metrics-server
        • custom metrics自定义指标
        • kube-state-metrics
        • node-exporter
        • Prometheus
          • go 自定义metric
          • 本地存储
          • Prometheus概述
          • Prometheus基本架构
          • Prometheus部署方案
          • Prometheus的配置与服务发现
          • PromQL查询解析
          • Prometheus数据可视化
          • Prometheus存储机制
        • Sysdig
        • Untitled
      • 自定义监控
      • Custom-Metrics及Prometheus监控系统
      • grafana各种类型监控-实用
    • 日志
    • 存储
      • Kubernetes Ceph 工作原理详解
    • Metrics
    • GPU
    • Cluster AutoScaler
    • CI/CD
      • 基于DOCKER的CI工具—DRONE
      • DRONE安装指南
      • 如何使用DRONE
      • Drone
      • Jenkins
        • jenkins 集成 keycloak 认证
    • 50个免费的Kubernetes工具盘点
      • Kube集群部署工具
      • 监控工具
      • 测试工具
      • 安全工具
      • 实用的CLI工具
      • 开发工具
      • 无服务器/函数工具
      • 原生服务发现
      • 原生可视化与控制
    • Untitled
  • 领域应用
    • Istio
      • Helm安装
      • 安装并试用Istio service mesh
      • 示例应用部署
      • Bookinfo 应用-
      • 配置请求的路由规则
      • 故障注入
      • 流量转移
      • Istio流量管理实现机制深度解析
      • istio:监控能力介绍
      • Istio 04:Istio性能及扩展性介绍
      • Untitled
  • 实践
    • 大规模集群
    • 高可用
  • k8s运维排查
    • 常用命令
    • Kubernetes之YAML文件
      • yaml文件例子--pod
      • yaml文件例子--rc
    • Kubernetes运维
      • 集群管理
      • 集群与应用监控
      • 日志收集与管理
      • 常见问题定位
      • 权限管理RBAC
    • 排错概览
    • 集群排错
      • kubernetes集群管理常用命令一
    • Pod 排错
    • 网络排错
      • 容器内抓包定位网络问题
    • PV 排错
    • Windows 排错
    • 云平台排错
    • 集群安装脚本
    • 排错工具
    • 常见问题
      • k8s故障解决干货文档链接
      • 记一次Docker/Kubernetes上无法解释的连接超时原因探寻之旅
      • service没有负载均衡
      • kubernetes集群etcd空间配额2G的坑优化
    • K8S--100问
      • 解决 Docker 日志文件太大的问题
      • Kubernetes集群里容器之间的通讯方式
      • k8s 优化
      • lxcfs 在容器内显示容器的 CPU、内存状态
      • kubectl 创建 Pod流程
      • k8s网络-iptables
      • k8s底层网络原理
      • 网络排查
      • kubectl top 和 cadvisor metric ,docker state不一致的问题
      • 容器挂载数据卷的几种情况
      • 容器的终止流程
      • Kubernetes 中如何保证优雅地停止 Pod
      • K8S的apiVersion
      • 如何在Pod中执行宿主机上的命令
      • 创建 Pod 流程
      • k8s主要组件说明
      • 节点网络规划
      • Deployment管理方式
      • pod的分配方式
  • 深入浅出k8s
    • 说明
    • k8s发布策略介绍
    • oom kill原理讲解
    • Kubernetes 的架构设计与实现原理
  • 附录
    • CKA认证
    • 生态圈
    • 资讯快报
      • 2018态势回顾与2019年前景展望
      • Untitled
    • 学习资源
    • 参考文档
    • Kubernetes版本更新日志
      • Kubernetes 1.14 更新日志
      • Kubernetes 1.13 更新日志
      • Kubernetes1.12更新日志
      • Kubernetes1.10更新日志
      • Kubernetes1.11更新日志
  • 思维导图
    • k8s
    • DEVOPS
  • DEVOPS
    • 开源仓库-nexus
      • 一,nexus的安装
      • 二,使用nexus3配置docker私有仓库
      • 三,使用nexus3配置maven私有仓库
      • 四,nexus-3.14.0升级到3.15.2
      • 五,nexus3搭建golang私服
    • vpn
      • openvpn
    • Tcpdump 示例教程
    • Ipsec VPN-centos7使用strangwang搭建vpn
    • yum安装redis及常用指令
    • 数据库
      • mysql表操作
      • mysql 库常用操作及备份还原
      • MySQL 优化实施方案
    • NSQ
      • nsq问题解答
      • 选型
      • docker-compose部署 简单nsq 集群
    • 部署Redis集群
    • zookeeper安装及使用
    • Etcd
      • Untitled
      • Etcd配置
  • k8s系统完整部署
    • CentOS7.5 使用二进制程序部署Kubernetes1.12.2
    • 二进制的方式部署 K8S-1.16 高可用集群
    • CoreOS部署Kubernetes集群
    • EFK
      • 日志-kafka
      • logstash的部署、整合ELK+Filebeat
      • 应用日志收集
      • ES搭建
      • es集群部署
      • ElasticSearch技术原理
      • Elasticsearch操作
      • kibana
      • kibana简单使用
      • 非K8S主机部署Filebat
    • 镜像仓库-Harbor
    • Harbor 2.6.2安装
    • cURL 命令获取本机外网 IP
    • Shell 解析 JSON
    • 制作 gitbook 文档镜像,运行在 K8S 上
    • Kubernetes 之 MySQL 持久存储和故障转移
    • 如何删除etcd上的旧数据
    • Git 实战教程
  • 生活
    • 信合.阳光城
Powered by GitBook
On this page
  • 官方简介:
  • 安装
  • JDK安装
  • ES安装
  • 配置Elasticsearch
  • 故障处理
  • ES使用指南
  • 补充默认设置
  • RPM目录布局
  • 文章参考:
  1. k8s系统完整部署
  2. EFK

ES搭建

Previous应用日志收集Nextes集群部署

Last updated 6 years ago

公司采用的kubernetes集群中的日志收集解决方案

为第三种

将所有的Pod的日志都挂载到宿主机上,每台主机上单独起一个日志收集Pod,通过filebeat进行采集

优点:完全解耦,性能最高,管理起来最方便

缺点:需要统一日志收集规则,目录和输出方式

官方简介:

由于es占用资源过大,使用独立机器建立

安装

通过rpm包安装Elasticsearch

系统:centos7.4 64

安装版本:es6.2.0

安装要求

需要安装最新版本的Java

JDK安装

查询yum源支持的jdk的rpm包

yum list | grep jdk

安装jdk-1.8.0版本

yum -y install java-1.8.0-openjdk*

安装后,执行java -version

root@localhost ~]# java -version
openjdk version "1.8.0_144" 
OpenJDK Runtime Environment (build 1.8.0_144-b01)

安装成功。

ES安装

下载安装包并安装

wget -c https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.rpm
rpm -ivh elasticsearch-6.2.4.rpm

安装完后会报出

###不在安装时启动,请执行以下语句以将ElasticSearch服务配置为使用SystemD自动启动
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
###您可以通过执行来启动ElasticSearch服务
sudo systemctl start elasticsearch.service

在基于systemd的发行版上,安装脚本将尝试设置内核参数(例如 vm.max_map_count); 您可以通过屏蔽systemd-sysctl.service单元来跳过此步骤

默认情况下,Elasticsearch服务不会在systemd 日记中记录信息。要启用journalctl日志记录,--quiet必须从文件中的ExecStart命令行中删除该选项elasticsearch.service。

当systemd启用了日志记录,日志信息使用可用journalctl的命令:

列出elasticsearch服务的日记帐分录:

sudo journalctl --unit elasticsearch

配置Elasticsearch

修改/etc/elasticsearch/elasticsearch.yml配置文件

[root@centos elasticsearch]# egrep -v "#|^$" elasticsearch.yml
cluster.name: mzlog
node.name: node2
path.data: /data1/elastic/data  #修改存储路径
path.logs: /data1/elastic/logs  #修改日志路径
bootstrap.memory_lock: true  #启用内存锁
network.host: 10.125.0.45

注意:修改path.data和path.logs里面后的权限,属主要改为elasticsearch用户

修改jvm.options里内存大小

使用6G内存

-Xms6g
-Xmx6g

修改/etc/sysconfig/elasticsearch系统配置

[root@elasticsearch]#egrep -v "#|^$" /etc/sysconfig/elasticsearch|cat -n
1	ES_PATH_CONF=/etc/elasticsearch
2	PID_DIR=/data1/elastic
3	ES_STARTUP_SLEEP_TIME=5

修改/etc/security/limits.conf文件内容

在最后增加以下内容
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited

需要将elasticsearch替换为运行Elasticsearch程序的用户

在/etc/systemd/system/elasticsearch.service.d目录下创建一个文件override.conf,并添加下列内容

[Service]
LimitMEMLOCK=infinity

详情我们可以参考:https://www.elastic.co/guide/en/elasticsearch/reference/current/setting-system-settings.html#systemd

最后重新载入配置文件更新服务

systemctl daemon-reload
systemctl start elasticsearch.service

查看elasticsearch的监听端口

# netstat -tnlp |grep java
tcp  0      0 :::9200     :::*     LISTEN      7407/java           
tcp  0      0 :::9300     :::*     LISTEN      7407/java

curl命令发送请求来查看elasticsearch是否接收到了数据

# curl http://localhost:9200/_search?pretty
ELK默认端口号
elasticsearch:9200 9300
logstash     : 9301
kinaba       : 5601

故障处理

ES使用指南

从下面返加的JSON我们可以得到该节点的节点名,所属集群名,ES版本号,lucene版本号。

1.查看集群的健康状态。

http://127.0.0.1:9200/_cat/health?v

URL中_cat表示查看信息,health表明返回的信息为集群健康信息,?v表示返回的信息加上头信息,跟返回JSON信息加上?pretty同理,就是为了获得更直观的信息

下面的信息包括:

集群的状态(status):red红表示集群不可用,有故障。yellow黄表示集群不可靠但可用,一般单节点时就是此状态。green正常状态,表示集群一切正常。

节点数(node.total):节点数,这里是2,表示该集群有两个节点。

数据节点数(node.data):存储数据的节点数,这里是2。数据节点在Elasticsearch概念介绍有。

分片数(shards):这是12,表示我们把数据分成多少块存储。

主分片数(pri):primary shards,这里是6,实际上是分片数的两倍,因为有一个副本,如果有两个副本,这里的数量应该是分片数的三倍,这个会跟后面的索引分片数对应起来,这里只是个总数。

激活的分片百分比(active_shards_percent):这里可以理解为加载的数据分片数,只有加载所有的分片数,集群才算正常启动,在启动的过程中,如果我们不断刷新这个页面,我们会发现这个百分比会不断加大。

2.查看集群的索引数。

http://127.0.0.1:9200/_cat/indices?v

通过该连接返回了集群中的所有索引,其中.kibana是kibana连接后在es建的索引,school是我自己添加的。

这些信息,包括

索引健康(health),green为正常,yellow表示索引不可靠(单节点),red索引不可用。与集群健康状态一致。

状态(status),表明索引是否打开。

索引名称(index),这里有.kibana和school。

uuid,索引内部随机分配的名称,表示唯一标识这个索引。

主分片(pri),.kibana为1,school为5,加起来主分片数为6,这个就是集群的主分片数。

文档数(docs.count),school在之前的演示添加了两条记录,所以这里的文档数为2。

已删除文档数(docs.deleted),这里统计了被删除文档的数量。

索引存储的总容量(store.size),这里school索引的总容量为6.4kb,是主分片总容量的两倍,因为存在一个副本。

主分片的总容量(pri.store.size),这里school的主分片容量是7kb,是索引总容量的一半。

3.查看集群所在磁盘的分配状况

http://127.0.0.1:9200/_cat/allocation?v

通过该连接返回了集群中的各节点所在磁盘的磁盘状况

返回的信息包括:

分片数(shards),集群中各节点的分片数相同,都是6,总数为12,所以集群的总分片数为12。

索引所占空间(disk.indices),该节点中所有索引在该磁盘所点的空间。

磁盘使用容量(disk.used),已经使用空间41.6gb

磁盘可用容量(disk.avail),可用空间4.3gb

磁盘总容量(disk.total),总共容量45.9gb

磁盘便用率(disk.percent),磁盘使用率90%

4.查看集群的节点

http://127.0.0.1:9200/_cat/nodes?v

通过该连接返回了集群中各节点的情况。这些信息中比较重要的是master列,带*星号表明该节点是主节点。带-表明该节点是从节点。

补充默认设置

RPM还有一个系统配置文件(/etc/sysconfig/elasticsearch),允许您设置以下参数:

JAVA_HOME

设置要使用的自定义Java路径。

MAX_OPEN_FILES

最大打开文件数,默认为65535。

MAX_LOCKED_MEMORY

最大锁定内存大小。unlimited如果您使用bootstrap.memory_lockelasticsearch.yml中的选项,则 设置为。

MAX_MAP_COUNT

ES_PATH_CONF

配置文件目录(其中必须包括elasticsearch.yml, jvm.options,和log4j2.properties文件); 默认为 /etc/elasticsearch。

ES_JAVA_OPTS

您可能想要应用的任何其他JVM系统属性。

RESTART_ON_UPGRADE

在程序包升级时配置重新启动,默认为false。这意味着您必须在手动安装软件包后重新启动Elasticsearch实例。这样做的原因是为了确保群集中的升级不会导致连续的分片重新分配,从而导致高网络流量并缩短群集的响应时间。

RPM目录布局

RPM将配置文件,日志和数据目录放置在基于RPM的系统的适当位置:

类型

描述

默认位置

设置

家

Elasticsearch主目录或 $ES_HOME

/usr/share/elasticsearch

箱子

二进制脚本,包括elasticsearch启动节点和elasticsearch-plugin安装插件

/usr/share/elasticsearch/bin

CONF

配置文件包括 elasticsearch.yml

/etc/elasticsearch

CONF

环境变量,包括堆大小,文件描述符。

/etc/sysconfig/elasticsearch

数据

节点上分配的每个索引/分片的数据文件的位置。可以容纳多个位置。

/var/lib/elasticsearch

path.data

日志

日志文件位置。

/var/log/elasticsearch

path.logs

插件

插件文件位置。每个插件都将包含在一个子目录中。

/usr/share/elasticsearch/plugins

回购

共享文件系统存储库位置。可以容纳多个位置。文件系统存储库可以放在此处指定的任何目录的任何子目录中。

未配置

path.repo

您现在已经设置了测试Elasticsearch环境。在开始认真开发或使用Elasticsearch投入生产之前,您必须进行一些额外的设置:

文章参考:

es官网:

官方安装说明:

github地址:

6.3版本下载:

作者:Zzooper 来源:CSDN 原文:

官方安装文档:

有关更多命令行选项,请查看man journalctl或。

Elasticsearch默认使用/etc/elasticsearch运行时配置。此目录的所有权以及此目录中的所有文件都设置为 root:elasticsearch打包安装,并且目录setgid 设置了标志,以便创建的所有文件和子目录/etc/elasticsearch 也使用此所有权创建(例如,如果使用密钥库创建)。预计会对此进行维护,以便Elasticsearch进程可以通过组权限读取此目录下的文件。

默认情况下,Elasticsearch从/etc/elasticsearch/elasticsearch.yml文件加载其配置 。介绍了此配置文件的格式。

1

解决方案:

进程可能具有的最大内存映射区域数。如果您使用mmapfs 索引存储类型,请确保将其设置为较高的值。欲了解更多信息,请查看 有关max_map_count。这是sysctl在启动Elasticsearch之前设置的。默认为262144。

使用的分发systemd要求通过systemd而不是通过/etc/sysconfig/elasticsearch 文件来配置系统资源限制。有关更多信息,请参阅。

后续步骤

了解如何。

配置。

配置。

社区文档:

https://www.elastic.co/cn/products/elasticsearch
https://www.elastic.co/guide/en/elasticsearch/reference/current/rpm.html
https://github.com/elastic/elasticsearch
https://www.elastic.co/cn/downloads/past-releases/elasticsearch-6-3-0
https://blog.csdn.net/qq_27739989/article/details/78047106
https://www.elastic.co/guide/en/elasticsearch/reference/current/rpm.html#rpm
https://www.freedesktop.org/software/systemd/man/journalctl.html
密钥库)工具
配置Elasticsearch中
elasticsearch报错之 memory locking requested for elasticsearch process but memory is not locked
https://www.cnblogs.com/FengGeBlog/p/10266148.html
Systemd配置
编辑
配置Elasticsearch
重要的Elasticsearch设置
重要的系统设置
https://elasticsearch.cn/article/6395
Linux内核文件
ES_PATH_CONF
ES查看集群信息命令_es pri.store.size-CSDN博客
Logo