Kubernetes autoscaler を作成しましたが、パラメーターを変更する必要があります。どうすれば更新できますか?
私は以下を試しましたが、失敗します:
✗ kubectl autoscale -f docker/production/web-controller.yaml --min=2 --max=6
Error from server: horizontalpodautoscalers.extensions "web" already exists
最初にオートスケーラーを削除してから、再作成します。
✗ kubectl delete hpa web
✗ kubectl autoscale -f docker/production/web-controller.yaml --min=2 --max=6
クラスタ内のリソースはいつでもインタラクティブに編集できます。 web
というオートスケールコントローラーの場合、次の方法で編集できます。
kubectl edit hpa web
水平ポッドオートスケーラーを更新するためのよりプログラム的な方法を探している場合は、yamlファイルでオートスケーラーエンティティを説明することもできます。たとえば、次は、Horizontal PodAutoscaleエンティティとペアになっている単純なReplicationControllerです。
apiVersion: v1
kind: ReplicationController
metadata:
name: nginx
spec:
replicas: 2
template:
metadata:
labels:
run: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
---
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: nginx
namespace: default
spec:
maxReplicas: 3
minReplicas: 2
scaleTargetRef:
apiVersion: v1
kind: ReplicationController
name: nginx
nginx.yaml
というファイルにこれらの内容がある場合、オートスケーラーの更新はkubectl apply -f nginx.yaml
を介して実行できます。
Kubectl patchコマンドを使用して、現在のステータスを確認することもできます。
kubectl get hpa <autoscaler-name-here> -o json
出力例:
{
"apiVersion": "autoscaling/v1",
"kind": "HorizontalPodAutoscaler",
"metadata": {
...
"name": "your-auto-scaler",
"namespace": "your-namespace",
...
},
"spec": {
"maxReplicas": 50,
"minReplicas": 2,
"scaleTargetRef": {
"apiVersion": "extensions/v1beta1",
"kind": "Deployment",
"name": "your-deployment"
},
"targetCPUUtilizationPercentage": 40
},
"status": {
"currentReplicas": 1,
"desiredReplicas": 2,
"lastScaleTime": "2017-12-13T16:23:41Z"
}
}
レプリカの最小数を更新する場合:
kubectl -n your-namespace patch hpa your-auto-scaler --patch '{"spec":{"minReplicas":1}}'
同じロジックがオートスケーラー構成にある他のパラメーターにも適用されます。許可されるレプリカの最大数を更新する場合は、minReplicasをmaxReplicasに変更してください。