2016-05-25 12 views
5

Kubernetes kümesinin dışında sorgulanacak "kube-dns" hizmetini göstermeye çalışıyorum. Bunu yapmak için "Hizmet" tanımını, "ClusterIP" den "type" i değiştirmek için "NodePort" olarak değiştirdim. Ben düğüm noktası üzerinde sorgulamak çalıştığınızdaKube-dns hizmetini küme dışındaki sorgular için nasıl görüntüleyebilirsiniz?

Ancak, bir TCP oturumu (Telnet ile test) elde edebilir değilim ama DNS sunucusu (kazmak ile test) herhangi bir yanıt almak için görünmüyor olabilir.

ben "kube-dns" Pod üzerinde konteynerlerin her biri üzerinde günlükleri bir göz yaşadım ama şanssız bir şey göremiyorum. Ayrıca, DNS'yi kümeden (sorgulayan bir kapsayıcıdan) sorgulamak herhangi bir sorun olmadan çalışır.

önce kimsenin kube-dns hizmeti ortaya çıkarmak için çalıştı mı? Öyleyse, ek kurulum adımları var mı yoksa benim için hata ayıklama tavsiyeniz var mı?

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

cevap

2

Eğer TCP portu veya UDP bağlantı noktası üzerinde sorgulama Are şu şekildedir:

hizmet tanımıdır?

Bir NodePort hizmeti olmak benim kube-dns değiştirdi:

$ 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 

ve sonra küme dışından ve her şeyi udp bağlantı noktasında sorgulanan çalıştığı görüldü:

$ 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 

Şu anda , Kubernetes NodePort hizmetleri tcp & uDP (Sorun #20092 bakınız) için aynı bağlantı noktasını paylaşmak için izin vermez. Bu, DNS gibi bir şey için biraz korkak yapar.

DÜZENLEME: böcek Kubernetes 1.3 giderilmiştir. beklendiği gibi

+0

Nitekim UDP port sorgulama çalışır. Bunun için teşekkür ederim! İlginç bir böcek. – srkiNZ84

+0

Yup. NodePort hizmetleri tasarlandığında gözden kaçan bir durum. Senin için çalıştığıma sevindim. –

+0

Hata, Kubernetes 1.3'te düzeltildi. – iTayb

İlgili konular