kubernetes本来是为自建机房或者是私有云设计的(blog的诞生就是基于谷歌的大量廉价的计算机集群),所以设计了Service以及ingress做负载均衡。

但是到现在为止,kubernetes在公有云也取得大量的份额。为了更好的让Kubernetes在公有云平台上运行,不仅是kubernetes还有公有云厂商都要做出相应的改变。

本文仅限于自建k8s,如果准备采用成熟的全托管服务,那就只当参考把。

VPC

别用什么所谓的经典网络了,vpc才是未来,如果用阿里云的和flannel的话,还可以使用阿里的vpc作为backend。
参考文章中提到小规模的集群可以用kuberoute

Cloud Provider

为了能复用公有云提供的Node Name,Routes和Load Balancer甚至Block Storage,kubernetes提供了通用的接口,见
https://github.com/kubernetes/kubernetes/blob/master/pkg/cloudprovider/cloud.go

官方文档在这里
https://kubernetes.io/docs/concepts/cluster-administration/cloud-providers/

在 Kubernetes 中有三个组件对 Cloud Provider 有依赖,分别是:

kube-controller-manager
kubelet
kube-apiserver
这三个组件对 Cloud Provider 的依赖部分会最终编译进相应的二进制中,详细的依赖关系图如下所示:
Cloud Provider.png

目前支持的Provider有
AWS
Azure
CloudStack
GCE
OpenStack
OVirt
Photon
VSphere
AWS
目前没有收录国内的云厂商,简单找了一下
https://github.com/AliyunContainerService/alicloud-controller-manager
https://github.com/yunify/qingcloud-cloud-controller-manager

cluster autoscaler

自动扩容Node,一般来说公有云都有自己的API,可以很方便的扩容,相对于Pod的扩容,Node的伸缩更重要些。
官方repo https://github.com/kubernetes/autoscaler
kubernetes 1.8. Works with GCP, AWS and Azure. Version 1.0 (GA)

这个目前来说国内好像是不支持的

参考
Kubernetes:从Cloud Provider到Cloud Controller Mananger全解析
https://blog.csdn.net/hello2mao/article/details/81261364

Kubernetes cluster-autoscaler 解析
https://blog.csdn.net/hello2mao/article/details/80418625

在阿里云上部署生产级别Kubernetes集群
https://jishu.io/kubernetes/deploy-production-ready-kubernetes-cluster-on-aliyun/