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:
-
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"