⚠️ Deprecation notice
This preview integration of IoT Edge 1.x and Kubernetes will not be made generally available, and is no longer supported. The recommended way to run IoT Edge 1.x on Kubernetes is noted in the product's official docs
Adjust Deployment strategy
The default module update behavior is RollingUpdate
. This spins up a new instance
of the module and ensures it is running before tearing down the old instance. This
is great for reducing module downtime, however there are conditions where this update
strategy does not work.
If a module is using an exclusive resource like a persistent volume of type
ReadWriteOnce
or a device plugin resource like a GPU, the new instance remains in
the pending state until the old instance relinquishes the held resource. At the same
time, the old instance is not removed until the new instance starts running. So,
things are deadlocked and the update process becomes stuck indefinitely.
To avoid this condition, adjust the createOptions of a module that is using exclusive
resources by setting its deployment strategy to Recreate
.
💣
Recreate
deployment strategy can increase module downtime as the old module instance is torn down before the new instance starts running. If the update specifies a new container image, for example, the module will remain down until the new image is pulled and started.