Koziolek, HeikoBurger, AndreasGrunske, LarsSiegmund, JanetVogelsang, Andreas2022-01-192022-01-192022978-3-88579-714-2https://dl.gi.de/handle/20.500.12116/37968Industrial control systems (e.g. programmable logic control\-lers, PLC or distributed control systems, DCS) cyclically execute control algorithms to automated production processes. Nowadays, for many applications their deployment is moving from dedicated embedded controllers into more flexible container environments, thus becoming ''Virtual PLCs''. It is difficult to update such containerized Virtual PLCs during runtime by switching to a newer instance, which requires transferring internal state. Former research has only proposed dynamic update approaches for single embedded controllers, while other work introduced special Kubernetes (K8s) state replication approaches, which did not support cyclic real-time applications. We propose a dynamic update mechanism for Virtual PLCs deployed as K8s microservices. This approach is based on a purpose-built K8s Operator and allows control application updates without halting the production processes. Our experimental validation shows that the approach can support the internal state transfer of large industrial control applications (100.000 state variables) within only 15 percent of the available cycle slack time. Therefore, the approach creates vast opportunities for updating applications on-the-fly and migrating them between nodes in a cloud-native fashion.enSoftware architecturePLC programsKubernetesDockerMicroservicesKubernetes OperatorPerformance evaluationStateful applicationsDynamic software updatesOPC UADynamic Updates of Virtual PLCs deployed as Kubernetes MicroservicesText/Conference Paper10.18420/se2022-ws-0161617-5468