From 0055ddc633fb11fb49696b268cf2c5eab1113009 Mon Sep 17 00:00:00 2001 From: wxin <15253413025@163.com> Date: Sun, 11 Aug 2024 21:13:23 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=20kubernetes-MD/=E5=9F=BA?= =?UTF-8?q?=E4=BA=8EKubernetes=E6=9E=84=E5=BB=BAES=E9=9B=86=E7=BE=A4.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kubernetes-MD/基于Kubernetes构建ES集群.md | 314 ---------------------- 1 file changed, 314 deletions(-) delete mode 100644 kubernetes-MD/基于Kubernetes构建ES集群.md diff --git a/kubernetes-MD/基于Kubernetes构建ES集群.md b/kubernetes-MD/基于Kubernetes构建ES集群.md deleted file mode 100644 index 7a91dce..0000000 --- a/kubernetes-MD/基于Kubernetes构建ES集群.md +++ /dev/null @@ -1,314 +0,0 @@ -

基于Kubernetes集群构建ES集群

- -作者:行癫(盗版必究) - ------- - -## 一:环境准备 - -#### 1.Kubernetes集群环境 - -| 节点 | 地址 | -| :---------------: | :---------: | -| Kubernetes-Master | 10.9.12.206 | -| Kubernetes-Node-1 | 10.9.12.205 | -| Kubernetes-Node-2 | 10.9.12.204 | -| Kubernetes-Node-3 | 10.9.12.203 | -| DNS服务器 | 10.9.12.210 | -| 代理服务器 | 10.9.12.209 | -| NFS存储 | 10.9.12.250 | - -#### 2.Kuboard集群管理 - -![image-20240420164922730](https://diandiange.oss-cn-beijing.aliyuncs.com/image-20240420164922730.png) - -## 二:构建ES集群 - -#### 1.持久化存储构建 - -1.NFS服务器部署 - -​ 略 - -2.创建共享目录 - -​ 本次采用脚本创建,脚本如下 - -```shell -[root@xingdiancloud-1 ~]# cat nfs.sh -#!/bin/bash -read -p "请输入您要创建的共享目录:" dir -if [ -d $dir ];then - echo "请重新输入共享目录: " - read again_dir - mkdir $again_dir -p - echo "共享目录创建成功" - read -p "请输入共享对象:" ips - echo "$again_dir ${ips}(rw,sync,no_root_squash)" >> /etc/exports - xingdian=`cat /etc/exports |grep "$again_dir" |wc -l` - if [ $xingdian -eq 1 ];then - echo "成功配置共享" - exportfs -rv >/dev/null - exit - else - exit - fi -else - mkdir $dir -p - echo "共享目录创建成功" - read -p "请输入共享对象:" ips - echo "$dir ${ips}(rw,sync,no_root_squash)" >> /etc/exports - xingdian=`cat /etc/exports |grep "$dir" |wc -l` - if [ $xingdian -eq 1 ];then - echo "成功配置共享" - exportfs -rv >/dev/null - exit - else - exit - fi -fi -``` - -3.创建存储类 - -```yaml -[root@xingdiancloud-master ~]# vim namespace.yaml -apiVersion: v1 -kind: Namespace -metadata: - name: logging -[root@xingdiancloud-master ~]# vim storageclass.yaml -apiVersion: storage.k8s.io/v1 -kind: StorageClass -metadata: - annotations: - k8s.kuboard.cn/storageNamespace: logging - k8s.kuboard.cn/storageType: nfs_client_provisioner - name: data-es -parameters: - archiveOnDelete: 'false' -provisioner: nfs-data-es -reclaimPolicy: Retain -volumeBindingMode: Immediate -``` - -4.创建存储卷 - -```yaml -[root@xingdiancloud-master ~]# vim persistenVolume.yaml -apiVersion: v1 -kind: PersistentVolume -metadata: - annotations: - pv.kubernetes.io/bound-by-controller: 'yes' - finalizers: - - kubernetes.io/pv-protection - name: nfs-pv-data-es -spec: - accessModes: - - ReadWriteMany - capacity: - storage: 100Gi - claimRef: - apiVersion: v1 - kind: PersistentVolumeClaim - name: nfs-pvc-data-es - namespace: kube-system - nfs: - path: /data/es-data - server: 10.9.12.250 - persistentVolumeReclaimPolicy: Retain - storageClassName: nfs-storageclass-provisioner - volumeMode: Filesystem -``` - -注意:存储类和存储卷也可以使用Kuboard界面创建 - -#### 2.设定节点标签 - -```shell -[root@xingdiancloud-master ~]# kubectl label nodes xingdiancloud-node-1 es=log -``` - -注意: - -​ 所有运行ES的节点需要进行标签的设定 - -​ 目的配合接下来的StatefulSet部署ES集群 - -#### 3.ES集群部署 - -​ 注意:由于ES集群每个节点需要唯一的网络标识,并需要持久化存储,Deployment不能实现该特点只能进行无状态应用的部署,故本次将采用StatefulSet进行部署。 - -```yaml -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: es - namespace: logging -spec: - serviceName: elasticsearch - replicas: 3 - selector: - matchLabels: - app: elasticsearch - template: - metadata: - labels: - app: elasticsearch - spec: - nodeSelector: - es: log - initContainers: - - name: increase-vm-max-map - image: busybox - command: ["sysctl", "-w", "vm.max_map_count=262144"] - securityContext: - privileged: true - - name: increase-fd-ulimit - image: busybox - command: ["sh", "-c", "ulimit -n 65536"] - securityContext: - privileged: true - containers: - - name: elasticsearch - image: docker.elastic.co/elasticsearch/elasticsearch:7.6.2 - ports: - - name: rest - containerPort: 9200 - - name: inter - containerPort: 9300 - resources: - limits: - cpu: 500m - memory: 4000Mi - requests: - cpu: 500m - memory: 3000Mi - volumeMounts: - - name: data - mountPath: /usr/share/elasticsearch/data - env: - - name: cluster.name - value: k8s-logs - - name: node.name - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: cluster.initial_master_nodes - value: "es-0,es-1,es-2" - - name: discovery.zen.minimum_master_nodes - value: "2" - - name: discovery.seed_hosts - value: "elasticsearch" - - name: ESJAVAOPTS - value: "-Xms512m -Xmx512m" - - name: network.host - value: "0.0.0.0" - - name: node.max_local_storage_nodes - value: "3" - volumeClaimTemplates: - - metadata: - name: data - labels: - app: elasticsearch - spec: - accessModes: [ "ReadWriteMany" ] - storageClassName: data-es - resources: - requests: - storage: 25Gi -``` - -#### 4.创建Services发布ES集群 - -```yaml -[root@xingdiancloud-master ~]# vim elasticsearch-svc.yaml -kind: Service -apiVersion: v1 -metadata: - name: elasticsearch - namespace: logging - labels: - app: elasticsearch -spec: - selector: - app: elasticsearch - type: NodePort - ports: - - port: 9200 - targetPort: 9200 - nodePort: 30010 - name: rest - - port: 9300 - name: inter-node -``` - -#### 5.访问测试 - -注意: - -​ 使用elasticVUE插件访问集群 - -​ 集群状态正常 - -​ 集群所有节点正常 - -![image-20240420172247845](https://diandiange.oss-cn-beijing.aliyuncs.com/image-20240420172247845.png) - -## 三:代理及DNS配置 - -#### 1.代理配置 - -注意: - -​ 部署略 - -​ 在此使用Nginx作为代理 - -​ 基于用户的访问控制用户和密码自行创建(htpasswd) - -​ 配置文件如下 - -```shell -[root@proxy ~]# cat /etc/nginx/conf.d/elasticsearch.conf -server { - listen 80; - server_name es.xingdian.com; - location / { - auth_basic "xingdiancloud kibana"; - auth_basic_user_file /etc/nginx/pass; - proxy_pass http://地址+端口; - - } - - -} -``` - -#### 2.域名解析配置 - -注意: - -​ 部署略 - -​ 配置如下 - -```shell -[root@www ~]# cat /var/named/xingdian.com.zone -$TTL 1D -@ IN SOA @ rname.invalid. ( - 0 ; serial - 1D ; refresh - 1H ; retry - 1W ; expire - 3H ) ; minimum - NS @ - A DNS地址 -es A 代理地址 - AAAA ::1 -``` - -#### 3.访问测试 - -​ 略 \ No newline at end of file