Próbuję odsłonić usługę "kube-dns", aby była dostępna do odpytania poza klastrem Kubernetes. W tym celu edytowałem definicję "usługi", aby zmienić "typ" z "ClusterIP" na "NodePort", co wydawało się działać dobrze.Jak ujawnić usługę kube-dns dla zapytań poza klastrem?
Jednak, gdy próbuję wykonać zapytanie na porcie węzła, jestem w stanie uzyskać sesję TCP (testowanie za pomocą Telnet), ale nie mogę uzyskać odpowiedzi od serwera DNS (testowanie za pomocą wykopu).
Przejrzałem logi na każdym z pojemników w kapsule "kube-dns", ale nie widziałem nic podejrzanego. Ponadto wydaje się, że wysyłanie zapytań do serwera DNS z poziomu klastra (z uruchomionego kontenera) działa bez żadnych problemów.
Czy ktoś próbował wcześniej ujawnić usługę kube-dns? Jeśli tak, czy są jakieś dodatkowe czynności konfiguracyjne lub czy masz dla mnie jakieś porady dotyczące debugowania?
Definicja usług jest następujący:
$ 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: {}
Rzeczywiście, zapytanie do portu UDP działa zgodnie z oczekiwaniami. Dziękuję za to! Interesujący błąd. – srkiNZ84
Yup. Przeoczony przypadek, w którym zaprojektowano usługi NodePort. Cieszę się, że pracował dla ciebie. –
Błąd został naprawiony w Kubernetes 1.3. – iTayb