当前位置: 首页 > article >正文

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

一、修改所有节点主机名

主节点就修改成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.kubesphere.io | VERSION=v3.0.13 sh –

    注意:

    节点要求

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

    3.3 为 kk 添加可执行权限

    chmod +x kk

    3.4 创建集群

    3.5 创建示例配置文件

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

    ./kk create config --with-kubernetes v1.23.0 --with-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

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

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

    修改es部分保存即可

    修改OutPut部分

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

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

    1. 修改修改OutPut文件

    key: username  # 使用 Secret 中的键名

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

    key: password  # 使用 Secret 中的键名

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

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

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

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


    http://www.kler.cn/a/558882.html

    相关文章:

  1. QString是 Qt 框架中的一个核心类,基本用法使用:创建、字符串拼接、截取、查找、替换、分割、大小写转换、比较。
  2. jar、war、pom
  3. C++ 设计模式 - 策略模式
  4. 力扣hot100——LRU缓存(面试高频考题)
  5. 单机上使用docker搭建minio集群
  6. 如何使用Spring boot框架实现图书管理系统
  7. Ollama API 交互
  8. 20250223C语言指针与应用
  9. Python爬虫具体是如何解析商品信息的?
  10. MybatisPlus-注解
  11. .NET8入门:13.ASP.NET Core MVC
  12. AI客服-接入deepseek大模型到微信(本地部署deepseek集成微信自动收发消息)
  13. ArcGIS Pro热力图制作指南:从基础到进阶
  14. VS2022配置FFMPEG库基础教程
  15. 视频mp4垂直拼接 水平拼接
  16. Vulhub靶机 Apache Druid(CVE-2021-25646)(渗透测试详解)
  17. 【Python爬虫(44)】分布式爬虫:筑牢安全防线,守护数据之旅
  18. 如果后台的Long类型的数据返回是null,那么Android客户端的数据bean的kotlin的Long类型的字段接受到数据后是null空指针吗?
  19. 20250223学习记录
  20. The Heliosphere 日球层