diff --git a/patroni/__init__.py b/patroni/__init__.py index ba7a803e..8a8899b1 100644 --- a/patroni/__init__.py +++ b/patroni/__init__.py @@ -9,6 +9,7 @@ from patroni.version import __version__ logger = logging.getLogger(__name__) PATRONI_ENV_PREFIX = 'PATRONI_' +KUBERNETES_ENV_PREFIX = 'KUBERNETES_' class Patroni(object): diff --git a/patroni/postgresql/postmaster.py b/patroni/postgresql/postmaster.py index 6ee51d26..b95ead33 100644 --- a/patroni/postgresql/postmaster.py +++ b/patroni/postgresql/postmaster.py @@ -7,7 +7,7 @@ import signal import subprocess import sys -from patroni import PATRONI_ENV_PREFIX +from patroni import PATRONI_ENV_PREFIX, KUBERNETES_ENV_PREFIX # avoid spawning the resource tracker process if sys.version_info >= (3, 8): # pragma: no cover @@ -176,7 +176,8 @@ class PostmasterProcess(psutil.Process): # In order to make everything portable we can't use fork&exec approach here, so we will call # ourselves and pass list of arguments which must be used to start postgres. # On Windows, in order to run a side-by-side assembly the specified env must include a valid SYSTEMROOT. - env = {p: os.environ[p] for p in os.environ if not p.startswith(PATRONI_ENV_PREFIX)} + env = {p: os.environ[p] for p in os.environ if not p.startswith( + PATRONI_ENV_PREFIX) and not p.startswith(KUBERNETES_ENV_PREFIX)} try: proc = PostmasterProcess._from_pidfile(data_dir) if proc and not proc._is_postmaster_process():