【发布时间】:2016-08-24 19:33:41
【问题描述】:
我有一个简单的 wordpress 网站,由下面的 ReplicationController 和 Service 定义。应用部署并顺利运行后,我在 Kubernetes 创建的实例组上启用了自动扩展,方法是转到 GCE 控制台并使用相同的设置(最大 5,cpu 10)启用自动扩展。
自动缩放实例和 Pod 似乎工作得很好,只是它们之间总是不同步。 RC 自动缩放会从 CE 实例中移除 pod,但这些实例不会发生任何事情,因此它们会开始失败请求,直到 LB 健康检查失败并移除它们。
有没有办法让 kubernetes 像扩展它们运行的实例一样扩展 pod,这样就不会发生这种情况?或者有没有办法让它们保持同步?
我的流程如下:
创建集群
$ gcloud container clusters create wordpress -z us-central1-c -m f1-micro
创建 rc
$ kubectl create -f rc.yml
创建服务
$ kubectl create -f service.yml
自动缩放 rc
$ kubectl autoscale rc frontend --max 5 --cpu-percent=10
然后我在控制台中启用了自动缩放,并给服务器负载以使其可缩放。
rc.yml
apiVersion: v1
kind: ReplicationController
metadata:
name: frontend
spec:
replicas: 1
template:
metadata:
labels:
app: wordpress
spec:
containers:
- image: custom-wordpress-image
name: wordpress
ports:
- containerPort: 80
hostPort: 80
service.yml
apiVersion: v1
kind: Service
metadata:
labels:
name: frontend
name: frontend
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 80
protocol: TCP
selector:
name: wordpress
更新了解更多信息
如果我不使用 kubernetes 自动扩缩器,而是将副本设置为与实例组自动扩缩器最大实例数相同的数量,我似乎得到了想要的结果。当实例被添加到实例组时,kubernetes 会配置它们,因为它们被删除 kubernetes 会相应地更新。在这一点上,我想知道 Kubernetes 自动扩缩器的目的是什么。
【问题讨论】:
标签: google-compute-engine google-cloud-platform kubernetes gcloud autoscaling