The infrastructure-as-a-service paradigm for cloud computing lets service providers execute applications on third-party infrastructures with a pay-as-you-go billing model. Providers can balance operational costs and quality of service by monitoring application behavior and changing the deployed configuration at runtime as operating conditions change. Current approaches for automatically scaling cloud applications exploit user-defined rules that respond well to predictable events but don't react adequately to unexpected execution conditions. The authors' autonomic controllers, designed using Kriging models, automatically adapt to unpredicted conditions by dynamically updating a model of the system's behavior. © 1997-2012 IEEE.