0

我正在 Kubernetes 上部署一个 CouchDB 集群。它起作用了,当我尝试缩放它时出现错误。

我尝试扩展我的 Statefulset,当我描述 couchdb-3 时出现此错误:

0/3 个节点可用:3 个 pod 具有未绑定的立即 PersistentVolumeClaims。

当我描述 hpa 时出现这个错误:

无效指标(1 个无效),第一个错误是:未能获得 cpu 利用率:缺少 cpu 请求

无法获得 cpu 利用率:缺少 cpu 请求

我运行“ 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
  • Docker 版本 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"

我在 /etc/exports 中设置了 nfs:/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
4

1 回答 1

0

您有 3 个持久卷和 3 个 pod,每个都在声明。一个 PV 不能被多个 pod 认领。由于您使用 NFS 作为后端,因此您可以使用持久卷的动态配置。

https://github.com/openebs/dynamic-nfs-provisioner

于 2021-12-06T10:34:32.273 回答