一、修改所有節點主機名
主節點就修改成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/logscd /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_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-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/certs
cp 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部分
- 這個文件不支持顯示明文用戶密碼,所以需要先創建secret保存用戶密碼
kubectl create secret generic elasticsearch-credentials --from-literal=username=elastic --from-literal=password=elastic -n kubesphere-logging-system -v=8
- 修改修改OutPut文件
key: username? # 使用 Secret 中的鍵名
name: elasticsearch-credentials? # 確保密鑰名稱正確
key: password? # 使用 Secret 中的鍵名
name: elasticsearch-credentials? # 確保密鑰名稱正確
然后查看fluent-bit的pod是否將日志推送到外部ES,并且kubesphere是否能正常顯示ES收集的日志
我這已經成功使用外部ES收集并顯示日志
注意ES配置證書后,kubesphere訪問有點麻煩,所以我的ES取消證書認證了,只配置了密碼