2016-05-25 6 views
5

मैं कुबर्नेट्स क्लस्टर के बाहर पूछे जाने के लिए "क्यूब-डीएनएस" सेवा का खुलासा करने की कोशिश कर रहा हूं। ऐसा करने के लिए मैंने "क्लस्टरआईपी" से "नोडपोर्ट" में "टाइप" को बदलने के लिए "सेवा" परिभाषा संपादित की जो ठीक काम करने लगती थी।क्लस्टर के बाहर प्रश्नों के लिए क्यूब-डीएनएस सेवा का खुलासा कैसे करें?

हालांकि, जब मैं नोड पोर्ट पर पूछताछ करने का प्रयास करता हूं, तो मैं एक टीसीपी सत्र (टेलनेट के साथ परीक्षण) प्राप्त करने में सक्षम हूं लेकिन मुझे DNS सर्वर (खुदाई के साथ परीक्षण) से कोई प्रतिक्रिया नहीं मिल रही है।

मैंने "क्यूब-डीएनएस" पॉड पर प्रत्येक कंटेनर पर लॉग के माध्यम से देखा है लेकिन कुछ भी अवांछित नहीं देख सकता है। इसके अतिरिक्त, क्लस्टर के भीतर से DNS से ​​पूछताछ (किसी चल रहे कंटेनर से) किसी भी समस्या के बिना काम करने लगती है।

क्या किसी ने पहले क्यूब-डीएनएस सेवा का पर्दाफाश करने की कोशिश की है? यदि हां, तो क्या कोई अतिरिक्त सेटअप कदम हैं या क्या आपके पास मेरे लिए कोई डिबगिंग सलाह है?

$ 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: {} 

उत्तर

2

आप TCP पोर्ट या UDP पोर्ट पर जानना चाहते हैं:

सेवा परिभाषा इस प्रकार है?

मैं अपने Kube-dns बदल एक NodePort सेवा होने के लिए:

$ kubectl describe services kube-dns --namespace kube-system 
Name:   kube-dns 
Namespace:  kube-system 
Labels:   k8s-app=kube-dns 
      kubernetes.io/cluster-service=true 
      kubernetes.io/name=KubeDNS 
Selector:  k8s-app=kube-dns 
Type:   NodePort 
IP:   10.171.240.10 
Port:   dns 53/UDP 
NodePort:  dns 30100/UDP 
Endpoints:  10.168.0.6:53 
Port:   dns-tcp 53/TCP 
NodePort:  dns-tcp 30490/TCP 
Endpoints:  10.168.0.6:53 
Session Affinity: None 

और उसके बाद क्लस्टर के बाहर और सब कुछ से UDP पोर्ट पर पूछे काम करने के लिए दिखाई दिया:

$ dig -p 30100 @10.240.0.4 kubernetes.default.svc.cluster.local 

; <<>> DiG 9.9.5-9+deb8u6-Debian <<>> -p 30100 @10.240.0.4 kubernetes.default.svc.cluster.local 
; (1 server found) 
;; global options: +cmd 
;; Got answer: 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45472 
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 

;; QUESTION SECTION: 
;kubernetes.default.svc.cluster.local. IN A 

;; ANSWER SECTION: 
kubernetes.default.svc.cluster.local. 30 IN A 10.171.240.1 

;; Query time: 3 msec 
;; SERVER: 10.240.0.4#30100(10.240.0.4) 
;; WHEN: Thu May 26 18:27:32 UTC 2016 
;; MSG SIZE rcvd: 70 

अभी , कुबेरनेट्स नोडपोर्ट सेवाओं को टीसीपी & udp के लिए एक ही पोर्ट साझा करने की अनुमति नहीं देता है (समस्या #20092 देखें)। यह DNS की तरह कुछ के लिए थोड़ा सा मजेदार बनाता है।

संपादित करें: बग कुबेरनेट 1.3 में तय किया गया था।

+0

दरअसल, यूडीपी बंदरगाह से पूछताछ की अपेक्षा की जाती है। उसके लिये आपका धन्यवाद! दिलचस्प बग – srkiNZ84

+0

यूप। नोडपोर्ट सेवाओं को डिजाइन किए जाने पर एक अनदेखा मामला। खुशी है कि आपके लिए काम किया है। –

+0

बग को कुबेरनेट 1.3 में तय किया गया था। – iTayb

संबंधित मुद्दे