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

艺帆风顺 发布于 2025-04-02 22 次阅读


一、修改所有节点主机名

主节点就修改成master

hostnamectl set-hostname master

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

编辑

工作节点1就修改成node1

hostnamectl set-hostname node1

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

编辑

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

yum -y install socat conntrack ebtables ipset ntpdate

同步时间

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 elasticuseradd elastic -g elastic#设置用户密码passwd elastic

        编辑

        4.1.4创建数据目录并安装ES

          mkdir -p /data/elastic/datamkdir -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.gzchown -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_441export PATH=$PATH:$JAVA_HOME/binexport 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-1path.data: /data/elastic/datapath.logs: /data/elastic/logsnetwork.host: 0.0.0.0http.port: 9200discovery.seed_hosts: ["主机IP"]cluster.initial_master_nodes: ["node-1"]http.cors.enabled: truehttp.cors.allow-origin: "*"http.cors.allow-headers: Authorizationingest.geoip.downloader.enabled: false#开启安全认证配置(可选,我取消证书认证了)xpack.security.enabled: truexpack.security.transport.ssl.enabled: truexpack.security.transport.ssl.verification_mode: certificatexpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12xpack.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/certscp elastic-certificates.p12 config/certs如果是集群,将生成的证书拷贝到其他节点的相同目录即可。启动esbin/elasticsearch  (初次不加-d 静默启动,便于观察日志)

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

                        编辑

                        然后设置密码

                          [elastic@server elasticsearch-7.17.0]$ bin/elasticsearch-setup-passwords interactivewarning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOMEFuture 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]yEnter 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取消证书认证了,只配置了密码

                          编辑