2016-03-02 6 views
6

जैसे बाहरी डोमेन के लिए काम नहीं कर रहा है मैंने बेयर-मेटल/उबंटू पर कुबेरनेट स्थापित किए हैं। मैं 6b649d7f9f2b09ca8b0dd8c0d3e14dcb255432d1 पर गिट में प्रतिबद्ध हूं। मैंने क्लस्टर शुरू करने के लिए cd kubernetes/cluster; KUBERNETES_PROVIDER=ubuntu ./kube-up.shcd kubernetes/cluster/ubuntu; ./deployAddons.sh का उपयोग किया। सब ठीक हो गया और क्लस्टर उठ गया।क्लस्टरआईपी को पॉड के अंदर से पिंग नहीं कर सकता है और DNS google.com

मेरे /ubuntu/config-default.sh इस प्रकार है के रूप में:

# Define all your cluster nodes, MASTER node comes first" 
# And separated with blank space like <[email protected]_1> <[email protected]_2> <[email protected]_3> 
export nodes=${nodes:-"[email protected] [email protected]"} 

# Define all your nodes role: a(master) or i(minion) or ai(both master and minion), must be the order same 
role=${role:-"ai i"} 
# If it practically impossible to set an array as an environment variable 
# from a script, so assume variable is a string then convert it to an array 
export roles=($role) 

# Define minion numbers 
export NUM_NODES=${NUM_NODES:-2} 
# define the IP range used for service cluster IPs. 
# according to rfc 1918 ref: https://tools.ietf.org/html/rfc1918 choose a private ip range here. 
export SERVICE_CLUSTER_IP_RANGE=${SERVICE_CLUSTER_IP_RANGE:-192.168.3.0/24} # formerly PORTAL_NET 
# define the IP range used for flannel overlay network, should not conflict with above SERVICE_CLUSTER_IP_RANGE 
export FLANNEL_NET=${FLANNEL_NET:-172.16.0.0/16} 

# Optionally add other contents to the Flannel configuration JSON 
# object normally stored in etcd as /coreos.com/network/config. Use 
# JSON syntax suitable for insertion into a JSON object constructor 
# after other field name:value pairs. For example: 
# FLANNEL_OTHER_NET_CONFIG=', "SubnetMin": "172.16.10.0", "SubnetMax": "172.16.90.0"' 

export FLANNEL_OTHER_NET_CONFIG 
FLANNEL_OTHER_NET_CONFIG='' 

# Admission Controllers to invoke prior to persisting objects in cluster 
export ADMISSION_CONTROL=NamespaceLifecycle,LimitRanger,ServiceAccount,ResourceQuota,SecurityContextDeny 

# Path to the config file or directory of files of kubelet 
export KUBELET_CONFIG=${KUBELET_CONFIG:-""} 

# A port range to reserve for services with NodePort visibility 
SERVICE_NODE_PORT_RANGE=${SERVICE_NODE_PORT_RANGE:-"30000-32767"} 

# Optional: Enable node logging. 
ENABLE_NODE_LOGGING=false 
LOGGING_DESTINATION=${LOGGING_DESTINATION:-elasticsearch} 

# Optional: When set to true, Elasticsearch and Kibana will be setup as part of the cluster bring up. 
ENABLE_CLUSTER_LOGGING=false 
ELASTICSEARCH_LOGGING_REPLICAS=${ELASTICSEARCH_LOGGING_REPLICAS:-1} 

# Optional: When set to true, heapster, Influxdb and Grafana will be setup as part of the cluster bring up. 
ENABLE_CLUSTER_MONITORING="${KUBE_ENABLE_CLUSTER_MONITORING:-true}" 

# Extra options to set on the Docker command line. This is useful for setting 
# --insecure-registry for local registries. 
DOCKER_OPTS=${DOCKER_OPTS:-""} 

# Extra options to set on the kube-proxy command line. This is useful 
# for selecting the iptables proxy-mode, for example. 
KUBE_PROXY_EXTRA_OPTS=${KUBE_PROXY_EXTRA_OPTS:-""} 

# Optional: Install cluster DNS. 
ENABLE_CLUSTER_DNS="${KUBE_ENABLE_CLUSTER_DNS:-true}" 
# DNS_SERVER_IP must be a IP in SERVICE_CLUSTER_IP_RANGE 
DNS_SERVER_IP=${DNS_SERVER_IP:-"192.168.3.10"} 
DNS_DOMAIN=${DNS_DOMAIN:-"cluster.local"} 
DNS_REPLICAS=${DNS_REPLICAS:-1} 

# Optional: Install Kubernetes UI 
ENABLE_CLUSTER_UI="${KUBE_ENABLE_CLUSTER_UI:-true}" 

# Optional: Enable setting flags for kube-apiserver to turn on behavior in active-dev 
RUNTIME_CONFIG="--basic-auth-file=password.csv" 

# Optional: Add http or https proxy when download easy-rsa. 
# Add envitonment variable separated with blank space like "http_proxy=http://10.x.x.x:8080 https_proxy=https://10.x.x.x:8443" 
PROXY_SETTING=${PROXY_SETTING:-""} 

DEBUG=${DEBUG:-"false"} 

फिर, मैं निम्नलिखित YML फ़ाइल का उपयोग कर एक फली बनाया:

apiVersion: v1 
kind: Service 
metadata: 
    name: nginx-service 
spec: 
    ports: 
    - port: 8000 
    targetPort: 80 
    protocol: TCP 
    selector: 
    app: nginx 
    type: NodePort 
: निम्नलिखित YML का उपयोग कर

apiVersion: v1 
kind: Pod 
metadata: 
    name: nginx 
    labels: 
    app: nginx 
spec: 
    containers: 
    - name: nginx 
    image: nginx 
    ports: 
    - containerPort: 80 

और एक सेवा

फिर, मैं docker exec -it [CONTAINER_ID] bash का उपयोग कर प्रारंभिक कंटेनर टर्मिनल में आया। मुख्य रूप से दो समस्याएं हैं:

  1. मैं google.com जैसे बाहरी डोमेन को पिंग नहीं कर सकता, लेकिन मैं 8.8.8.8 जैसे बाहरी आईपी पिंग कर सकता हूं। तो कंटेनर में इंटरनेट का उपयोग है।
  2. आंतरिक क्लस्टरआईपी को सही करने के लिए आंतरिक सेवाएं हल करती हैं, लेकिन मैं कंटेनर के अंदर से उस आईपी को पिंग नहीं कर सकता।

    nameserver 8.8.8.8 
    nameserver 127.0.1.1 
    

    कंटेनर की /etc/resolve.conf फ़ाइल इस प्रकार है::

    search default.svc.cluster.local svc.cluster.local cluster.local 
    nameserver 192.168.3.10 
    nameserver 8.8.8.8 
    nameserver 127.0.1.1 
    options ndots:5 
    

    पहली समस्या के बारे में, मुझे लगता है कि यह या तो SkyDNS से ​​संबंधित हो सकता इस प्रकार

मेजबान के /etc/resolve.conf फ़ाइल है नेमसर्वर गलत कॉन्फ़िगरेशन या एक कस्टम कॉन्फ़िगरेशन जो मुझे करना है लेकिन मुझे पता नहीं है।

हालांकि, मुझे इस बारे में कोई जानकारी नहीं है कि कंटेनर क्लस्टरआईपी क्यों नहीं कर सकते हैं।

कोई कामकाज?

+1

यह पता चला है कि 'आईपी, पोर्ट) की जोड़ी के आधार पर' iptables' का उपयोग करके यातायात मार्गांकन किया जाता है। ' तो आभासी आईपी पिंग करने योग्य नहीं है, लेकिन यह उस विशिष्ट बंदरगाह के माध्यम से सुलभ है। फिर भी DNS समस्या बनी हुई है। –

उत्तर

0

मुझे एक कामकाज मिला।

नेमसर्वर: इन (पुनरावर्ती) नेमसर्वर (आईपी की सरणी: पोर्ट संयोजन) के लिए आगे DNS अनुरोधों, जब एक के लिए आधिकारिक नहीं कमांडलाइन तर्क खंड में SkyDNS प्रलेखन, और विशेष रूप से, "नेमसर्वर" के लिए तर्क यह है कि संकेत मिलता है डोमेन। यह /etc/resolv.conf

में सूचीबद्ध सर्वरों के लिए डिफ़ॉल्ट है लेकिन यह नहीं है! समस्या को हल करने के लिए, डीएनएस एडन प्रतिकृति नियंत्रक विन्यास फाइल (क्लस्टर/एडॉन्स/डीएनएस/skydns-rc.yaml.in) को नेमसर्वर कॉन्फ़िगरेशन रखने के लिए बदला जाना चाहिए। मैंने स्काईडेंस कंटेनर भाग को निम्नानुसार बदल दिया और यह एक आकर्षण की तरह काम करता था।

- name: skydns 
    image: gcr.io/google_containers/skydns:2015-10-13-8c72f8c 
    resources: 
     # keep request = limit to keep this container in guaranteed class 
     limits: 
     cpu: 100m 
     memory: 50Mi 
     requests: 
     cpu: 100m 
     memory: 50Mi 
    args: 
    # command = "/skydns" 
    - -machines=http://127.0.0.1:4001 
    - -addr=0.0.0.0:53 
    - -nameservers=8.8.8.8:53 
    - -ns-rotate=false 
    - -domain={{ pillar['dns_domain'] }}. 
    ports: 
    - containerPort: 53 
     name: dns 
     protocol: UDP 
    - containerPort: 53 
     name: dns-tcp 
     protocol: TCP 
    livenessProbe: 
     httpGet: 
     path: /healthz 
     port: 8080 
     scheme: HTTP 
     initialDelaySeconds: 30 
     timeoutSeconds: 5 
    readinessProbe: 
     httpGet: 
     path: /healthz 
     port: 8080 
     scheme: HTTP 
     initialDelaySeconds: 1 
     timeoutSeconds: 5 
+1

नए संस्करण (अब क्यूब-डीएनएस कहा जाता है) स्पष्ट रूप से नेमसर्वर विकल्प का समर्थन नहीं करते हैं। अभी भी यह पता लगाने की कोशिश कर रहा है कि अपस्ट्रीम नेमसर्वर – mrvulcan

+0

पर आगे बढ़ने के लिए क्यूब-डीएनएस कैसे प्राप्त करें, मुझे वर्तमान कुबर्नेट और क्यूब-डीएनएस के साथ एक ही समस्या है। – verdverm

-1

मैं आपकी ping clusterIP समस्या का उत्तर दे सकता हूं। मैं एक ही समस्या से मिला, सेवा के क्लस्टर आईपी को पॉड से पिंग करना चाहता हूं।

संकल्प प्रतीत होता है कि क्लस्टर आईपी को पिंग नहीं किया जा सकता है, लेकिन एंडपॉइंट को पोर्ट के साथ कर्ल का उपयोग करके एक्सेस किया जा सकता है।

मैं वर्चुअल आईपी पिंग के बारे में विवरण खोजने के लिए बस काम करता हूं।

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