前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >k8s安装es单机版

k8s安装es单机版

作者头像
summerking
发布2022-09-19 10:20:15
1.9K0
发布2022-09-19 10:20:15
举报
文章被收录于专栏:summerking的专栏

本篇文章介绍如何在k8s集群中部署elasticsearch单节点,以及如何使用NFS持久化es的数据

# 不使用NFS持久化数据

# 1.编辑k8s-es.yml

点击查看

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  name: elasticsearch
spec:
  type: NodePort
  ports:
  - name: db
    nodePort: 30920
    port: 9200
    protocol: TCP
    targetPort: 9200
  - name: transport
    nodePort: 30930
    port: 9300
    protocol: TCP
    targetPort: 9300    
  selector:
    run: elasticsearch
status:
  loadBalancer: {}
---
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    run: elasticsearch
  name: elasticsearch
spec:
  replicas: 1
  selector:
    matchLabels:
      run: elasticsearch
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        run: elasticsearch
    spec:
      containers:
      - env:
        - name: discovery.type
          value: single-node
        image: docker.elastic.co/elasticsearch/elasticsearch:6.3.1
        name: elasticsearch
        ports:
        - containerPort: 9200
          name: db
          protocol: TCP
        - containerPort: 9300
          name: tramsport
          protocol: TCP
        resources:
          limits:
            cpu: 500m
            memory: 2Gi
          requests:
            cpu: 500m
            memory: 2Gi
status: {}

# 2.执行yml文件创建pod

代码语言:javascript
复制
[root@master elasticsearch]# kubectl apply -f pod.yml 
service/elasticsearch created
deployment.apps/elasticsearch created

# 3.验证

代码语言:javascript
复制
[root@master elasticsearch]# kubectl get svc
NAME            TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                         AGE
elasticsearch   NodePort    10.99.172.33     <none>        9200:30920/TCP,9300:30930/TCP   26m
kubernetes      ClusterIP   10.96.0.1        <none>        443/TCP                         7h36m
[root@master elasticsearch]# kubectl get pods
NAME                             READY   STATUS              RESTARTS   AGE
elasticsearch-5f66d4cf58-2cftw   0/1     ContainerCreating   0          10s
[root@master elasticsearch]# kubectl get pods
NAME                             READY   STATUS    RESTARTS   AGE
elasticsearch-5f66d4cf58-2cftw   1/1     Running   0          2m24s

此时用head工具连接集群任意节点ip:30920验证即可

# 使用NFS持久化数据

# 1.创建NFS储存目录

代码语言:javascript
复制
[root@node1 ~]# showmount -e
Export list for node1:
/home/summer/elasticsearch/data *
[root@node1 ~]# 

# 1.编辑pv.yml

点击查看

代码语言:javascript
复制
apiVersion: v1
kind: PersistentVolume
metadata: 
  name: nes-pv
  labels: 
    pv: nes-pv
spec: 
  accessModes: 
    - ReadWriteOnce
  capacity: 
    storage: 1Gi
  persistentVolumeReclaimPolicy: Retain
  storageClassName: nfs
  nfs: 
    path: "/home/summer/elasticsearch/data"
    server: 192.168.0.96

# 2.编辑pvc.yml

点击查看

代码语言:javascript
复制
kind: PersistentVolumeClaim
apiVersion: v1
metadata: 
  name: nes-pvc
spec: 
  accessModes: 
    - ReadWriteOnce       
  resources: 
    requests: 
      storage: 1Gi
  storageClassName: nfs 
  selector: 
    matchLabels: 
      pv: nes-pv 

# 3.编辑service.yml

点击查看

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: elasticsearch
  labels:
      app: elasticsearch
spec:
  type: NodePort
  ports:
  - name: db
    nodePort: 30920
    port: 9200
    protocol: TCP
    targetPort: 9200
  - name: transport
    nodePort: 30930
    port: 9300
    protocol: TCP
    targetPort: 9300    
  selector:
    app: elasticsearch

# 4.编辑pod.yml

点击查看

代码语言:javascript
复制
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: elasticsearch
  labels:
    name: elasticsearch
spec:
  serviceName: elasticsearch
  replicas: 1
  selector:
    matchLabels:
      app: elasticsearch
  template:
    metadata:
      labels:
        app: elasticsearch
    spec:
      containers:
      - env:
        - name: discovery.type
          value: single-node
        image: docker.elastic.co/elasticsearch/elasticsearch:6.3.1
        name: elasticsearch
        ports:
        - containerPort: 9200
          name: db
          protocol: TCP
        - containerPort: 9300
          name: tramsport
          protocol: TCP
        resources:
          limits:
            cpu: 500m
            memory: 2Gi
          requests:
            cpu: 500m
            memory: 2Gi
        volumeMounts:
        - mountPath: /usr/share/elasticsearch/data/
          name: vol-data
      volumes:
        - name: vol-data
          persistentVolumeClaim: 
            claimName: nes-pvc   

# 5.执行yml文件

注意顺序,一般先创建PV,然后PVC申请PV资源,再创建服务与pod

代码语言:javascript
复制
[root@master ~]# kubectl create -f  ${DIR}/elasticsearch/pv.yml
[root@master ~]# kubectl create -f  ${DIR}/elasticsearch/pvc.yml
[root@master ~]# kubectl create -f  ${DIR}/elasticsearch/service.yml
[root@master ~]# kubectl create -f  ${DIR}/elasticsearch/pod.yml

# 6.验证

代码语言:javascript
复制
[root@master ~]# kubectl get svc
NAME            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                         AGE
elasticsearch   NodePort    10.110.160.63   <none>        9200:30920/TCP,9300:30930/TCP   42h
[root@master ~]# kubectl get pod 
NAME                     READY   STATUS    RESTARTS   AGE
elasticsearch-0          1/1     Running   0          42h
[root@master ~]# kubectl get pv
NAME       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM               STORAGECLASS   REASON   AGE
nes-pv     1Gi        RWO            Retain           Bound    default/nes-pvc     nfs                     46h
[root@master ~]# kubectl get pvc
NAME        STATUS   VOLUME     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
nes-pvc     Bound    nes-pv     1Gi        RWO            nfs            46h
[root@master ~]# 
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-10-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • # 不使用NFS持久化数据
    • # 1.编辑k8s-es.yml
      • # 2.执行yml文件创建pod
        • # 3.验证
        • # 使用NFS持久化数据
          • # 1.创建NFS储存目录
            • # 1.编辑pv.yml
              • # 2.编辑pvc.yml
                • # 3.编辑service.yml
                  • # 4.编辑pod.yml
                    • # 5.执行yml文件
                      • # 6.验证
                      相关产品与服务
                      容器服务
                      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档