Configuration et gestion des ressources

Module K2

Dalibo SCOP

26.09

10 septembre 2026

Sur ce document

Formation Module K2
Titre Configuration et gestion des ressources
Révision 26.09
PDF https://dali.bo/k2_pdf
EPUB https://dali.bo/k2_epub
HTML https://dali.bo/k2_html
Slides https://dali.bo/k2_slides
TP https://dali.bo/k2_tp
TP (solutions) https://dali.bo/k2_solutions

Licence Creative Commons CC-BY-NC-SA

Cette formation est sous licence CC-BY-NC-SA. Vous êtes libre de la redistribuer et/ou modifier aux conditions suivantes :

  • Paternité
  • Pas d’utilisation commerciale (y compris IA)
  • Partage des conditions initiales à l’identique

Marques déposées

PostgreSQL® Postgres® et le logo Slonik sont des marques déposées par PostgreSQL Community Association of Canada.

Versions de PostgreSQL couvertes

Ce document ne couvre que les versions supportées de PostgreSQL au moment de sa rédaction, soit les versions 14 à 18.

Configuration et gestion des ressources

Introduction

  • CloudNativePG automatise le déploiement pour nous
  • Quid de la configuration des ressources ?
  • Adapter la configuration PostgreSQL est indispensable

Au menu

  • Notions de base des ressources d’un Pod
  • Configuration dans la ressource Cluster et de l’opérateur
  • Quality of Service Class d’un Pod
  • Configuration des instances PostgreSQL

D’abord sur Kubernetes

Configuration des ressources

  • RAM, CPU
  • et les Huge Pages si activées
  • Configuration optionnelle

Configuration des ressources avec CloudNativePG

  • Section spec.resources d’un objet Cluster
    • requests et limits
  • Allouées à chaque Pod
    • Pour PostgreSQL…
    • …mais pas que
      • instance-manager
      • autres outils ?
  • Identiques pour les primaires et secondaires

Exemple de Cluster configuré

apiVersion: postgresql.cnpg.io/v1
kind: Cluster
[]
spec:
[]
  resources:
    requests:
      memory: "2Gi"
      cpu: "0.2"
    limits:
      memory: "2Gi"
      cpu: "0.2"

Configuration des ressources de l’opérateur

  • Pod dans le Namespace cnpg-system
  • On peut donc lui attribuer des ressources
  • Une configuration par défaut existe
    Limits:
      cpu:     100m
      memory:  200Mi
    Requests:
      cpu:      100m
      memory:   100Mi

QoS Class

  • Quality of Service Class
    • Guaranteed
    • Burstable
    • Best Effort
  • Associée à chaque Pod
  • Selon les requests/limits attribuées

Puis sur PostgreSQL

Configuration des instances PostgreSQL

  • Avoir PostgreSQL adapté aux ressources attribuées
  • Configuration par défaut
    • Fixed Parameters
  • Reconfiguration minimale de certains paramètres
  • Rappel :
    • Tout faire dans la ressource Cluster

Configuration par défaut

  • Chaque paramètre PostgreSQL a une valeur par défaut
  • Peuvent être modifiés à différents endroits :
    • options passées à initdb (section boostrap)
    • surcharge par l’opérateur CloudNativePG
    • scripts maisons

Fixed Parameters

  • Impossible à modifier

    Can't set fixed configuration parameter
  • Assurer la gestion de l’instance par l’opérateur

  • Des paramètres peu modifiés en général

Reconfiguration minimale de certains paramètres

  • Adapter vos instances
    • aux ressources
    • à votre infrastructure
    • à vos besoins

Paramètres mémoire

  • Mémoire partagée
    • shared_buffers
  • Mémoire de travail
    • work_mem
    • maintenance_work_mem

Paramètres des journaux de transaction et disque

  • wal_level
  • effective_io_concurrency

Paramètres du planificateur

  • effective_cache_size
  • random_page_cost

Paramètres de parallélisation

  • max_parallel_workers
  • max_worker_processes

Conclusion

  • Configuration
  • Adaptation
  • Attention, des choses restent à faire !

Questions

N’hésitez pas, c’est le moment !

Quiz

Travaux pratiques

La version en ligne des solutions de ces TP est disponible sur https://dali.bo/k2_solutions.

Travaux pratiques (solutions)