2016-03-25 11 views
5

मैं केंद्र 7 पर कुबेरनेट्स 1.2 में DNS समर्थन सेट अप करने का प्रयास कर रहा हूं। documentation के अनुसार, ऐसा करने के दो तरीके हैं। पहली बार एक "समर्थित Kubernetes क्लस्टर सेटअप" पर लागू होता है और स्थापना के वातावरण चर शामिल है:कुबर्नेट्स DNS कुबर्नेट्स में विफल रहता है 1.2

ENABLE_CLUSTER_DNS="${KUBE_ENABLE_CLUSTER_DNS:-true}" 
DNS_SERVER_IP="10.0.0.10" 
DNS_DOMAIN="cluster.local" 
DNS_REPLICAS=1 

मैं करने के लिए/etc/Kubernetes/config इन सेटिंग्स जोड़ा गया है और कोई प्रभाव के साथ, रिबूट, तो या तो मैं एक की जरूरत नहीं है समर्थित कुबर्नेट क्लस्टर सेटअप (वह क्या है?), या इसके वातावरण को सेट करने के लिए कुछ और आवश्यक है।

दूसरे दृष्टिकोण के लिए अधिक मैन्युअल सेटअप की आवश्यकता है। यह kubelets, जो मैं अद्यतन करने/आदि द्वारा स्थापित करने के लिए दो झंडे कहते हैं/Kubernetes/kubelet शामिल करने के लिए:

KUBELET_ARGS="--cluster-dns=10.0.0.10 --cluster-domain=cluster.local" 

और systemctl restart kubelet साथ kubelet को पुन: प्रारंभ। फिर एक प्रतिकृति नियंत्रक और एक सेवा शुरू करना आवश्यक है। उपरोक्त उद्धृत दस्तावेज़ पृष्ठ इसके लिए कुछ टेम्पलेट फाइलें प्रदान करता है जिसके लिए स्थानीय परिवर्तनों के लिए कुछ संपादन की आवश्यकता होती है (मेरे कुबर्नेट्स एपीआई सर्वर 127.0.0.1 के बजाय होस्टनाम के वास्तविक आईपी पते को सुनता है, जिससे इसे एक - क्यूब-मास्टर-यूआरएल सेटिंग) और कुछ नमक निर्भरताओं को हटाने के लिए। जब मैं ऐसा करते हैं, प्रतिकृति नियंत्रक चार कंटेनरों को सफलतापूर्वक शुरू होता है, लेकिन kube2sky कंटेनर आरंभीकरण पूरा करने के बाद एक मिनट के बारे में समाप्त हो जाता है:

[[email protected] dns]$ kubectl --server="http://centos:8080" --namespace="kube-system" logs -f kube-dns-v11-t7nlb -c kube2sky 
I0325 20:58:18.516905  1 kube2sky.go:462] Etcd server found: http://127.0.0.1:4001 
I0325 20:58:19.518337  1 kube2sky.go:529] Using http://192.168.87.159:8080 for kubernetes master 
I0325 20:58:19.518364  1 kube2sky.go:530] Using kubernetes API v1 
I0325 20:58:19.518468  1 kube2sky.go:598] Waiting for service: default/kubernetes 
I0325 20:58:19.533597  1 kube2sky.go:660] Successfully added DNS record for Kubernetes service. 
F0325 20:59:25.698507  1 kube2sky.go:625] Received signal terminated 

मैं निर्धारित किया है कि समाप्ति healthz कंटेनर द्वारा किया जाता है रिपोर्टिंग के बाद:

2016/03/25 21:00:35 Client ip 172.17.42.1:58939 requesting /healthz probe servicing cmd nslookup kubernetes.default.svc.cluster.local 127.0.0.1 >/dev/null 
2016/03/25 21:00:35 Healthz probe error: Result of last exec: nslookup: can't resolve 'kubernetes.default.svc.cluster.local', at 2016-03-25 21:00:35.608106622 +0000 UTC, error exit status 1 

इसके अलावा, अन्य सभी लॉग सामान्य दिखते हैं। किया गया था आवश्यक जब प्रतिकृति नियंत्रक बनाने --validate = false निर्दिष्ट करने के लिए, यह के रूप में कमान फिर संदेश हो जाता है: हालांकि, वहाँ एक विसंगति है

error validating "skydns-rc.yaml": error validating data: [found invalid field successThreshold for v1.Probe, found invalid field failureThreshold for v1.Probe]; if you choose to ignore these errors, turn validation off with --validate=false 

इस से संबंधित हो सकते हैं? ये तर्क सीधे कुबेरनेट दस्तावेज आते हैं। यदि नहीं, तो यह चलने के लिए क्या आवश्यक है?

apiVersion: v1 
kind: ReplicationController 
metadata: 
    name: kube-dns-v11 
    namespace: kube-system 
    labels: 
    k8s-app: kube-dns 
    version: v11 
    kubernetes.io/cluster-service: "true" 
spec: 
    replicas: 1 
    selector: 
    k8s-app: kube-dns 
    version: v11 
    template: 
    metadata: 
     labels: 
     k8s-app: kube-dns 
     version: v11 
     kubernetes.io/cluster-service: "true" 
    spec: 
     containers: 
     - name: etcd 
     image: gcr.io/google_containers/etcd-amd64:2.2.1 
     resources: 
      # TODO: Set memory limits when we've profiled the container for large 
      # clusters, then set request = limit to keep this container in 
      # guaranteed class. Currently, this container falls into the 
      # "burstable" category so the kubelet doesn't backoff from restarting it. 
      limits: 
      cpu: 100m 
      memory: 500Mi 
      requests: 
      cpu: 100m 
      memory: 50Mi 
     command: 
     - /usr/local/bin/etcd 
     - -data-dir 
     - /var/etcd/data 
     - -listen-client-urls 
     - http://127.0.0.1:2379,http://127.0.0.1:4001 
     - -advertise-client-urls 
     - http://127.0.0.1:2379,http://127.0.0.1:4001 
     - -initial-cluster-token 
     - skydns-etcd 
     volumeMounts: 
     - name: etcd-storage 
      mountPath: /var/etcd/data 
     - name: kube2sky 
     image: gcr.io/google_containers/kube2sky:1.14 
     resources: 
      # TODO: Set memory limits when we've profiled the container for large 
      # clusters, then set request = limit to keep this container in 
      # guaranteed class. Currently, this container falls into the 
      # "burstable" category so the kubelet doesn't backoff from restarting it. 
      limits: 
      cpu: 100m 
      # Kube2sky watches all pods. 
      memory: 200Mi 
      requests: 
      cpu: 100m 
      memory: 50Mi 
     livenessProbe: 
      httpGet: 
      path: /healthz 
      port: 8080 
      scheme: HTTP 
      initialDelaySeconds: 60 
      timeoutSeconds: 5 
      successThreshold: 1 
      failureThreshold: 5 
     readinessProbe: 
      httpGet: 
      path: /readiness 
      port: 8081 
      scheme: HTTP 
      # we poll on pod startup for the Kubernetes master service and 
      # only setup the /readiness HTTP server once that's available. 
      initialDelaySeconds: 30 
      timeoutSeconds: 5 
     args: 
     # command = "/kube2sky" 
     - --domain="cluster.local" 
     - --kube-master-url=http://192.168.87.159:8080 
     - name: skydns 
     image: gcr.io/google_containers/skydns:2015-10-13-8c72f8c 
     resources: 
      # TODO: Set memory limits when we've profiled the container for large 
      # clusters, then set request = limit to keep this container in 
      # guaranteed class. Currently, this container falls into the 
      # "burstable" category so the kubelet doesn't backoff from restarting it. 
      limits: 
      cpu: 100m 
      memory: 200Mi 
      requests: 
      cpu: 100m 
      memory: 50Mi 
     args: 
     # command = "/skydns" 
     - -machines=http://127.0.0.1:4001 
     - -addr=0.0.0.0:53 
     - -ns-rotate=false 
     - -domain="cluster.local" 
     ports: 
     - containerPort: 53 
      name: dns 
      protocol: UDP 
     - containerPort: 53 
      name: dns-tcp 
      protocol: TCP 
     - name: healthz 
     image: gcr.io/google_containers/exechealthz:1.0 
     resources: 
      # keep request = limit to keep this container in guaranteed class 
      limits: 
      cpu: 10m 
      memory: 20Mi 
      requests: 
      cpu: 10m 
      memory: 20Mi 
     args: 
     - -cmd=nslookup kubernetes.default.svc.cluster.local 127.0.0.1 >/dev/null 
     - -port=8080 
     ports: 
     - containerPort: 8080 
      protocol: TCP 
     volumes: 
     - name: etcd-storage 
     emptyDir: {} 
     dnsPolicy: Default # Don't use cluster DNS. 

और skydns-svc.yaml:

apiVersion: v1 
kind: Service 
metadata: 
    name: kube-dns 
    namespace: kube-system 
    labels: 
    k8s-app: kube-dns 
    kubernetes.io/cluster-service: "true" 
    kubernetes.io/name: "KubeDNS" 
spec: 
    selector: 
    k8s-app: kube-dns 
    clusterIP: "10.0.0.10" 
    ports: 
    - name: dns 
    port: 53 
    protocol: UDP 
    - name: dns-tcp 
    port: 53 
    protocol: TCP 

उत्तर

1

मैं बस लाइनों कि में successThreshold और failureThreshold मान होने पर टिप्पणी की

यहाँ skydns-rc.yaml मैं प्रयोग किया जाता है skydns-rc.yaml, फिर kubectl आदेशों को फिर से चलाएं।

kubectl create -f skydns-rc.yaml 
kubectl create -f skydns-svc.yaml 
+0

सुझाव के लिए धन्यवाद। दुर्भाग्य से, इससे कोई फर्क नहीं पड़ता। –

+1

SERVICE_CLUSTER_IP_RANGE का मूल्य क्या है? सुनिश्चित करें कि आपका DNS आईपी उसी नेटवर्क में है जैसा आप निर्दिष्ट करते हैं। – ovidiu

+0

यह समस्या थी! धन्यवाद। –

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