我正在测试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
任何人都知道为什么?感谢。
答案 0 :(得分:0)
标签kubernetes.io/cluster-service=true
是一个特殊的保留标签,不应由用户资源使用。这是由管理群集插件的系统进程使用的,例如您将在群集的kube-system
命名空间中看到的DNS和kube-ui pod。
您的服务被删除的原因是因为系统进程正在检查具有该标签的资源,看到它不知道的资源,并假设它之前已经启动的东西不再存在。这在this doc about cluster addons中有所解释。
通常,您的资源上不应该有任何带有kubernetes.io/前缀的标签,因为这是一个保留的命名空间。
答案 1 :(得分:0)
从yaml文件中的元数据/标签中删除以下内容后,问题就消失了。
**kubernetes.io/cluster-service: "true"
kubernetes.io/name: "Elasticsearch"**