If you have an Apache Ignite deployment on Kubernetes with Linux containers
using the DotNet C# Ignite client, how do you trigger graceful shutdown of
the node?

Kubernetes emits a SIGTERM signal to the pod when it wants to remove it.
That signal is relayed to the process running in the pod identified in the
Docker configuration

In our YAML file we start the Ignite node in the pod like this:

        command: ["dotnet"]
        args: ["SomeNode.dll"]

When it comes time to stop that Ignite node Kubernetes emits the SIGTERM to
the pod. It appears the 'dotnet' context catches the SIGTERM and it is not
relayed into the SomeNode.dll logic.

We have several means of catching the SIGTERM configured in our application
startup logic:

        AppDomain.CurrentDomain.ProcessExit += (s, e) =>  SigTermHandler ;
        AssemblyLoadContext.Default.Unloading += SigTermHandler;
        Console.CancelKeyPress += (s, e) =>  SigTermHandler  ;

However the SigTermHandler is never called in our application logic, which
means the node is then hard killed with a SIGKILL after the termination
grace period configured for the pod.

If you have a similar tool chain and deployment context, how are you
ensuring the Ignite node implementation gets the SIGTERM and shuts down
gracefully?

Thanks,
Raymond.

-- 
<http://www.trimble.com/>
Raymond Wilson
Trimble Distinguished Engineer, Civil Construction Software (CCS)
11 Birmingham Drive | Christchurch, New Zealand
raymond_wil...@trimble.com

<https://worksos.trimble.com/?utm_source=Trimble&utm_medium=emailsign&utm_campaign=Launch>

Reply via email to