1、创建yaml文件,这里我就不分开写了
#创建ConfigMap用于挂载配置文件
apiVersion: v1
kind: ConfigMap
metadata:
name: sirc-elasticsearch-config
namespace: es
labels:
app: elasticsearch
data: #具体挂载的配置文件
elasticsearch.yml: |+
cluster.name: crawl
node.name: ${MY_POD_NAME} #环境变量,通过kubectl explain pod.spec.containers.env.valueFrom.fieldRef获取
path.data: /usr/share/elasticsearch/data
path.logs: /usr/share/elasticsearch/logs
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.zen.ping.unicast.hosts: ["elasticsearch-0.elasticsearch-cluster.es:9300","elasticsearch-1.elasticsearch-cluster.es:9300","elasticsearch-2.elasticsearch-cluster.es:9300"]
node.master: true
node.data: true
http.cors.enabled: true
http.cors.allow-origin: "*"
bootstrap.system_call_filter: false
xpack.security.enabled: false
indices.fielddata.cache.size: 60%
indices.queries.cache.size: 40%
#创建StatefulSet,ES属于数据库类型的应用,此类应用适合StatefulSet类型
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: elasticsearch
namespace: es
spec:
serviceName: "elasticsearch-cluster" #填写无头服务的名称
replicas: 3
selector:
matchLabels:
app: elasticsearch
template:
metadata:
labels:
app: elasticsearch
spec:
containers:
- name: elasticsearch
image: docker.elastic.co/elasticsearch/elasticsearch:6.0.0
ports:
- containerPort: 9200
name: elasticsearch
env:
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name #metadata.name获取自己pod名称添加到变量MY_POD_NAME,status.hostIP获取自己ip等等可以自己去百度
- name: ES_JAVA_OPTS
value: "-Xms1g -Xmx1g"
volumeMounts:
- name: elasticsearch-config #挂载配置
mountPath: /usr/share/elasticsearch/config/elasticsearch.yml
subPath: elasticsearch.yml
- name: es-data #挂载数据
mountPath: /usr/share/elasticsearch/data
volumes:
- name: elasticsearch-config
configMap: #configMap挂载
name: sirc-elasticsearch-config
volumeClaimTemplates: #这步自动创建pvc,并挂载动态pv
- metadata:
name: es-data
spec:
accessModes: ["ReadWriteOnce"]
storageClassName: nfs-boge
resources:
requests:
storage: 5Gi
#创建Service
---
apiVersion: v1
kind: Service
metadata:
name: elasticsearch-cluster #无头服务的名称,需要通过这个获取ip,与主机的对应关系
namespace: es
labels:
app: elasticsearch
spec:
ports:
- port: 9200
name: elasticsearch
clusterIP: None
selector:
app: elasticsearch
---
apiVersion: v1
kind: Service
metadata:
name: elasticsearch #service服务的名称,向外暴露端口
namespace: es
labels:
app: elasticsearch
spec:
ports:
- port: 9200
name: elasticsearch
type: NodePort
selector:
app: elasticsearch
2、应用yaml文件
[root@k8s-master1 ~]# kubectl apply -f es.yaml
configmap/sirc-elasticsearch-config created
statefulset.apps/elasticsearch created
service/elasticsearch-cluster created
service/elasticsearch created
3、验证是否成功
[root@k8s-master1 ~]# kubectl get svc -n es
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
elasticsearch NodePort 10.0.0.251 <none> 9200:31637/TCP 11s
elasticsearch-cluster ClusterIP None <none> 9200/TCP 12s
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/75668.html