見つかったチュートリアル here をフォローしているときに、Horizontal PodAutoscalerのカスタムメトリックを作成するためにautoscaling/v2beta2が必要であることがわかりましたが、それを有効にする方法がわかりません。
環境の詳細:
何を試しましたか:
「kubectlapi-versions」を使用して、自動スケーリングを有効にしているAPIグループを確認しましたが、autoscaling/v1 autoscaling/v2beta1のみです。
「特定のリソースとAPIグループはデフォルトで有効になっています。apiserverで--runtime-configを設定することで有効または無効にできます。-runtime-」という次の ドキュメント が見つかりました。 configはコンマ区切りの値を受け入れます。」 kube-apiserverコマンドのドキュメント を見て、このコマンドをgcloudに使用する方法を見つけることができました
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