Google Container Engine Auto deleting services/pods

2/11/2016

I am testing goolge container engine and everything was fine until I found this really weird issue.

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.

after exactly 5 minutes, the service was deleted automatically.

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

Anyone got a clue why? thanks.

-- nickinchina
google-kubernetes-engine
kubernetes

2 Answers

2/11/2016

after removing the following from metadata/labels in the yaml file, the problem went away.

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

2/11/2016

The label kubernetes.io/cluster-service=true is a special, reserved label that shouldn't be used by user resources. That's used by a system process that manages the cluster's addons, like the DNS and kube-ui pods that you'll see in your cluster's kube-system namespace.

The reason your service is being deleted is because the system process is checking for resources with that label, seeing one that it doesn't know about, and assuming that it's something that it started previously that isn't meant to exist anymore. This is explained a little more in this doc about cluster addons.

In general, you shouldn't have any labels that are prefixed with kubernetes.io/ on your resources, since that's a reserved namespace.

-- Alex Robinson
Source: StackOverflow