【发布时间】:2022-01-10 03:49:11
【问题描述】:
我需要用 ELK 创建一个集群。 弹性应该是有状态的,我无法附加磁盘;发生下面突出显示的错误。 有人有解决办法吗?
辛克雷利,巴勃罗
消息错误:0/1 个节点可用:1 个 pod 具有未绑定的即时 PersistentVolumeClaims。
YAML:
apiVersion: v1
kind: ServiceAccount
metadata:
name: elasticsearch-logging
namespace: elk-iot-cloud
labels:
k8s-app: elasticsearch-logging
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: elasticsearch-logging
labels:
k8s-app: elasticsearch-logging
rules:
- apiGroups:
- ""
resources:
- "services"
- "namespaces"
- "endpoints"
verbs:
- "get"
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: elk-iot-cloud
name: elasticsearch-logging
labels:
k8s-app: elasticsearch-logging
subjects:
- kind: ServiceAccount
name: elasticsearch-logging
namespace: elk-iot-cloud
apiGroup: ""
roleRef:
kind: ClusterRole
name: elasticsearch-logging
apiGroup: ""
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: elasticsearch-logging
namespace: elk-iot-cloud
labels:
k8s-app: elasticsearch-logging
spec:
serviceName: elasticsearch-logging
replicas: 3
updateStrategy:
type: RollingUpdate
selector:
matchLabels:
k8s-app: elasticsearch-logging
template:
metadata:
labels:
k8s-app: elasticsearch-logging
spec:
serviceAccountName: elasticsearch-logging
containers:
- image: docker.elastic.co/elasticsearch/elasticsearch:7.15.1
name: elasticsearch-logging
ports:
- containerPort: 9200
name: db
protocol: TCP
- containerPort: 9300
name: transport
protocol: TCP
volumeMounts:
- name: data
mountPath: /usr/share/elasticsearch/data
env:
- name: cluster.name
value: k8s-logs
- name: node.name
valueFrom:
fieldRef:
fieldPath: metadata.name
# sets a list of master-eligible nodes in the cluster.
- name: discovery.seed_hosts
value: 'elasticsearch-logging-0.elasticsearch-logging.elk-iot-cloud.svc.cluster.local,elasticsearch-logging-1.elasticsearch-logging.elk-iot-cloud.svc.cluster.local ,elasticsearch-logging-2.elasticsearch-logging.elk-iot-cloud.svc.cluster.local'
# specifies a list of master-eligible nodes that will participate in the master election process.
- name: cluster.initial_master_nodes
value: 'elasticsearch-logging-0,elasticsearch-logging-1,elasticsearch-logging-2'
- name: ES_JAVA_OPTS
value: '-Xms1g -Xmx1g'
- name: ELASTICSEARCH_USERNAME
value: 'elastic'
- name: ELASTIC_PASSWORD
value: 'elastic'
#- name: xpack.license.self_generated.type
# value: "basic"
- name: xpack.security.enabled
value: 'true'
#- name: xpack.security.transport.ssl.enabled
# value: 'true'
#- name: xpack.security.audit.enabled
# value: 'true'
- name: xpack.monitoring.collection.enabled
value: 'true'
volumes:
- name: elasticsearch-logging
emptyDir: {}
initContainers:
- name: fix-permissions
image: busybox
command: ["sh", "-c", "chown -R 1000:1000 /usr/share/elasticsearch/data"]
securityContext:
privileged: true
volumeMounts:
- name: data
mountPath: /usr/share/elasticsearch/data
- name: elasticsearch-logging-init
image: busybox
command: ["/sbin/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
volumeClaimTemplates:
- metadata:
name: data
labels:
app: elasticsearch-logging
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: do-block-storage
resources:
requests:
storage: 50Gi
---
apiVersion: v1
kind: Service
metadata:
name: elasticsearch-logging
namespace: elk-iot-cloud
labels:
k8s-app: elasticsearch-logging
spec:
ports:
- port: 9200
protocol: TCP
targetPort: db
selector:
k8s-app: elasticsearch-logging
---
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: data
namespace: elk-iot-cloud
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: data-pv0
namespace: elk-iot-cloud
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: data
local:
path: /mnt/disk/vol0
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- elasticsearch-logging-0
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: data-pv1
namespace: elk-iot-cloud
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: data
local:
path: /mnt/disk/vol1
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- elasticsearch-logging-1
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: data-pv2
namespace: elk-iot-cloud
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: data
local:
path: /mnt/disk/vol2
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- elasticsearch-logging-2
配置: Ubuntu / Microk8s / K8S 1.21.7
【问题讨论】:
-
显示
kubectl get pv的输出 -
kubectl get pvc = 在默认命名空间中找不到资源。
标签: elasticsearch kubernetes elk stateful