web-dev-qa-db-ja.com

GoogleCloudでautoscaling / v2beta2を有効にする方法

見つかったチュートリアル here をフォローしているときに、Horizo​​ntal PodAutoscalerのカスタムメトリックを作成するためにautoscaling/v2beta2が必要であることがわかりましたが、それを有効にする方法がわかりません。

環境の詳細:

  • Google Cloudプラットフォーム
  • Kubernetesバージョン1.13.7-gke.8(最新)

何を試しましたか:

  • 「kubectlapi-versions」を使用して、自動スケーリングを有効にしているAPIグループを確認しましたが、autoscaling/v1 autoscaling/v2beta1のみです。

  • 「特定のリソースとAPIグループはデフォルトで有効になっています。apiserverで--runtime-configを設定することで有効または無効にできます。-runtime-」という次の ドキュメント が見つかりました。 configはコンマ区切りの値を受け入れます。」 kube-apiserverコマンドのドキュメント を見て、このコマンドをgcloudに使用する方法を見つけることができました

2
claudiu.decean

APIバージョンについて:それは問題ありません。autoscaling/ v2beta1を使用すると、外部メトリック(Stackdriverなど)に基づいて自動スケーリングすることもできます。

あなたの質問について:「私はそれを有効にできない」とはどういう意味かわかりません。リンクした同じページから、必要なマニフェストの80%を見つけることができます。

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: php-Apache
  namespace: default
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: php-Apache
  minReplicas: 1
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50

このマニフェストは、「CPU使用率のスケールに基づいて、1から10のレプリカを保持し、scaleTargetRefに記述されているものよりも多い」と述べています。メモリに基づいて追加することもでき、「OR」方式で機能します(2つのメトリックのいずれかがしきい値を超えると、スケーリングが発生します)。最後に、Stackdriverソースとなるtype: Externalのメトリックを追加することもできます(たとえば、HTTPリクエストの数、キュー内のメッセージの数など)。 CPUに基づくスケーリングは効果がないため、これは一般的に推奨されます。

マニフェストを取得したら、kubectlに-f hpa.yamlを適用して、有効にします。

これが、私があなたの質問を完全に理解していないと言っている理由です、あなたが適切なマニフェストを見つけることができなかったと言うことを意味しますか? (私がここに書いたものも「適切」ではありません)

ソースが見つかりませんでした(外部メトリックを使用したHPAに関する記事でした)が、HPAのマニフェストは次のとおりです。

apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
  name: myapp-hpa
  namespace: myapp
spec:
  minReplicas: 3
  maxReplicas: 15
  scaleTargetRef:
    apiVersion: extensions/v1beta1
    kind: Deployment
    name: myapp
  metrics:
    - type: Resource
      resource:
        name: memory
        targetAverageUtilization: 60
    - type: External
      external:
        metricName: loadbalancing.googleapis.com|https|request_count
        metricSelector:
          matchLabels:
            resource.labels.url_map_name: k8s-um-myapp-myapp-ingress--64658eaf6b9dce0
        targetAverageValue: 100

RAMとリクエストに基づいてスケーリングします。

HTH

1
linuxbandit