将grafana从头盔安装到kubernetes-sigs / kind时,为什么服务没有任何活动的Endpoint?

时间:2019-06-29 17:50:01

标签: kubernetes kubernetes-helm

https://github.com/kubernetes-sigs/kind-版本0.4.0 从kubernetes-sigs / kind创建kubernetes

kind create cluster
Creating cluster "kind" ...
 ✓ Ensuring node image (kindest/node:v1.15.0) ?

kubectl创建服务帐户

kubectl create serviceaccount --namespace kube-system tiller
serviceaccount/tiller created

kubectl创建clusterrolebinding

kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
clusterrolebinding.rbac.authorization.k8s.io/tiller-cluster-rule created

kubectl修补程序部署

kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
deployment.extensions/tiller-deploy patched


helm init

helm install stable/nginx-ingress

helm install --name grafana stable/grafana --set=ingress.enabled=True,ingress.hosts={grafana.domain.com} --namespace demo --set rbac.create=true

kubectl日志loping-wallaby-nginx-ingress-controller-76d574f8b7-5m6n5

W0629 17:13:59.709497       6 controller.go:797] Service "demo/grafana" does not have any active Endpoint.
[29/Jun/2019:17:14:03 +0000]TCP200000.000
I0629 17:14:45.223234       6 status.go:295] updating Ingress demo/grafana status from [] to [{ }]
I0629 17:14:45.226343       6 event.go:209] Event(v1.ObjectReference{Kind:"Ingress", Namespace:"demo", Name:"grafana", UID:"228cde81-cb97-4313-ad86-90a273b2206d", APIVersion:"extensions/v1beta1", ResourceVersion:"1938", FieldPath:""}): type: 'Normal' reason: 'UPDATE' Ingress demo/grafana

kubectl获取入口-所有命名空间

NAMESPACE   NAME      HOSTS                ADDRESS   PORTS   AGE
demo        grafana   grafana.domain.com             80      3m58s

kubectl get svc --all-namespaces -l app = grafana

NAMESPACE   NAME      TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
default     grafana   ClusterIP   10.104.203.243   <none>        80/TCP    24m

kubectl获取端点

NAME                                           ENDPOINTS                      AGE
grafana                                        10.244.0.10:3000               21m
kubernetes                                     172.17.0.2:6443                56m
loping-wallaby-nginx-ingress-controller        10.244.0.8:80,10.244.0.8:443   48m
loping-wallaby-nginx-ingress-default-backend   10.244.0.7:8080                48m

谢谢!

2 个答案:

答案 0 :(得分:0)

您将服务类型用作“ ClusterIp”,因此您将不会获得外部IP地址。 将服务类型更改为“ Loadbalancer”,然后您将获得可以通过Internet浏览的IP地址。

答案 1 :(得分:0)

关于您当前情况的一些担忧:

  1. 您必须检查已安装的nginx-ingress舵图,以找出为什么grafana服务驻留在单独的命名空间default中,而不是驻留在demo命名空间中头盔部署参数--namespace demo

  2. 由于您未在helm install命令controller.service.type参数中指定,因此Nginx Ingress Controller将使用LoadBalancer类型的相关服务来实现,在这种情况下,Ingress Controller会期望以使用云提供商的负载平衡器接收外部IP地址,并且我认为您当前的kubernetes供应商kubernetes-sigs/kind不是采用对Kubernetes群集的向外访问的好选择。因此,我建议对Nginx Ingress控制器使用NodePort服务,以便在主机的某些特定端口上公开80和443端口。

    helm install --name grafana stable/grafana --set=ingress.enabled=True,ingress.hosts={grafana.domain.com} --namespace demo --set rbac.create=true --controller.service.type=NodePort

  3. 您提到的问题更像是无害的,并且不会显着影响Nginx Ingress Controller的功能,因为这意味着在短时间内Liveness尚未启动对Grafana Pod的探测,并且在Grafana Helm图表部署期间尚未发布target enpoint。您甚至可以重新生成Nginx Ingress控制器Pod以证明我的假设合理。