kubernetes kubernetes-apiserver

kubernetes - Cómo habilitar el servidor KubeAPI para las métricas de autoescalamiento HPA



kubernetes-apiserver (1)

Estoy usando la versión v1.13.0 de Kube. Dado que Heapster se deprecia de la v1.11, me quedo atascado al habilitar el servidor API para las métricas de clúster para implementar HPA.

Imagen adjunta para referencia

¿Puede alguien guiarme para habilitar paso a paso el servidor de Métricas API o cualquier video de demostración? Sería muy útil seguir adelante.

Por favor, hágame saber si necesita más información.

Gracias deena


Soy capaz de implementar HPA usando metrics-server medida que se deprime el heapster. He seguido los siguientes pasos:

  1. Clone el servidor de métricas github repo: git clone https://github.com/kubernetes-incubator/metrics-server.git

Vaya al directorio cd deploy/1.8+ y ejecute los siguientes archivos 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

Ahora cree un pod que desee probar para la autoescala (tomado de los documentos oficiales de 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

Ahora crea una implementación de autoescala:

[root@ip-10-0-1-91 auto]# kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10 horizontalpodautoscaler.autoscaling/php-apache autoscaled

Ahora revisa el HPA, tus métricas están llegando o no:

[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

Ahora genere carga desde otra ventana usando:

kubectl run -i --tty load-generator --image=busybox /bin/sh

Abrirá un terminal sh y puede ejecutar una carga desde ese terminal sh usando:

while true; do wget -q -O- http://php-apache.default.svc.cluster.local; done

Tomará aproximadamente un minuto cargar suficiente carga en su pod y verá un boom:

[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

Y escamas de vainas:

Espero que esto ayude a que tu HPA funcione.

EDITAR:

Reemplace el archivo metrics-server-deployment.yaml en deploy/1.8+ con el siguiente archivo 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

Además, habilite el --authentication-token-webhook en kubelet.conf, luego podrá obtener el HPA.

EDIT2: debe establecer las siguientes propiedades en el archivo de implementación (en su caso, es Tomcat) para las que está creando HPA, entonces solo su HPA puede obtener métricas de su implementación.

resources: requests: memory: "64Mi" cpu: "250m" limits: memory: "128Mi" cpu: "500m"