7.2. Estimation du nombre de pods que peuvent contenir les nœuds d'OpenShift Container Platform
En tant qu'administrateur de cluster, vous pouvez utiliser l'outil de capacité de cluster pour visualiser le nombre de pods qui peuvent être planifiés pour augmenter les ressources actuelles avant qu'elles ne soient épuisées, et pour garantir que tous les pods futurs pourront être planifiés. Cette capacité provient d'un hôte de nœud individuel dans une grappe et comprend le CPU, la mémoire, l'espace disque et d'autres éléments.
7.2.1. Comprendre l'outil de capacité de cluster d'OpenShift Container Platform
L'outil de capacité de la grappe simule une séquence de décisions d'ordonnancement afin de déterminer le nombre d'instances d'un pod d'entrée qui peuvent être ordonnancées sur la grappe avant qu'elle n'épuise ses ressources, ce qui permet d'obtenir une estimation plus précise.
La capacité allouable restante est une estimation approximative, car elle ne tient pas compte de toutes les ressources distribuées entre les nœuds. Elle analyse uniquement les ressources restantes et estime la capacité disponible qui est encore consommable en termes de nombre d'instances d'un pod avec des exigences données qui peuvent être planifiées dans un cluster.
En outre, les modules ne peuvent être programmés que sur des ensembles particuliers de nœuds en fonction de leurs critères de sélection et d'affinité. Par conséquent, il peut être difficile d'estimer quels pods restants une grappe peut programmer.
Vous pouvez exécuter l'outil d'analyse de la capacité des clusters en tant qu'utilitaire autonome à partir de la ligne de commande ou en tant que tâche dans un pod au sein d'un cluster OpenShift Container Platform. L'exécution en tant que tâche à l'intérieur d'un pod vous permet de l'exécuter plusieurs fois sans intervention.
7.2.2. Exécution de l'outil de capacité de cluster sur la ligne de commande
Vous pouvez exécuter l'outil OpenShift Container Platform cluster capacity à partir de la ligne de commande pour estimer le nombre de pods qui peuvent être planifiés sur votre cluster.
Conditions préalables
- Exécutez l'outil OpenShift Cluster Capacity Tool, qui est disponible sous forme d'image de conteneur à partir du catalogue de l'écosystème Red Hat.
Créez un exemple de fichier spec
Pod
, que l'outil utilise pour estimer l'utilisation des ressources. Le fichierpodspec
spécifie ses besoins en ressources sous la formelimits
ourequests
. L'outil de calcul de la capacité des clusters prend en compte les besoins en ressources du pod dans son analyse d'estimation.Voici un exemple de l'entrée
Pod
spec :apiVersion: v1 kind: Pod metadata: name: small-pod labels: app: guestbook tier: frontend spec: containers: - name: php-redis image: gcr.io/google-samples/gb-frontend:v4 imagePullPolicy: Always resources: limits: cpu: 150m memory: 100Mi requests: cpu: 150m memory: 100Mi
Procédure
Pour utiliser l'outil de capacité de cluster sur la ligne de commande :
À partir du terminal, connectez-vous au Red Hat Registry :
$ podman login registry.redhat.io
Tirez l'image de l'outil de capacité de la grappe :
$ podman pull registry.redhat.io/openshift4/ose-cluster-capacity
Exécutez l'outil de calcul de la capacité des clusters :
$ podman run -v $HOME/.kube:/kube:Z -v $(pwd):/cc:Z ose-cluster-capacity \ /bin/cluster-capacity --kubeconfig /kube/config --podspec /cc/pod-spec.yaml \ --verbose 1
- 1
- Vous pouvez également ajouter l'option
--verbose
pour obtenir une description détaillée du nombre de pods pouvant être planifiés sur chaque nœud du cluster.
Exemple de sortie
small-pod pod requirements: - CPU: 150m - Memory: 100Mi The cluster can schedule 88 instance(s) of the pod small-pod. Termination reason: Unschedulable: 0/5 nodes are available: 2 Insufficient cpu, 3 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn't tolerate. Pod distribution among nodes: small-pod - 192.168.124.214: 45 instance(s) - 192.168.124.120: 43 instance(s)
Dans l'exemple ci-dessus, le nombre de pods estimés qui peuvent être programmés sur le cluster est de 88.
7.2.3. Exécution de l'outil de capacité de cluster en tant que tâche à l'intérieur d'un pod
L'exécution de l'outil de capacité de cluster en tant que tâche à l'intérieur d'un pod présente l'avantage de pouvoir être exécutée plusieurs fois sans nécessiter d'intervention de la part de l'utilisateur. L'exécution de l'outil de capacité de cluster en tant que tâche implique l'utilisation d'un objet ConfigMap
.
Conditions préalables
Téléchargez et installez l'outil de calcul de la capacité des clusters.
Procédure
Pour exécuter l'outil de capacité de cluster :
Créer le rôle de cluster :
$ cat << EOF| oc create -f -
Exemple de sortie
kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: cluster-capacity-role rules: - apiGroups: [""] resources: ["pods", "nodes", "persistentvolumeclaims", "persistentvolumes", "services", "replicationcontrollers"] verbs: ["get", "watch", "list"] - apiGroups: ["apps"] resources: ["replicasets", "statefulsets"] verbs: ["get", "watch", "list"] - apiGroups: ["policy"] resources: ["poddisruptionbudgets"] verbs: ["get", "watch", "list"] - apiGroups: ["storage.k8s.io"] resources: ["storageclasses"] verbs: ["get", "watch", "list"] EOF
Créer le compte de service :
$ oc create sa cluster-capacity-sa
Ajouter le rôle au compte de service :
$ oc adm policy add-cluster-role-to-user cluster-capacity-role \ system:serviceaccount:default:cluster-capacity-sa
Définir et créer la spécification
Pod
:apiVersion: v1 kind: Pod metadata: name: small-pod labels: app: guestbook tier: frontend spec: containers: - name: php-redis image: gcr.io/google-samples/gb-frontend:v4 imagePullPolicy: Always resources: limits: cpu: 150m memory: 100Mi requests: cpu: 150m memory: 100Mi
L'analyse de la capacité du cluster est montée dans un volume à l'aide d'un objet
ConfigMap
nommécluster-capacity-configmap
pour monter le fichier d'entrée pod specpod.yaml
dans un volumetest-volume
au chemin/test-pod
.Si vous n'avez pas créé d'objet
ConfigMap
, créez-en un avant de créer le travail :$ oc create configmap cluster-capacity-configmap \ --from-file=pod.yaml=pod.yaml
Créez le travail en utilisant l'exemple ci-dessous de fichier de spécification de travail :
apiVersion: batch/v1 kind: Job metadata: name: cluster-capacity-job spec: parallelism: 1 completions: 1 template: metadata: name: cluster-capacity-pod spec: containers: - name: cluster-capacity image: openshift/origin-cluster-capacity imagePullPolicy: "Always" volumeMounts: - mountPath: /test-pod name: test-volume env: - name: CC_INCLUSTER 1 value: "true" command: - "/bin/sh" - "-ec" - | /bin/cluster-capacity --podspec=/test-pod/pod.yaml --verbose restartPolicy: "Never" serviceAccountName: cluster-capacity-sa volumes: - name: test-volume configMap: name: cluster-capacity-configmap
- 1
- Variable d'environnement obligatoire permettant à l'outil de capacité de cluster de savoir qu'il s'exécute dans un cluster en tant que pod.
La clépod.yaml
de l'objetConfigMap
est la même que le nom du fichier de spécificationPod
, bien qu'elle ne soit pas obligatoire. Ainsi, le fichier spec du pod d'entrée est accessible à l'intérieur du pod en tant que/test-pod/pod.yaml
.
Exécutez l'image de capacité de cluster en tant que tâche dans un module :
$ oc create -f cluster-capacity-job.yaml
Consultez les journaux de travail pour connaître le nombre de pods pouvant être planifiés dans le cluster :
$ oc logs jobs/cluster-capacity-job
Exemple de sortie
small-pod pod requirements: - CPU: 150m - Memory: 100Mi The cluster can schedule 52 instance(s) of the pod small-pod. Termination reason: Unschedulable: No nodes are available that match all of the following predicates:: Insufficient cpu (2). Pod distribution among nodes: small-pod - 192.168.124.214: 26 instance(s) - 192.168.124.120: 26 instance(s)