Как выполнить автоматическое масштабирование кластера CouchDB в Kubernetes
Я развертываю 1 кластер CouchDB на Kubernetes. Это сработало, и когда я получил ошибку, когда попытался масштабировать.
Я пытаюсь масштабировать свой Statefulset и получаю эту ошибку, когда описываю couchdb-3:
Доступно 0/3 узла: 3 модуля имеют несвязанные немедленные PersistentVolumeClaims.
И вот эта ошибка, когда я описываю гпа:
неверные метрики (1 недействительный из 1), первая ошибка: не удалось получить использование процессора: отсутствует запрос для процессора
не удалось получить загрузку процессора: отсутствует запрос на использование процессора
Я бегу "
kubectl get pod -o wide
"и получите такой результат:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
couchdb-0 1/1 Running 0 101m 10.244.2.13 node2 <none> <none>
couchdb-1 1/1 Running 0 101m 10.244.2.14 node2 <none> <none>
couchdb-2 1/1 Running 0 100m 10.244.2.15 node2 <none> <none>
couchdb-3 0/1 Pending 0 15m <none> <none> <none> <none>
Как я могу это исправить !?
- Версия Kubernetes: 1.22.4
- Докер версии 20.10.11, сборка dea9396
- Ubuntu 20.04
Мой файл HPA:
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: hpa-couchdb
spec:
maxReplicas: 16
minReplicas: 6
scaleTargetRef:
apiVersion: apps/v1
kind: StatefulSet
name: couchdb
targetCPUUtilizationPercentage: 50
pv.yaml:
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: couch-vol-0
labels:
volume: couch-volume
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
nfs:
server: 192.168.1.100
path: "/var/couchnfs/couchdb-0"
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: couch-vol-1
labels:
volume: couch-volume
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
nfs:
server: 192.168.1.100
path: "/var/couchnfs/couchdb-1"
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: couch-vol-2
labels:
volume: couch-volume
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
nfs:
server: 192.168.1.100
path: "/var/couchnfs/couchdb-2"
Я установил nfs в / etc / exports:
/var/couchnfs 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)
statefulset.yaml
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: couchdb
labels:
app: couch
spec:
replicas: 3
serviceName: "couch-service"
selector:
matchLabels:
app: couch
template:
metadata:
labels:
app: couch # pod label
spec:
containers:
- name: couchdb
image: couchdb:2.3.1
imagePullPolicy: "Always"
env:
- name: NODE_NETBIOS_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: NODENAME
value: $(NODE_NETBIOS_NAME).couch-service # FQDN in vm.args
- name: COUCHDB_USER
value: admin
- name: COUCHDB_PASSWORD
value: admin
- name: COUCHDB_SECRET
value: b1709267
- name: ERL_FLAGS
value: "-name couchdb@$(NODENAME)"
- name: ERL_FLAGS
value: "-setcookie b1709267" # the “password” used when nodes connect to each other.
ports:
- name: couchdb
containerPort: 5984
- name: epmd
containerPort: 4369
- containerPort: 9100
volumeMounts:
- name: couch-pvc
mountPath: /opt/couchdb/data
volumeClaimTemplates:
- metadata:
name: couch-pvc
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 10Gi
selector:
matchLabels:
volume: couch-volume
service.yaml
---
apiVersion: v1
kind: Service
metadata:
name: couch-service
namespace: default
labels:
app: couch
spec:
type: ClusterIP
clusterIP: None
ports:
- port: 5984
protocol: TCP
targetPort: 5984
selector:
app: couch # label selector
---
kind: Service
apiVersion: v1
metadata:
name: couch-nodep-svc
labels:
app: couch
spec:
type: NodePort # NodePort service
ports:
- port: 5984
nodePort: 30984 # external port
protocol: TCP
selector:
app: couch # label selector
1 ответ
У вас есть 3 постоянных тома и 3 модуля, требующих каждый. Один PV не может быть запрошен более чем одним модулем. Поскольку вы используете NFS в качестве серверной части, вы можете использовать динамическую подготовку постоянных томов.