web-dev-qa-db-ja.com

HPA自動スケーリングメトリック用にKubeAPIサーバーを有効にする方法

Kubeバージョンv1.13.0を使用しています。 Heapsterはv1.11から廃止されたため、クラスターメトリック用のAPIサーバーがHPAを実装できるようにするのに行き詰まっています。

参照用の添付画像

誰かが私にAPIメトリクスサーバーまたは任意のデモビデオを段階的に有効にするように案内できますか?さらに先に進むことは本当に役に立ちます。

さらに情報が必要な場合はお知らせください。

おかげでディーナ

6
DeenaDeepak

Heapsterが減価償却されているため、metrics-serverを使用してHPAを実装できます。私は次の手順に従いました:

  1. Metrics-server githubリポジトリのクローンを作成します: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

そしてポッドスケーリング:

enter image description here

これがHPAを機能させるのに役立つことを願っています。

編集:

metrics-server-deployment.yamldeploy/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"
5
Prafull Ladha