## 5 Genericity: Qualitative Assessment of Unique Features
### Kubernetes  
With respect to the sub-aspect \"installation methods and tools\" multiple public cloud providers exploit commercial Kubernetes-as-a-Service offerings [344].  
This wide support from public cloud providers has also ensured various unique features in the open-source distribution of Kubernetes to improve the integration with cloud platforms. Most of these features belong to the sub-aspect \"service discovery and external access\" and include _automated integration with load balancing services of cloud providers_[146], _synchronization with external DNS providers_[345] and _IP masquerading_ when Pods send messages to IP addresses outside of the Pod CIDR range [346].  
With respect to CO framework customization, Kubernetes is much more extensible than the other CO frameworks [347]; more specifically, the following types of customizations to Kubernetes are supported: _cloud-provider specific functionality_[348], _API object annotations_[349], _API extension_[350] and _API aggregation_[351] and _hardware-specific device plugins_[352].  
With respect to application configuration and deployment, Kubernetes offers support for _vertical Pod auto-scaling_[353] and the concept of _Podpresets_ that helps developers to reuse the same piece of configuration code across multiple Pod configuration files [354]. Moreover, with respect to the sub-aspect \"persistent volumes\", Kubernetes offers _automated support for deploying and managing database clusters_[355], _raw block storage_[356], _on-line re-sizing of persistent volumes_ without having to restart Pods [357] and support for _dynamically limiting the maximum number of volumes that can be attached to a node_[358].  
With respect to container QoS management, Kubernetes offers concepts for _stronger performance isolation guarantees_ for memory [359] and CPU resources [360]. Moreover, it allows cluster administrators to define _custom node resources_ of random kind with the limitation that resource quantities must be integers and oversubscription is not support [361].  
With respect to cluster security, Kubernetes provides support for _auditing_[362], _authentication and authorization for access to the HTTP API of worker agents_[363] and _network policies_[364] that are specifications of how groups of Pods are allowed to communicate with each other.  
With respect to container security, Kubernetes offers _Pod security policies_ for admission control of Pods to validate that Pods have declared the appropriate access control profiles, Linux capabilities, and privileges [365]. Kubernetes also offers a _Linux sysctl interface_[366] that enables cluster administrators to modify Linux kernel parameters at runtime and in a safe manner.  
Finally, Kubernetes exhibits unique features in several applications and cluster management sub-aspects: (i) with respect to the sub-aspect \"monitoring resource usage and health\", it supports a _cluster autoscaler_[367] for automatically adding or removing nodes to a cluster, (ii) with respect to the sub-aspect \"logging and debugging of CO framework and containers\", Kubernetes supports _port forwarding_[368] that allows a developer to connect his local workstation to a running Pod, (iii) with respect to the sub-aspect \"cluster maintenance\", Kubernetes supports a _disruption budget_[369] enabling an application manager to limit the number of concurrent voluntary disruptions that his application experiences due to cluster maintenance operations, and (iv) with respect to the sub-aspect \"multi-cloud support\", Kubernetes offers a separate _federated API_ with federated instantiations of several single-cluster API objects [370] such as deployments. This API is implemented by a separate policy-based controller plane that additionally supports _federated management of service shards_ that are running across multiple clusters in different availability zones [371].