ここの例のように Kubernetes HPA をテストしようとしています
kubectl run php-apache --image=gcr.io/google_containers/hpa-example --requests=cpu=200m --expose --port=80
kubectl autoscale deployment php-apache --cpu-percent=20 --min=1 --max=10
kubectl get hpa
出力は
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
php-apache Deployment/php-apache <unknown> / 20% 1 3 0 1h
controller-manager が現在の使用状況を取得できないのはなぜですか?
環境の詳細:
- kube-system のポート 80 でサービスを実行する Heapster を含む K8s バージョン 1.7.3。
- InfluxDB はシンクとして設定されており、Grafana と Heapster API で使用量/制限などを正しく確認できます
- デプロイされたポッドの yaml で CPU リクエスト (200m) を確認できます。
- コントローラー マネージャーのログにエラーはありません。私が見るのは、etcd ウォッチとポッド作成メッセージだけです。
- コントローラーのマニフェストに "horizontal-pod-autoscaler-sync-period" が指定されていません。デフォルトは 30 秒です。
- 「hpa describe」はイベントをリストしません (「<none>」)。
- HPA を作成/削除しても、controller-manager にログが作成されない
- Heapster をインストールしていないときは、コントローラー マネージャーのログに問題がありました。Heapster がインストールされていると、このメッセージは表示されません: "
Deployment/xx/php-apache のリストされたメトリクスに基づいて必要な数のレプリカを計算できませんでした: cpu 使用率を取得できませんでした: リソース cpu のメトリクスを取得できません: ポッド リソース メトリクスを取得できませんでした: サーバーはこの時点で要求された操作を完了できませんしばらくしてからもう一度お試しください (get services http:heapster:)
編集 1 [9 月 14 日] :
- ここに Heapster ログをアップロードしました。エラーはありません。
Heapster API でメトリクスを直接確認したところ、応答がありました。
curl http://10.107.55.59/api/v1/model/namespaces/cp/pods/php-apache-593471247-c65fh/metrics/cpu/usage
{
"metrics": [
{
"timestamp": "2017-09-14T13:46:00Z",
"value": 19008838
},
{
"timestamp": "2017-09-14T13:47:00Z",
"value": 19008838
},
{
"timestamp": "2017-09-14T13:48:00Z",
"value": 19008838
}
],
"latestTimestamp": "2017-09-14T13:48:00Z"
}