Sto tentando di esporre il servizio "kube-dns" per essere disponibile per essere interrogato all'esterno del cluster Kubernetes. Per fare questo ho modificato la definizione "Servizio" per cambiare "tipo" da "ClusterIP" a "NodePort" che sembrava funzionare bene.Come esporre il servizio kube-dns per query al di fuori del cluster?
Tuttavia, quando provo a interrogare sulla porta del nodo, sono in grado di ottenere una sessione TCP (test con Telnet) ma non riesco a ottenere alcuna risposta dal server DNS (test con dig).
Ho dato un'occhiata ai registri su ciascuno dei contenitori sul Pod "kube-dns" ma non vedo nulla di negativo. Inoltre, l'interrogazione del DNS all'interno del cluster (da un contenitore in esecuzione) sembra funzionare senza problemi.
Qualcuno ha provato a esporre il servizio kube-dns in precedenza? In tal caso, ci sono dei passaggi di installazione aggiuntivi o hai qualche consiglio per il debug?
La definizione di servizio è la seguente:
$ 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: {}
Infatti, l'interrogazione della porta UDP funziona come previsto. Grazie per questo! Insetto interessante. – srkiNZ84
Sì. Un caso trascurato quando i servizi NodePort sono stati progettati. Sono contento che abbia funzionato per te. –
Il bug è stato corretto in Kubernetes 1.3. – iTayb