Google 容器引擎自动删除 services/pods

Google Container Engine Auto deleting services/pods

我正在测试 goolge 容器引擎,一切都很好,直到我发现这个非常奇怪的问题。

bash-3.2# kubectl get services --namespace=es

NAME                    CLUSTER_IP      EXTERNAL_IP   PORT(S)    SELECTOR                     AGE
elasticsearch-logging   10.67.244.176   <none>        9200/TCP   name=elasticsearch-logging   5m

bash-3.2# kubectl describe service elasticsearch-logging --namespace=es

Name:           elasticsearch-logging
Namespace:      es
Labels:         k8s-app=elasticsearch-logging,kubernetes.io/cluster-service=true,kubernetes.io/name=Elasticsearch
Selector:       name=elasticsearch-logging
Type:           ClusterIP
IP:         10.67.248.242
Port:           <unnamed>   9200/TCP
Endpoints:      <none>
Session Affinity:   None
No events.

恰好 5 分钟后,该服务被自动删除。

kubectl get events --namespace=es

1m          1m         1         elasticsearch-logging                Service                                                          DeletingLoadBalancer   {service-controller }                                  Deleting load balancer
1m          1m         1         elasticsearch-logging                Service                                                          DeletedLoadBalancer    {service-controller }                                  Deleted load balancer

有人知道为什么吗?谢谢。

标签 kubernetes.io/cluster-service=true 是一个特殊的保留标签,不应由用户资源使用。它由管理集群插件的系统进程使用,例如您将在集群的 kube-system 命名空间中看到的 DNS 和 kube-ui pods。

您的服务被删除的原因是因为系统进程正在检查具有该标签的资源,看到它不知道的资源,并假设它是它之前启动的,而不是为了存在了。这在 this doc about cluster addons.

中有更多解释

一般来说,您的资源上不应有任何以 kubernetes.io/ 为前缀的标签,因为那是保留的命名空间。

从 yaml 文件的 metadata/labels 中删除以下内容后,问题就消失了。

**kubernetes.io/cluster-service: "true"
kubernetes.io/name: "Elasticsearch"**