[root@k8s-harbor01 k8s]# mkdir -p /data/storage/k8s/es
[root@k8s-master01 k8s_project]# cd [root@k8s-master01 ~]# cd /opt/k8s/k8s_project/ [root@k8s-master01 k8s_project]# mkdir elk [root@k8s-master01 k8s_project]# cd elk/ [root@k8s-master01 elk]# vim nfs-rbac.yaml --- api版本:v1 种类:服务帐户 元数据: 名称:nfs-provisioner 命名空间:wiseco --- 种类:集群角色 api版本:m.gsm-guard.net/v1 元数据: 名称:nfs-provisioner-runner 命名空间:wiseco 规则: - api 组:[""] 资源:[“持久卷”] 动词:[“获取”、“列表”、“监视”、“创建”、“删除”] - api 组:[""] 资源:[“持久卷声明”] 动词:[“获取”、“列表”、“观看”、“更新”] - apiGroups:[“m.gsm-guard.net”] 资源:[“存储类”] 动词:[“获取”、“列表”、“观看”]- api 组:[""] 资源:[“事件”] 动词:[“观看”、“创建”、“更新”、“补丁”] - api 组:[""] 资源:[“服务”,“端点”] 动词:[“获取”、“创建”、“列表”、“观看”、“更新”] - apiGroups:[“扩展”] 资源:[“podsecuritypolicies”] 资源名称:[“nfs-provisioner”] 动词:[“使用”] --- 种类:ClusterRoleBinding api版本:m.gsm-guard.net/v1 元数据: 名称:运行 nfs-provisioner 科目: - 种类:服务帐户 名称:nfs-provisioner 命名空间:wiseco 角色参考: 种类:集群角色 名称:nfs-provisioner-runner apiGroup:m.gsm-guard.net
创建和查看
[root@k8s-master01 elk]# kubectl apply -f nfs-rbac.yaml 已创建服务帐户/nfs-provisioner 创建 m.gsm-guard.net/nfs-provisioner-runner 创建 m.gsm-guard.net/run-nfs-provisioner [root@k8s-master01 elk]# kubectl get sa -nwiseco|grep nfs nfs-供应者 1 4s[root@k8s-master01 elk]# kubectl get clusterrole -nwiseco|grep nfs nfs-provisioner-runner 2021-02-19T08:39:05Z [root@k8s-master01 elk]# kubectl 获取集群角色绑定 -nwiseco|grep nfs 运行 nfs-provisioner ClusterRole/nfs-provisioner-runner
[root@k8s-master01 elk]# pwd /opt/k8s/k8s_project/elk [root@k8s-master01 elk]# mkdir es [root@k8s-master01 elk]# cd es/ [root@k8s-master01 es]# vim es-nfs-class.yaml api版本:m.gsm-guard.net/v1beta1 种类:存储类 元数据: 名称:es-nfs-存储 命名空间:wiseco 提供者:es/nfs 回收政策:保留
创建并查看
[root@k8s-master01 es]# kubectl apply -f es-nfs-class.yaml已创建 m.gsm-guard.net/es-nfs-storage [root@k8s-master01 es]# kubectl get sc -nwiseco 名称配置程序回收策略卷绑定模式允许卷扩展年龄 es-nfs-storage es/nfs 保留立即 false 10s
[root@k8s-master01 es]# vim es-nfs.yml api版本:apps/v1 种类:部署 元数据: 名称:es-nfs-client-provisioner 命名空间:wiseco 规格: 副本:1 选择器: 匹配标签: 应用程序:es-nfs-client-provisioner 战略: 类型:重新创建 模板: 元数据: 标签: 应用程序:es-nfs-client-provisioner 规格: 服务帐户:nfs-provisioner 容器: - 名称:es-nfs-client-provisioner 图片:m.gsm-guard.net/open-ali/nfs-client-provisioner imagePullPolicy:IfNotPresent 体积安装: - 名称:nfs-客户端-root 挂载路径:/persistentvolumes 环境: - 名称:PROVISIONER_NAME 值:es/nfs- 名称:NFS_SERVER 值:172.16.60.238 - 名称:NFS_PATH 值:/数据/存储/k8s/es 卷: - 名称:nfs-客户端-root 网络文件系统: 服务器:172.16.60.238 路径:/data/storage/k8s/es
创建并查看
[root@k8s-master01 es]# kubectl apply -f es-nfs.yml 创建了deployment.apps/es-nfs-client-provisioner [root@k8s-master01 es]# kubectl get pods -nwiseco|grep nfs es-nfs-client-provisioner-5c989d9b5-nkpdb 1/1 运行 0 4s
[root@k8s-master01 图片]# pwd /opt/k8s/k8s_project/elk/es/images [root@k8s-master01 图片]#ll 总计 0drwxr-xr-x 2 根 根 63 二月 20 16:11 jdk_images [root@k8s-master01 images]# mkdir es_images/ [root@k8s-master01 图片]#ll 总计 0 drwxr-xr-x 2 根根 96 二月 20 15:49 es_images drwxr-xr-x 2 根 根 63 二月 20 16:11 jdk_images [root@k8s-master01 images]# cd es_images/ [root@k8s-master01 es_images]# [root@k8s-master01 es_images]# wget https://m.gsm-guard.net/downloads/elasticsearch/elasticsearch-7.6.2-linux-x86_64.tar.gz [root@k8s-master01 es_images]# ll 总计 289540 -rw-r--r-- 1 root root 718 二月 20 17:34 Dockerfile -rw-r--r-- 1根根296477546 2020年3月31日elasticsearch-7.6.2-linux-x86_64.tar.gz -rw-r--r-- 1 root root 448 二月 20 17:49 elasticsearch.yml 这里要注意:节点主机名必须使用正确解析的完全解析域名:pod名称.服务名称.命名空间名称.svc.cluster.local [root@k8s-master01 es_images]# cat elasticsearch.yml m.gsm-guard.net: es-cluster 节点名称:${MY_POD_NAME}.es-svc.wiseco.svc.cluster.local 路径.数据:/opt/elasticsearch-7.6.2/data路径.logs:/opt/elasticsearch-7.6.2/logs 网络主机:0.0.0.0 http.端口:9200 http.cors.enabled: true http.cors.allow-origin: "*" 节点.master: true 节点数据:true discovery.seed_hosts:[“es-0.es-svc.wiseco.svc.cluster.local”,“es-1.es-svc.wiseco.svc.cluster.local”,“m.gsm-guard.net-svc。 wiseco.svc.cluster.local"] cluster.initial_master_nodes: ["es-0.es-svc.wiseco.svc.cluster.local","es-1.es-svc.wiseco.svc.cluster.local","m.gsm-guard.net-svc. wiseco.svc.cluster.local"] 镜像文件内容: [root@k8s-master01 es_images]# cat Dockerfile 来自 172.16.60.238/wiseco/jdk13.0.2 运行 rm -f /etc/localtime \ && ln -sv /usr/share/zoneinfo/Asia/上海 /etc/localtime \ && echo "亚洲/上海" > /etc/timezone ENV LANG en_US.UTF-8 添加elasticsearch-7.6.2-linux-x86_64.tar.gz /opt 运行 mkdir -p /opt/elasticsearch-7.6.2/data \ && mkdir -p /opt/elasticsearch-7.6.2/logs \ && 用户添加elasticsearch \ && chown -R elasticsearch:elasticsearch /opt \ && chmod -R 777 /opt \&& setfacl -R -m u:elasticsearch:rwx /opt \ && setfacl -R -m u:elasticsearch:rwx /opt \ && rm -f /opt/elasticsearch-7.6.2/config/elasticsearch.yml 复制 elasticsearch.yml /opt/elasticsearch-7.6.2/config/ 用户弹性搜索 曝光 9200 9300 CMD [“/opt/elasticsearch-7.6.2/bin/elasticsearch”]
[root@k8s-master01 images]# docker build -t 172.16.60.238/wiseco/elasticsearch-7.6.2 . [root@k8s-master01 images]# docker Push 172.16.60.238/wiseco/elasticsearch-7.6.2
[root@k8s-master01 es]# pwd /opt/k8s/k8s_project/elk/es [root@k8s-master01 es]# mkdir 部署/ [root@k8s-master01 es]# cd 部署/ [root@k8s-master01 部署]# [root@k8s-master01 部署]# cat es_cluster.yaml api版本:v1 种类: 服务 元数据: 名称: es-svc 命名空间:wiseco 标签: 应用程序:es 规格: 端口: - 端口:9200 目标端口:9200 名称:外 - 端口:9300目标端口:9300 名称:内 集群IP:无 选择器: 应用程序:es --- api版本:apps/v1 种类:StatefulSet 元数据: 名称: es 命名空间:wiseco 规格: 服务名称:“es-svc” 副本:3 选择器: 匹配标签: 应用程序:es 模板: 元数据: 标签: 应用程序:es 规格: 亲和力: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - 标签选择器: 匹配表达式: - 键:“应用程序” 运算符:In 价值观: - es 拓扑键:“m.gsm-guard.net/hostname” 初始化容器: - 名称:增加-vm-max-map 图片:busybox 命令:[“sysctl”,“-w”,“vm.max_map_count = 262144”] 安全上下文: 特权:真实 -名称:增加-fd-ulimit 图片:busybox 命令:[“sh”,“-c”,“ulimit -n 65536”] 安全上下文: 特权:真实 终止宽限期秒:60 容器: - 名称:es 图片:172.16.60.238/wiseco/elasticsearch-7.6.2 imagePullPolicy:始终 端口: - 集装箱端口:9200 名称:外 - 集装箱端口:9300 名称:内 环境: - 名称:MY_POD_NAME 值来自: 字段参考:字段路径:元数据.名称 资源: 要求: 内存:1024Mi 中央处理器:500m 限制: 内存:2048Mi 中央处理器:1500m 生命周期: 开始后: 执行: 命令:[“/ bin / sh”,“-c”,“touch / tmp / health”] 活性探针: 执行: 命令:[“测试”,“-e”,“/tmp/health”] 初始延迟秒数:5 超时秒数:5 周期秒:10 准备情况探针: tcp套接字: 端口:外端口 初始延迟秒数:15 超时秒数:5 周期秒:20 体积安装: - 名称:es-日期 挂载路径:/opt/elasticsearch-7.6.2/data - 名称:es-log 挂载路径:/opt/local/elasticsearch-7.6.2/logs 只读:假 卷: - 名称:es-log 主机路径: 路径:/var/log/k8s-log/es 体积声明模板: - 元数据: 名称:es-日期 注释: m.gsm-guard.net/storage-class:“es-nfs-storage” 规格: 访问模式: - 读写很多 资源: 要求: 存储:10Gi
创建和查看
[root@k8s-master01 部署]# kubectl apply -f es_cluster.yaml 已创建服务/es-svc 创建了 statefulset.apps/es[root@k8s-master01 部署]# kubectl get pods -nwiseco -o Wide 名称就绪状态重新启动年龄 IP 节点指定节点就绪门 es-0 1/1 运行 0 9m36s 172.30.85.230 k8s-node01es-1 1/1 运行 0 8m7s 172.30.217.85 k8s-node04 es-2 1/1 运行 0 6m1s 172.30.135.154 k8s-node03 [root@k8s-master01 部署]# kubectl get svc -nwiseco|grep es es-svc ClusterIP 无 9200/TCP,9300/TCP 9m53s 入口-nginx NodePort 10.254.99.100 80:30080/TCP,443:30443/TCP 70d [root@k8s-master01 部署]# kubectl get statefulset -nwiseco|grep es es 3/3 10m
[root@k8s-harbor01 ~]# cd /data/storage/k8s/es/ [root@k8s-harbor01 es]# ll 总计 0 drwxrwxrwx 3根根2月21日19日21:36wiseco-es-date-es-0-pvc-3607865a-ae40-4eeb-aa04-cf5ddab1599f drwxrwxrwx 3根根2月21日19日21:39wiseco-es-date-es-1-pvc-3c1e1329-73b1-4477-b6b1-0b2c63e702d2 drwxrwxrwx 3根根2月21日19日21:40wiseco-es-date-es-2-pvc-ecdff54e-2c28-4b33-8a5a-2e42c5b9c139 [root@k8s-harbor01 es]# ll ./* ./wiseco-es-date-es-0-pvc-3607865a-ae40-4eeb-aa04-cf5ddab1599f: 总计 0 drwxr-xr-x 3 1000 1000 2月21日15日 21:36 节点 ./wiseco-es-date-es-1-pvc-3c1e1329-73b1-4477-b6b1-0b2c63e702d2: 总计 0 drwxr-xr-x 3 1000 1000 2月21日15日 21:39 节点 ./wiseco-es-date-es-2-pvc-ecdff54e-2c28-4b33-8a5a-2e42c5b9c139: 总计 0 drwxr-xr-x 3 1000 1000 2月21日15日 21:40 节点
[root@k8s-master01 ingress]# cat ingress.yml api版本:扩展/v1beta1 种类: 入口 元数据: 名称:智慧入口 命名空间:wiseco 注释: m.gsm-guard.net/ingress.class:“nginx” 规格: 规则: - 主机:m.gsm-guard.net http: 路径: - 后端: 服务名称:es-svc 服务端口:9200
这样在K8S集群外访问这个ES集群,访问地址为:http://m.gsm-guard.net
[root@k8s-master01 部署]# kubectl exec -ti es-0 -nwiseco --/bin/bash [elasticsearch@es-0 /]$curl http://es-svc.wiseco.svc.cluster.local:9200 { “名称”:“es-0.es-svc.wiseco.svc.cluster.local”, "cluster_name" : "es-cluster", "cluster_uuid": "K-AFavs-RaKjq60rMQG1WQ", “版本” : { “数字”:“7.6.2”, "build_flavor" : "默认", “构建类型”:“焦油”,“build_hash”:“ef48eb35cf30adf4db14086e8aabd07ef6fb113f”, “构建日期”:“2020-03-26T06:34:37.794943Z”, “build_snapshot”:假, “lucene_version”:“8.4.0”, "minimum_wire_compatibility_version": "6.8.0", “minimum_index_compatibility_version”:“6.0.0-beta1” }, "tagline" : "你知道,用于搜索" }
查看ES集群状态
[elasticsearch@es-0 /]$curl -XGET“http://es-svc.wiseco.svc.cluster.local:9200/_cat/nodes” 172.30.135.154 11 54 2 0.13 0.31 0.25 迪尔姆 - es-2.es-svc.wiseco.svc.cluster.local 172.30.85.230 10 66 2 0.11 0.29 0.46 迪尔姆 * es-0.es-svc.wiseco.svc.cluster.local 172.30.217.85 6 65 1 0.22 0.21 0.21 迪尔姆 - es-1.es-svc.wiseco.svc.cluster.local 查看集群详细信息,后面添加“?v” 注:*号表示当前主节点 [elasticsearch@es-0 /]$ curl -XGET 'http://es-svc.wiseco.svc.cluster.local:9200/_cat/nodes?v' ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name 172.30.135.154 12 54 2 0.09 0.29 0.25 dilm - es-2.es-svc.wiseco.svc.cluster.local 172.30.85.230 12 66 1 0.07 0.27 0.45 dilm * es-0.es-svc.wiseco.svc.cluster.local 172.30.217.85 8 65 3 0.22 0.21 0.21 dilm - es-1.es-svc.wiseco.svc.cluster.local 查询集群状态方法 [elasticsearch@es-0 /]$ curl -XGET 'http://es-svc.wiseco.svc.cluster.local:9200/_cluster/state/nodes?pretty' { "cluster_name" : "es-cluster", "cluster_uuid" : "K-AFavs-RaKjq60rMQG1WQ", "nodes" : { "HTD4h0xZRcO3uypCzmxfpQ" : { "name" : "es-2.es-svc.wiseco.svc.cluster.local", "ephemeral_id" : "OyTHKFt9Ska6-XGp1ucRsQ", "transport_address" : "172.30.135.154:9300", "attributes" : { "ml.machine_memory" : "8370167808", "ml.max_open_jobs" : "20", "xpack.installed" : "true" } }, "ZyL8_6pHTjOwLXCzJDRyVw" : { "name" : "es-0.es-svc.wiseco.svc.cluster.local", "ephemeral_id" : "JATRby-lTzicDZb9oBoqUQ", "transport_address" : "172.30.85.230:9300", "attributes" : { "ml.machine_memory" : "8366628864", "xpack.installed" : "true", "ml.max_open_jobs" : "20" } }, "KGQQtVrqR0CeajjARZY4LQ" : { "name" : "es-1.es-svc.wiseco.svc.cluster.local", "ephemeral_id" : "5NKITiKTTMWUI0QAXXX6qg", "transport_address" : "172.30.217.85:9300", "attributes" : { "ml.machine_memory" : "8370184192", "ml.max_open_jobs" : "20", "xpack.installed" : "true" } } } } 查询集群中的master(下面两个命令都可以) [elasticsearch@es-0 /]$ curl -XGET 'http://es-svc.wiseco.svc.cluster.local:9200/_cluster/state/master_node?pretty' { "cluster_name" : "es-cluster", "cluster_uuid" : "K-AFavs-RaKjq60rMQG1WQ", "master_node" : "ZyL8_6pHTjOwLXCzJDRyVw" } [elasticsearch@es-0 /]$ curl -XGET 'http://es-svc.wiseco.svc.cluster.local:9200/_cat/master?v' id host ip node ZyL8_6pHTjOwLXCzJDRyVw 172.30.85.230 172.30.85.230 es-0.es-svc.wiseco.svc.cluster.local 查询集群的健康状态(一共三种状态:green、yellow,red;其中green表示健康) 下面两个命令都可以 [elasticsearch@es-0 /]$ curl -XGET 'http://es-svc.wiseco.svc.cluster.local:9200/_cat/health?v' epoch timestamp cluster status m.gsm-guard.net m.gsm-guard.net shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent 1613915456 13:50:56 es-cluster green 3 3 0 0 0 0 0 0 - 100.0% [elasticsearch@es-0 /]$ curl -XGET 'http://es-svc.wiseco.svc.cluster.local:9200/_cluster/health?pretty' { "cluster_name" : "es-cluster", "status" : "green", "timed_out" : false, "number_of_nodes" : 3, "number_of_data_nodes" : 3, "active_primary_shards" : 0, "active_shards" : 0, "relocating_shards" : 0, "initializing_shards" : 0, "unassigned_shards" : 0, "delayed_unassigned_shards" : 0, "number_of_pending_tasks" : 0, "number_of_in_flight_fetch" : 0, "task_max_waiting_in_queue_millis" : 0, "active_shards_percent_as_number" : 100.0 }