Kubernetes High-Availability Software Architecture Options for Two-Node Clusters in IoT Applications
This program is tentative and subject to change.
Distributed Control Systems used in industrial automation comprise numerous real-time embedded controllers and server-side supervisory software, enabling continuous operation of product plants (power, chemicals, metals, etc.). Future control systems are envisioned to rely on microservice architectures and benefit from cloud-native technologies including container-based virtualization. Kubernetes, being the de-facto standard for container orchestration, provides a number of options for high-availability, which is vital for industrial processes. The builtin options for high-availability in Kubernetes utilize consensus protocols requiring at least three nodes to achieve a quorum. However, many small-scale industrial sites are typically equipped with only two supervisory server nodes to save costs. Customers are reluctant to add additional resources for the use of Kubernetes in such smaller facilities, thus requiring alternative mechanisms for achieving high-availability. In this paper, we provide an overview of high-availability mechanisms for two-node Kubernetes clusters and report on our experiences with a custom solution. We find that a variety of viable solutions exist, each with its own benefits and drawbacks, providing software architects for various IoT applications knowledge to make informed trade-off decisions.