Creating clusters in the cloud (GCP, AWS, Azure, Digital Ocean)
Creating clusters locally is fun. It's also 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.
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: https://github.com/kubernetes/cloud-provider/blob/master/cloud.go
Here is the main interface:
type Interface interface { Initialize(clientBuilder ControllerClientBuilder, stop <-chan struct{}) LoadBalancer() (LoadBalancer, bool) Instances() (Instances, bool) InstancesV2() (InstancesV2...