Docker GCP Kubernetes工作量“;“没有最低可用性”;

Docker GCP Kubernetes工作量“;“没有最低可用性”;,docker,kubernetes,google-cloud-platform,google-kubernetes-engine,bitcoind,Docker,Kubernetes,Google Cloud Platform,Google Kubernetes Engine,Bitcoind,背景:我正试图在谷歌云平台上建立一个比特币核心regtest pod。我从中借用了一些代码,对其进行编辑,使其不再使用比特币ABC(另一种客户端实现),而是使用比特币核心,并将RPC用户名和密码都更改为“测试”。我还为docker-entrypoint.sh脚本添加了一些命令参数,以转发到Bitcoin,即我正在运行的节点的守护进程。尝试部署以下三个YAML文件时,“工作负载”中的仪表板显示比特币没有最低可用性。正确部署pod非常重要,这样我就可以向负载平衡器发送RPC命令。下面是我正在使用的Y

背景:我正试图在谷歌云平台上建立一个比特币核心regtest pod。我从中借用了一些代码,对其进行编辑,使其不再使用比特币ABC(另一种客户端实现),而是使用比特币核心,并将RPC用户名和密码都更改为“测试”。我还为docker-entrypoint.sh脚本添加了一些命令参数,以转发到Bitcoin,即我正在运行的节点的守护进程。尝试部署以下三个YAML文件时,“工作负载”中的仪表板显示比特币没有最低可用性。正确部署pod非常重要,这样我就可以向负载平衡器发送RPC命令。下面是我正在使用的YAML文件。我对Kubernetes不是很熟悉,我正在做一个关于可伸缩性的研究项目,需要对这个pod运行RPC命令。询问相关日志,我将在单独的粘贴箱中提供。现在,我在集群上只运行了三台机器,因为我还在设置它。区域为us-east1-d,机器类型为n1-standard-2

问题:考虑到下面的这些文件,是什么导致GCP Kubernetes引擎响应“没有最低可用性”,如何解决这个问题


比特币部署。sh

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  namespace: default
  labels:
    service: bitcoin
  name: bitcoin
spec:
  strategy:
    type: Recreate
  replicas: 1
  template:
    metadata:
      labels:
        service: bitcoin
    spec:
      containers:
      - env:
        - name: BITCOIN_RPC_USER
          valueFrom:
            secretKeyRef:
              name: test
              key: test
        - name: BITCOIN_RPC_PASSWORD
          valueFrom:
            secretKeyRef:
              name: test
              key: test
        image: ruimarinho/bitcoin-core:0.17.0
        name: bitcoin
        ports:
        - containerPort: 18443
          protocol: TCP
        volumeMounts:
          - mountPath: /data
            name: bitcoin-data
        resources:
          requests:
            memory: "1.5Gi"
        command: ["./entrypoint.sh"]
        args: ["-server", "-daemon", "-regtest", "-rpcbind=127.0.0.1", "-rpcallowip=0.0.0.0/0", "-rpcport=18443", "-rpcuser=test", "-rpcpassport=test"]
      restartPolicy: Always
      volumes:
        - name: bitcoin-data
          gcePersistentDisk:
            pdName: disk-bitcoincore-1
            fsType: ext4

比特币秘密.yml

apiVersion: v1
kind: Secret
metadata:
  name: bitcoin
type: Opaque
data:
  rpcuser: dGVzdAo=
  rpcpass: dGVzdAo=
apiVersion: v1
kind: Service
metadata:
  name: bitcoin
  namespace: default
spec:
  ports:
    - port: 18443
      targetPort: 18443
  selector:
    service: bitcoin
  type: LoadBalancer
  externalTrafficPolicy: Local

比特币srv.yml

apiVersion: v1
kind: Secret
metadata:
  name: bitcoin
type: Opaque
data:
  rpcuser: dGVzdAo=
  rpcpass: dGVzdAo=
apiVersion: v1
kind: Service
metadata:
  name: bitcoin
  namespace: default
spec:
  ports:
    - port: 18443
      targetPort: 18443
  selector:
    service: bitcoin
  type: LoadBalancer
  externalTrafficPolicy: Local

我已经多次遇到这个问题。我使用的解决方案:

  • 等等。Google Cloud在您尝试启动的区域/区域中没有足够的可用资源。在某些情况下,这需要一个小时到一整天
  • 选择其他区域/分区
  • 本月早些时候就是一个例子。我无法在美国西部开发新资源。我想刚换成了美国东部4-c。一切都启动了


    我真的不知道为什么这会在谷歌的掩护下发生。在过去的三个月里,我个人经历过三次这个问题,并且在StackOverflow上见过好几次这个问题。真正的答案可能很简单,那就是谷歌云确实开始以比其基础设施更快的速度增长。这对谷歌来说是件好事,因为我知道他们正在投资云计算的主要新资源。就个人而言,我真的很喜欢使用他们的云。

    您提到的错误消息并不是直接指向缺货;群集中有更多的资源不可用。您可以在将另一个节点添加到群集后重试。此外,这表明如果您的节点有足够的资源,但您仍然没有最低可用性消息,请检查节点是否具有SchedulingDisabled或Cordoned状态:在这种情况下,它们不接受新的POD。

    导致此故障的原因可能有很多:

  • 资源不足
  • 活性探针失效
  • 准备探头故障

  • 我在GKE中遇到了这个错误。 原因是由于名称不匹配,pod无法找到configmap。因此,确保pod可以发现所有资源