मैं केंद्र 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
सुझाव के लिए धन्यवाद। दुर्भाग्य से, इससे कोई फर्क नहीं पड़ता। –
SERVICE_CLUSTER_IP_RANGE का मूल्य क्या है? सुनिश्चित करें कि आपका DNS आईपी उसी नेटवर्क में है जैसा आप निर्दिष्ट करते हैं। – ovidiu
यह समस्या थी! धन्यवाद। –