Wie erhalte ich Zugang zu diesem Kubernetes-service über kubectl proxy?
Möchte ich den Zugriff auf meine Grafana Kubernetes-service über die kubectl proxy-server, aber aus irgendeinem Grund funktioniert es nicht, obwohl ich es machen kann, für andere Dienstleistungen. Angesichts der unter service-definition, warum ist es nicht auf http://localhost:8001/api/v1/proxy/namespaces/monitoring/services/grafana?
grafana-service.yaml
apiVersion: v1
kind: Service
metadata:
namespace: monitoring
name: grafana
labels:
app: grafana
spec:
type: NodePort
ports:
- name: web
port: 3000
protocol: TCP
nodePort: 30902
selector:
app: grafana
grafana-Bereitstellung.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
namespace: monitoring
name: grafana
spec:
replicas: 1
template:
metadata:
labels:
app: grafana
spec:
containers:
- name: grafana
image: grafana/grafana:4.1.1
env:
- name: GF_AUTH_BASIC_ENABLED
value: "true"
- name: GF_AUTH_ANONYMOUS_ENABLED
value: "true"
- name: GF_SECURITY_ADMIN_USER
valueFrom:
secretKeyRef:
name: grafana-credentials
key: user
- name: GF_SECURITY_ADMIN_PASSWORD
valueFrom:
secretKeyRef:
name: grafana-credentials
key: password
volumeMounts:
- name: grafana-storage
mountPath: /var/grafana-storage
ports:
- name: web
containerPort: 3000
resources:
requests:
memory: 100Mi
cpu: 100m
limits:
memory: 200Mi
cpu: 200m
- name: grafana-watcher
image: quay.io/coreos/grafana-watcher:v0.0.5
args:
- '--watch-dir=/var/grafana-dashboards'
- '--grafana-url=http://localhost:3000'
env:
- name: GRAFANA_USER
valueFrom:
secretKeyRef:
name: grafana-credentials
key: user
- name: GRAFANA_PASSWORD
valueFrom:
secretKeyRef:
name: grafana-credentials
key: password
resources:
requests:
memory: "16Mi"
cpu: "50m"
limits:
memory: "32Mi"
cpu: "100m"
volumeMounts:
- name: grafana-dashboards
mountPath: /var/grafana-dashboards
volumes:
- name: grafana-storage
emptyDir: {}
- name: grafana-dashboards
configMap:
name: grafana-dashboards
Den Fehler sehe ich beim Zugriff auf die oben genannte URL ist "keine Endpunkte verfügbar für den Dienst "grafana"", error-code 503.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie Michael sagt, sehr wahrscheinlich Ihre Etiketten oder namespaces werden nicht übereinstimmende. Aber zusätzlich zu, dass, Bedenken Sie, dass selbst wenn Sie zu beheben, den Endpunkt der url, die Sie bist nach (http://localhost:8001/api/v1/proxy/namespaces/monitoring/services/grafana) funktioniert möglicherweise nicht richtig.
Je nach root_url und/oder static_root_path grafana-Konfiguration-Einstellungen, wenn Sie versuchen, anmelden erhalten Sie möglicherweise grafana versuchen zu buchen, um http://localhost:8001/login und erhalten Sie einen 404.
Versuchen Sie es mit kubectl port-forward statt:
kubectl -n monitoring port-forward [grafana-pod-name] 3000
dann Zugriff grafana über http://localhost:3000/
https://kubernetes.io/docs/tasks/access-application-cluster/port-forward-access-application-cluster/
Das Problem ist, dass Grafana Hafen ist benannt web, und als Ergebnis muss man anfügen
:web
zu den kubectl proxy-URL: http://localhost:8001/api/v1/proxy/namespaces/monitoring/services/grafana:web.Alternative ist, statt nicht Namen die Grafana-port, denn dann müssen Sie nicht Anhängen
:web
zu den kubectl proxy-URL für den service: http://localhost:8001/api/v1/proxy/namespaces/monitoring/services/grafana:web. Ich ging mit dieser option in das Ende, da es einfacher ist.Ihre Bereitstellung kann nicht über eine label-app: grafana, oder in einem anderen Namensraum. Konnte Sie auch nach der Implementierung-definition?
Gibt es ein paar Faktoren, die möglicherweise dieses Problem verursachen.
Erwartet, dass der Dienst findet ein oder mehr der Unterstützung-Endpunkte, die Sie entdeckt durch matching-Regeln auf den Etiketten. Wenn die labels nicht ausgerichtet, dann ist der service nicht finden, Endgeräte und der Netzwerk-gateway-Funktion, durchgeführt durch das service wird in Folge 503.
Den Anschluss erklärte der POD und der Prozess innerhalb des Containers sind falsch ausgerichtet von der
--target-port
erwartet von dem service.Entweder einer von diesen könnte den Fehler generiert. Werfen wir einen genaueren Blick.
Zunächst
kubectl describe
service:Feststellen, dass meine grafana-service hat 1 aufgeführten Endpunkt (es könnten mehrere). Der Fehler oben in deinem Beispiel gibt an, dass Sie nicht haben, Endpunkte hier aufgelistet.
Werfen wir einen Blick weiter auf die Selektoren. Im Beispiel oben können Sie sehen, ich habe 3 Wahlschalter Etiketten auf mein service:
Werde ich
kubectl describe
meine Hülsen weiter:Beachten Sie, dass die Etiketten auf der
pod
korrekt ausgerichtet, daher ist mein service findetpods
dieendpoints
die symmetrische Belastung vor, indem Sie dieservice
. Stellen Sie sicher, dass dieser Teil der Kette ist nicht gebrochen in Ihrer Umgebung.Wenn Sie feststellen, dass die Etiketten korrekt sind, können Sie noch eine Trennung in die grafana-Prozess läuft innerhalb der
container
innerhalb derpod
läuft auf einem anderen port als erwartet.Wenn aus irgendeinem Grund, Ihr
port
unter die container aufgelistet, um einen anderen Wert, dann ist der Dienst effektiv load balancing gegen einen ungültigen Endpunkt.Zum Beispiel, wenn Sie port 80:
Port: 80/TCP
Oder war das ein leerer Wert
Port:
Dann auch wenn Ihr label-Selektoren waren korrekt, der service würde nie eine gültige Antwort aus dem pod und würde entfernen Sie den Endpunkt aus der Drehung.
Ich vermute, Ihr Problem ist das erste problem oben (nicht übereinstimmende label-Selektoren).
Wenn sowohl die label-als Wähler und die Anschlüsse ausrichten, dann haben Sie möglicherweise ein problem mit der MTU-Einstellung zwischen den Knoten. In einigen Fällen, wenn die MTU verwendet, die von Ihrem Netzwerk-Schicht (wie calico) ist größer als die MTU des unterstützenden Netzwerks, dann wirst du nie eine gültige Antwort vom Endpunkt aus. Normalerweise ist dies der Letzte mögliche Problem manifestiert sich als ein timeout, anstatt 503 obwohl.