Ich versuche, den "kube-dns" -Service verfügbar zu machen, um außerhalb des Kubernetes-Clusters abgefragt zu werden. Um dies zu tun, habe ich die "Service" -Definition bearbeitet, um "Typ" von "ClusterIP" zu "NodePort" zu ändern, was gut zu funktionieren schien.Wie wird der kube-dns-Dienst für Abfragen außerhalb des Clusters verfügbar gemacht?
Wenn ich jedoch versuche, auf dem Node-Port abzufragen, bin ich in der Lage, eine TCP-Sitzung zu erhalten (Test mit Telnet), kann aber keine Antwort vom DNS-Server bekommen (Test mit dig).
Ich habe die Logs auf jedem der Container auf dem "kube-dns" Pod durchgesehen, kann aber nichts Ungewöhnliches sehen. Darüber hinaus scheint das Abfragen des DNS innerhalb des Clusters (von einem aktiven Container) ohne Probleme zu funktionieren.
Hat jemand versucht, den kube-dns-Dienst vorher zu entlarven? Wenn ja, gibt es zusätzliche Einrichtungsschritte oder haben Sie einen Debugging-Tipp für mich?
Die Service-Definition lautet wie folgt:
$ kubectl get service kube-dns -o yaml --namespace kube-system
apiVersion: v1
kind: Service
metadata:
...
spec:
clusterIP: 10.0.0.10
ports:
- name: dns
nodePort: 31257
port: 53
protocol: UDP
targetPort: 53
- name: dns-tcp
nodePort: 31605
port: 53
protocol: TCP
targetPort: 53
selector:
k8s-app: kube-dns
sessionAffinity: None
type: NodePort
status:
loadBalancer: {}
Tatsächlich funktioniert die Abfrage des UDP-Ports wie erwartet. Danke für das! Interessanter Fehler. – srkiNZ84
Yup. Ein übersehener Fall, als NodePort-Dienste entworfen wurden. Froh, dass das für dich funktioniert hat. –
Der Bug wurde in Kubernetes 1.3 behoben. – iTayb