基于CentOS7安装kubesphere和Kubernetes并接入外部ES收集日志

news/2025/2/25 16:50:27

一、修改所有节点主机名

主节点就修改成master

hostnamectl set-hostname master

然后输入bash刷新当前主机名

工作节点1就修改成node1

hostnamectl set-hostname node1

然后输入bash刷新当前主机名

二、全部节点安装依赖并同步时间

yum -y install socat conntrack ebtables ipset
    yum install ntpdate -y

    同步时间

    ntpdate time.windows.com  

    三、下载 KubeKey

    3.1 选择中国时区

    export KKZONE=cn

    3.2 执行以下命令下载 KubeKey

    curl -sfL https://get-kk.esphere>kubesphere.io | VERSION=v3.0.13 sh –

    注意:

    节点要求

    • 所有节点必须都能通过 SSH 访问。
    • 所有节点时间同步。
    • 所有节点都应使用 sudo/curl/openssl/tar

    3.3 为 kk 添加可执行权限

    chmod +x kk

    3.4 创建集群

    3.5 创建示例配置文件

    我这里esphere>kubesphere选了3.4.1版本,如果不指定 Kubernetes 版本,KubeKey 将默认安装 Kubernetes v1.23.10

    ./kk create config --with-es>kubernetes v1.23.0 --with-esphere>kubesphere v3.4.1 -f k8s/自定义文件名.yaml

    3.6 修改生成的yaml文件

    只修改主机名、IP地址、用户名密码,区分工作节点与主节点,其他不变

    3.7 运行以下命令安装集群

    ./kk create cluster -f k8s/文件名.yaml

    如果出现无法下载镜像包,那就配置一下dockers的加速器

    cat /etc/docker/daemon.json

    {
    
      "exec-opts": [
    
        "native.cgroupdriver=systemd"
    
      ],
    
      "registry-mirrors": [
    
        "https://docker.1ms.run",
    
        "https://docker.m.daocloud.io",
    
        "https://docker.1panel.top"
    
      ],
    
      "live-restore": true,
    
      "log-driver": "json-file",
    
      "log-opts": {
    
        "max-size": "500m",
    
        "max-file": "3"
    
      },
    
      "max-concurrent-downloads": 10,
    
      "max-concurrent-uploads": 5
    
    }

    重启dockers服务

    systemctl daemon-reload && systemctl restart docker

    最后出现这个就是装好了

    四、安装Elasticsearch收集pod日志

    4.1 服务器优化

    4.1.1、调整最大文件数到65535

    vi /etc/security/limits.conf
    * hard nofile 65535
    * soft nofile 65535

    通过ulimit -n命令查看

    4.1.2、修改vm.max_map_count

    修改/etc/sysctl.conf文件,再文件末尾加上

    vm.max_map_count=655360

    并执行sysctl -p,使修改文件部分生效。

    4.1.3、创建用户

    Elasticsearch不允许root用户启动,需要创建es专用账号

    groupadd elastic
    useradd elastic -g elastic
    #设置用户密码
    passwd elastic

    4.1.4创建数据目录

    mkdir -p /data/elastic/data
    mkdir -p /data/elastic/logs
    
    
    cd /data/elastic/
    #下载elasticsearch软件包;
    
    wget -c https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.0-linux-x86_64.tar.gz
    
    
    
    #tar解压elasticsearch软件包;
    
    tar -xzvf elasticsearch-7.17.0-linux-x86_64.tar.gz
    
    chown -R elastic:elastic /data/elastic

    安装jdk

    wget -c  https://download.oracle.com/otn/java/jdk/8u441-b07/7ed26d28139143f38c58992680c214a5/jdk-8u441-linux-x64.tar.gz?AuthParam=1740191829_6b95284f0978b16082f95c598ba9fc01

    解压到指定目录

    tar -zxvf jdk-8u441-linux-x64.tar.gz  -C /usr/local/

    配置jdk环境变量

    export JAVA_HOME=/usr/local/jdk1.8.0_441
    export PATH=$PATH:$JAVA_HOME/bin
    export CLASSPATH=.:JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH

    source /etc/profile

    切换用户

    su – elastic

    据服务器配置修改jvm.options中的Xms、Xmx

    我的服务器是32G

    这里修改jvm占用内存 ,例如修改为8g

    -Xms8g
    -Xmx8g

    注意把这两个参数的空格去掉,不然会报错4.1.5

    4.1.5 修改elasticsearch.yml配置文件

    配置相关信息并开启安全认证(可选,我取消证书认证了)

    cluster.name: 集群名
    
    node.name: node-1
    
    path.data: /data/elastic/data
    
    path.logs: /data/elastic/logs
    
    network.host: 0.0.0.0
    
    http.port: 9200
    
    discovery.seed_hosts: ["主机IP"]
    
    cluster.initial_master_nodes: ["node-1"]
    
    http.cors.enabled: true
    
    http.cors.allow-origin: "*"
    
    http.cors.allow-headers: Authorization
    
    ingest.geoip.downloader.enabled: false
    
    #开启安全认证配置(可选,我取消证书认证了)
    
    xpack.security.enabled: true
    
    xpack.security.transport.ssl.enabled: true
    
    xpack.security.transport.ssl.verification_mode: certificate
    
    xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
    
    xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12

    如果是集群可以在任意节点生成证书(可选,我取消证书认证了)
    为Elasticsearch集群创建一个证书颁发机构。(可选,我取消证书认证了)

    bin/elasticsearch-certutil ca ,
    
    Please enter the desired output file [elastic-stack-ca.p12]: #这里直接回车即可
    Enter password for elastic-stack-ca.p12 : #这里直接回车即可,不要设置密码

    之后会看到新生成的文件 elastic-stack-ca.p12

    生成私钥(可选,我取消证书认证了)

    bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 

    下面三项直接回车即可:

    Enter password for CA (elastic-stack-ca.p12) : 
    Please enter the desired output file [elastic-certificates.p12]:
    Enter password for elastic-certificates.p12 : #这里直接回车即可,不要设置密码,否则后面ES会启动不了
    Certificates written to /……/elastic-certificates.p12

    设置完毕后,会在当前目录 下看到新生成的文件:elastic-certificates.p12

    创建文件夹certs放置私钥(可选,我取消证书认证了)

    mkdir config/certs
    cp elastic-certificates.p12 config/certs
    如果是集群,将生成的证书拷贝到其他节点的相同目录即可。
    
    启动es
    
    bin/elasticsearch  (初次不加-d 静默启动,便于观察日志)

    可以看到除了有些告警以外,es可以正常启动

    然后设置密码

    [elastic@server elasticsearch-7.17.0]$ bin/elasticsearch-setup-passwords interactive
    
    warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME
    
    Future versions of Elasticsearch will require Java 11; your Java version from [/usr/local/jdk1.8.0_441/jre] does not meet this requirement. Consider switching to a distribution of Elasticsearch with a bundled JDK. If you are already using a distribution with a bundled JDK, ensure the JAVA_HOME environment variable is not set.
    
    Initiating the setup of passwords for reserved users elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.
    
    You will be prompted to enter passwords as the process progresses.
    
    Please confirm that you would like to continue [y/N]y
    
    
    
    
    
    Enter password for [elastic]:
    
    Reenter password for [elastic]:
    
    Enter password for [apm_system]:
    
    Reenter password for [apm_system]:
    
    Enter password for [kibana_system]:
    
    Reenter password for [kibana_system]:
    
    Enter password for [logstash_system]:
    
    Reenter password for [logstash_system]:
    
    Enter password for [beats_system]:
    
    Reenter password for [beats_system]:
    
    Enter password for [remote_monitoring_user]:
    
    Reenter password for [remote_monitoring_user]:
    
    Changed password for user [apm_system]
    
    Changed password for user [kibana_system]
    
    Changed password for user [kibana]
    
    Changed password for user [logstash_system]
    
    Changed password for user [beats_system]
    
    Changed password for user [remote_monitoring_user]
    
    Changed password for user [elastic]

    按个人需求输入密码即可。

    ES中内置的用户:

    • elastic 账号:拥有 superuser 角色,是内置的超级用户。
    • kibana 账号:拥有 kibana_system 角色,用户 kibana 用来连接 elasticsearch 并与之通信。Kibana 服务器以该用户身份提交请求以访问集群监视 API 和 .kibana 索引。不能访问 index。
    • logstash_system 账号:拥有 logstash_system 角色。用户 Logstash 在 Elasticsearch 中存储监控信息时使用。
    • beats_system账号:拥有 beats_system 角色。用户 Beats 在 Elasticsearch 中存储监控信息时使用。
    • elastic是超级用户,它可以做任何事情

    4.1.6 验证ES是否正常

    curl -XGET --user elastic:elastic  http://节点IP:9200/_cluster/health?pretty

    esphere>kubesphere默认的日志接收器换成外部ES

    在定制资源定义中找到 ClusterConfiguration ---ks-installer配置文件截图

    修改es部分保存即可

    修改OutPut部分

    1. 这个文件不支持显示明文用户密码,所以需要先创建secret保存用户密码

    kubectl create secret generic elasticsearch-credentials --from-literal=username=elastic --from-literal=password=elastic -n esphere>kubesphere-logging-system -v=8

    1. 修改修改OutPut文件

    key: username  # 使用 Secret 中的键名

    name: elasticsearch-credentials  # 确保密钥名称正确

    key: password  # 使用 Secret 中的键名

    name: elasticsearch-credentials  # 确保密钥名称正确

    然后查看fluent-bit的pod是否将日志推送到外部ES,并且esphere>kubesphere是否能正常显示ES收集的日志

    我这已经成功使用外部ES收集并显示日志

    注意ES配置证书后,esphere>kubesphere访问有点麻烦,所以我的ES取消证书认证了,只配置了密码


    http://www.niftyadmin.cn/n/5865729.html

    相关文章

    Spark MLlib中的机器学习算法及其应用场景

    Spark MLlib是Apache Spark框架中的一个机器学习库,提供了丰富的机器学习算法和工具,用于处理和分析大规模数据。以下是Spark MLlib中的机器学习算法及其应用场景的详细描述: 一、Spark MLlib中的机器学习算法 分类算法: 逻辑回…

    登上Nature子刊!因果机器学习起步A会!

    2025深度学习发论文&模型涨点之——因果机器学习 传统机器学习方法多聚焦于关联关系的挖掘,对于变量之间深层次的因果关系却难以有效揭示。这种局限性在诸多复杂问题场景中逐渐凸显,促使学术界对能够突破这一瓶颈的新型方法展开深入探索,…

    uniapp打包生产证书上架IOS全流程

    第一步:生成生产证书 上传CSR文件,windows系统电脑无法上传csr文件可以参考这个: windows下创建ios打包证书的详细流程_香蕉云编 下载生产证书 下载下来的cer生产证书在香蕉云编cer文件上传栏上传,然后生成p12文件 生成p12文件…

    14.12 Auto-GPT OutputParser 架构设计:构建安全可控的大模型输出管道

    Auto-GPT OutputParser 架构设计:构建安全可控的大模型输出管道 关键词:Auto-GPT 输出解析、结构化响应控制、内容安全过滤、多格式输出适配、错误恢复机制 1. OutputParser 的核心作用与设计挑战 输出解析的三大核心任务: #mermaid-svg-sUqVk51rX50EHefe {font-family:&q…

    在 JavaScript 中,[](空数组)不是假值,它是“真值”(truthy)

    文章目录 语法解释!this.form.productPhotos 的含义在代码中的作用具体判断 实际上下文总结当前代码的局限 在你的父组件代码中,出现了 !this.form.productPhotos 这样的表达式,具体是在 handleSubmit 方法中: private handleSubmit() {if (…

    C语言基础学习指南第二章:核心语法与函数——从函数定义到实战项目,助你快速掌握C语言核心能力

    目录 1. 函数的定义与调用 2. 数组与字符串操作 3. 指针基础 4. 动态内存管理 5. 综合项目实战 1. 函数的定义与调用 1.1 函数的基本结构 函数由返回值类型、函数名、参数列表和函数体组成。例如: int get_max(int x, int y) { return (x > y) ? x : y; …

    分布式之Raft算法

    参考: 分布式算法 - Raft算法 | Java 全栈知识体系 Raft 算法详解 | JavaGuide 分布式 | CS-Notes 面试笔记

    论文笔记:Scaling Sentence Embeddings with Large Language Models

    2024 ACL findings 1 intro 直接利用LLMs生成句子嵌入面临两个主要挑战 LLMs作为自回归模型生成的是文本而非向量,因此需要将输出向量化如何有效地将上下文学习的能力融入句子嵌入中也是一个关键问题 论文调查了当前LLMs在句子嵌入中的能力 如何使用LLMs表示句子嵌…