docker - GCP Kubernetes 工作负载 "Does not have minimum availability"

标签 docker kubernetes google-cloud-platform google-kubernetes-engine bitcoind

背景 :我正在尝试在 Google Cloud Platform 上设置 Bitcoin Core regtest pod。我从 https://gist.github.com/zquestz/0007d1ede543478d44556280fdf238c9 借了一些代码,对其进行编辑,使其不使用比特币 ABC(不同的客户端实现),而是使用比特币核心,并将 RPC 用户名和密码都更改为“测试”。我还为 docker-entrypoint.sh 脚本添加了一些命令参数,以转发到我正在运行的节点的守护进程 bitcoind。当尝试部署以下三个 YAML 文件时,“工作负载”中的仪表板显示比特币没有最低可用性。正确部署 pod 很重要,因此我可以将 RPC 命令发送到负载均衡器。下面附上我正在使用的 YAML 文件。我对 Kubernetes 不是很熟悉,我正在做一个关于可扩展性的研究项目,这需要针对这个 pod 运行 RPC 命令。索取相关日志,我将在单独的粘贴箱中提供它们。现在,我只在我的集群上运行三台机器,因为我仍在设置它。区域为 us-east1-d,机器类型为 n1-standard-2。

问题 :鉴于以下这些文件,是什么导致 GCP Kubernetes Engine 响应“没有最低可用性”,如何解决?

比特币部署.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

比特币 secret .yml
apiVersion: v1
kind: Secret
metadata:
  name: bitcoin
type: Opaque
data:
  rpcuser: dGVzdAo=
  rpcpass: dGVzdAo=

比特币-srv.yml
apiVersion: v1
kind: Service
metadata:
  name: bitcoin
  namespace: default
spec:
  ports:
    - port: 18443
      targetPort: 18443
  selector:
    service: bitcoin
  type: LoadBalancer
  externalTrafficPolicy: Local

最佳答案

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

  • 等待。 Google Cloud 在您尝试启动的区域/地区中没有足够的可用资源。在某些情况下,这需要一个小时到一整天。
  • 选择不同的区域/区域。

  • 本月早些时候就是一个例子。我无法在 us-west1-a 中启动新资源。我想刚刚切换到 us-east4-c。一切启动。

    我真的不知道为什么这会发生在谷歌的幕后。在过去的三个月里,我亲身经历过 3 次这个问题,我在 StackOverflow 上也多次看到过这个问题。真正的答案可能很简单,谷歌云的增长速度真的比他们的基础设施快。这对谷歌来说是一件好事,因为我知道他们正在为云计算主要的新资源进行投资。就个人而言,我真的很喜欢使用他们的云。

    关于docker - GCP Kubernetes 工作负载 "Does not have minimum availability",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53452120/

    相关文章:

    docker - 在 docker-compose 中使用容器名称作为命令

    kubernetes - 没有主节点的Kubernetes节点

    docker - 如何使用 dockerfile 在 gcp 应用引擎上安装 poppler?

    google-cloud-platform - 无法从 GCP 中的虚拟机访问 TPU

    docker - 在 Docker 中运行存储库

    docker - Windows上docker的奇怪状态

    Mysql STR_TO_DATE 在不同环境中给出不一致的结果

    具有 resourceName 和列表对象的 Kubernetes RBAC 角色

    kubernetes - 了解Kubernetes集群中的子网划分

    mysql - Google 云 SQL - CPU 为 100%