8.2. Estimer le nombre de pods que vos nœuds dédiés OpenShift peuvent contenir
En tant qu’administrateur de cluster, vous pouvez utiliser l’outil OpenShift Cluster Capacity Tool pour afficher le nombre de pods qui peuvent être programmés pour augmenter les ressources actuelles avant qu’elles ne soient épuisées, et pour s’assurer que tous les futurs pods peuvent être programmés. Cette capacité provient d’un hôte de nœuds individuel dans un cluster, et comprend le CPU, la mémoire, l’espace disque et d’autres.
8.2.1. Comprendre l’outil de capacité de cluster OpenShift Copier lienLien copié sur presse-papiers!
L’outil OpenShift Cluster Capacity Tool simule une séquence de décisions de planification pour déterminer combien d’instances d’un pod d’entrée peuvent être programmées sur le cluster avant qu’il ne soit épuisé des ressources pour fournir une estimation plus précise.
La capacité allocatable restante est une estimation approximative, car elle ne compte pas toutes les ressources distribuées entre les nœuds. Il analyse uniquement les ressources restantes et estime la capacité disponible qui est encore consommable en fonction d’un certain nombre de cas d’une pod avec des exigences données qui peuvent être programmées dans un cluster.
En outre, les gousses peuvent seulement avoir un support de planification sur des ensembles particuliers de nœuds en fonction de ses critères de sélection et d’affinité. En conséquence, il peut être difficile d’estimer les pods restants d’un cluster.
Il est possible d’exécuter l’outil OpenShift Cluster Capacity Tool en tant qu’utilitaire autonome à partir de la ligne de commande, ou en tant que travail dans un pod à l’intérieur d’un cluster dédié OpenShift. L’exécution de l’outil en tant que travail à l’intérieur d’un pod vous permet de l’exécuter plusieurs fois sans intervention.
8.2.2. Exécution de l’outil OpenShift Cluster Capacity Tool sur la ligne de commande Copier lienLien copié sur presse-papiers!
À partir de la ligne de commande, vous pouvez exécuter l’outil OpenShift Cluster Capacity Tool pour estimer le nombre de pods pouvant être programmés sur votre cluster.
Créez un exemple de fichier spec de pod, que l’outil utilise pour estimer l’utilisation des ressources. Le pod spec spécifie ses besoins en ressources comme limites ou demandes. L’outil de capacité des clusters tient compte des besoins en ressources de la pod pour son analyse d’estimation.
Conditions préalables
- Exécutez l’outil OpenShift Cluster Capacity Tool, qui est disponible sous forme d’image conteneur à partir du catalogue de l’écosystème Red Hat.
Créer un fichier spec de pod d’échantillon:
Créez un fichier YAML similaire à ce qui suit:
apiVersion: v1 kind: Pod metadata: name: small-pod labels: app: guestbook tier: frontend spec: securityContext: runAsNonRoot: true seccompProfile: type: RuntimeDefault 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 securityContext: allowPrivilegeEscalation: false capabilities: drop: [ALL]Créer le rôle du cluster:
$ oc create -f <file_name>.yamlÀ titre d’exemple:
$ oc create -f pod-spec.yaml
Procédure
D’utiliser l’outil de capacité de cluster sur la ligne de commande:
À partir du terminal, connectez-vous au Registre Red Hat:
$ podman login registry.redhat.ioTirez l’image de l’outil de capacité de cluster:
$ podman pull registry.redhat.io/openshift4/ose-cluster-capacityExécutez l’outil de capacité de cluster:
$ podman run -v $HOME/.kube:/kube:Z -v $(pwd):/cc:Z ose-cluster-capacity \ /bin/cluster-capacity --kubeconfig /kube/config --<pod_spec>.yaml /cc/<pod_spec>.yaml \ --verboselà où:
- <pod_spec>.yaml
- Spécifie le pod spec à utiliser.
- le verbose
- Affiche une description détaillée du nombre de gousses pouvant être programmées 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 gousses estimées pouvant être programmées sur le cluster est de 88.
8.2.3. Exécuter l’outil OpenShift Cluster Capacité en tant que travail à l’intérieur d’un pod Copier lienLien copié sur presse-papiers!
L’exécution de l’outil OpenShift Cluster Capacity Tool en tant que travail à l’intérieur d’un pod vous permet d’exécuter l’outil plusieurs fois sans avoir besoin d’intervention de l’utilisateur. Exécutez l’outil OpenShift Cluster Capacity Tool en tant que travail à l’aide d’un objet ConfigMap.
Conditions préalables
Installez et téléchargez l’outil OpenShift Cluster Capacity Tool.
Procédure
Exécuter l’outil de capacité de cluster:
Créer le rôle du cluster:
Créez un fichier YAML similaire à ce qui suit:
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"]Créez le rôle de cluster en exécutant la commande suivante:
$ oc create -f <file_name>.yamlÀ titre d’exemple:
$ oc create sa cluster-capacity-sa
Créer le compte de service:
$ oc create sa cluster-capacity-sa -n defaultAjouter le rôle au compte de service:
$ oc adm policy add-cluster-role-to-user cluster-capacity-role \ system:serviceaccount:<namespace>:cluster-capacity-salà où:
- <namespace>
- Indique l’espace de noms où se trouve le pod.
Définir et créer le pod spec:
Créez un fichier YAML similaire à ce qui suit:
apiVersion: v1 kind: Pod metadata: name: small-pod labels: app: guestbook tier: frontend spec: securityContext: runAsNonRoot: true seccompProfile: type: RuntimeDefault 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 securityContext: allowPrivilegeEscalation: false capabilities: drop: [ALL]Créez le pod en exécutant la commande suivante:
$ oc create -f <file_name>.yamlÀ titre d’exemple:
$ oc create -f pod.yaml
Créé un objet map config en exécutant la commande suivante:
$ oc create configmap cluster-capacity-configmap \ --from-file=pod.yaml=pod.yamlL’analyse de la capacité du cluster est montée dans un volume à l’aide d’un objet mappage nommé cluster-capacity-configmap pour monter le fichier pod.yaml dans un volume de test de volume sur le chemin /test-pod.
Créez le travail à l’aide de l’exemple ci-dessous d’un fichier de spécification d’emploi:
Créez un fichier YAML similaire à ce qui suit:
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_INCLUSTER1 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
- La variable d’environnement requise permet à l’outil de capacité de cluster de savoir qu’il s’exécute à l’intérieur d’un cluster en tant que pod.
La clé pod.yaml de l’objet ConfigMap est identique au nom du fichier Pod spec, bien qu’il ne soit pas requis. Ce faisant, le fichier d’entrée de pod spec peut être accédé à l’intérieur du pod comme /test-pod/pod.yaml.
Exécutez l’image de capacité de cluster en tant que travail dans un pod en exécutant la commande suivante:
$ oc create -f cluster-capacity-job.yaml
La vérification
Consultez les journaux des tâches pour trouver le nombre de pods pouvant être programmés dans le cluster:
$ oc logs jobs/cluster-capacity-jobExemple 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)