Creating clusters in the cloud (GCP, AWS, and Azure)
Creating clusters locally is fun, and important during development and when trying to troubleshoot problems locally. But in the end, Kubernetes is designed for cloud-native applications (applications that run in the cloud). Kubernetes doesn't want to be aware of individual cloud environments because that doesn't scale. Instead, Kubernetes has the concept of a cloud-provider interface. Every cloud provider can implement this interface and then host Kubernetes. Note that, as of version 1.5, Kubernetes still maintains implementations for many cloud providers in its tree, but in the future, they will be refactored out.
The cloud-provider interface
The cloud-provider interface is a collection of Go data types and interfaces. It is defined in a file called cloud.go
, available at http://bit.ly/2fq4NbW. Here is the main interface:
type Interface interface { Initialize(clientBuilder controller.ControllerClientBuilder) LoadBalancer() (LoadBalancer...