Kubeバージョンv1.13.0を使用しています。 Heapsterはv1.11から廃止されたため、クラスターメトリック用のAPIサーバーがHPAを実装できるようにするのに行き詰まっています。
誰かが私にAPIメトリクスサーバーまたは任意のデモビデオを段階的に有効にするように案内できますか?さらに先に進むことは本当に役に立ちます。
さらに情報が必要な場合はお知らせください。
おかげでディーナ
Heapsterが減価償却されているため、metrics-server
を使用してHPAを実装できます。私は次の手順に従いました:
git clone https://github.com/kubernetes-incubator/metrics-server.git
cd deploy/1.8+
ディレクトリに移動し、次のyamlファイルを実行します。
[root@ip-10-0-1-91 1.8+]# kubectl apply -f aggregated-metrics-reader.yaml
clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created
[root@ip-10-0-1-91 1.8+]# kubectl apply -f auth-reader.yaml
rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created
[root@ip-10-0-1-91 1.8+]# kubectl apply -f auth-delegator.yaml
clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created
[root@ip-10-0-1-91 1.8+]# kubectl apply -f metrics-apiservice.yaml
apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created
[root@ip-10-0-1-91 1.8+]# kubectl apply -f resource-reader.yaml
clusterrole.rbac.authorization.k8s.io/system:metrics-server created
clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created
[root@ip-10-0-1-91 1.8+]# kubectl apply -f metrics-server-deployment.yaml
serviceaccount/metrics-server created
deployment.extensions/metrics-server created
[root@ip-10-0-1-91 1.8+]# kubectl apply -f metrics-server-service.yaml
service/metrics-server created
次に、自動スケーリングをテストするポッドを作成します(kubernetes公式ドキュメントから取得):
[root@ip-10-0-1-91 auto]# kubectl run --generator=run-pod/v1 php-Apache --
image=k8s.gcr.io/hpa-example --requests=cpu=200m --expose --port=80
service/php-Apache created
deployment.apps/php-Apache created
次に、autoscaleデプロイを作成します。
[root@ip-10-0-1-91 auto]# kubectl autoscale deployment php-Apache --cpu-percent=50 --min=1 --max=10
horizontalpodautoscaler.autoscaling/php-Apache autoscaled
HPAを確認してください。メトリックが表示されるかどうかは次のとおりです。
[root@ip-10-0-1-91 manifests]# kubectl get hpa
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
php-Apache Deployment/php-Apache 0%/50% 1 10 1 2m
ここで、別のウィンドウから負荷を生成します。
kubectl run -i --tty load-generator --image=busybox /bin/sh
それはshターミナルを開き、次を使用してそのshターミナルからロードを実行できます。
while true; do wget -q -O- http://php-Apache.default.svc.cluster.local; done
ポッドに十分な負荷がかかるまでに1分ほどかかり、ブームが発生します。
[root@ip-10-0-1-91 manifests]# kubectl get hpa
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
php-Apache Deployment/php-Apache 120%/50% 1 10 4 7m
そしてポッドスケーリング:
これがHPAを機能させるのに役立つことを願っています。
編集:
metrics-server-deployment.yaml
のdeploy/1.8+
ファイルを次のyamlファイルに置き換えます。
apiVersion: v1
kind: ServiceAccount
metadata:
name: metrics-server
namespace: kube-system
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: metrics-server
namespace: kube-system
labels:
k8s-app: metrics-server
spec:
selector:
matchLabels:
k8s-app: metrics-server
template:
metadata:
name: metrics-server
labels:
k8s-app: metrics-server
spec:
serviceAccountName: metrics-server
volumes:
# mount in tmp so we can safely use from-scratch images and/or read-only containers
- name: tmp-dir
emptyDir: {}
containers:
- command:
- /metrics-server
- --metric-resolution=30s
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalIP
name: metrics-server
image: k8s.gcr.io/metrics-server-AMD64:v0.3.1
imagePullPolicy: Always
volumeMounts:
- name: tmp-dir
mountPath: /tmp
また、kubelet.confで--authentication-token-webhook
を有効にすると、HPAを取得できるようになります。
EDIT2:HPAを作成するデプロイメントファイル(この場合はTomcat)で次のプロパティを設定する必要があります。そうすると、デプロイメントからメトリックをフェッチできるのはHPAだけになります。
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"