【问题标题】:Can't resolve service names on namespace kube-system无法解析命名空间 kube-system 上的服务名称
【发布时间】:2015-09-03 00:07:04
【问题描述】:

我已经基于https://github.com/CiscoCloud/kubernetes-ansible 在 debian 上部署了我的集群。 除了一些插件外,一切都很好,我怀疑名称解析。

我有一个这样定义的 rc

apiVersion: v1
kind: ReplicationController
metadata:
  name: monitoring-influx-grafana-v1
  namespace: kube-system
  labels: 
    k8s-app: influxGrafana
    version: v1
    kubernetes.io/cluster-service: "true"
spec: 
  replicas: 1
  selector: 
    k8s-app: influxGrafana
    version: v1
  template: 
    metadata: 
      labels: 
        k8s-app: influxGrafana
        version: v1
        kubernetes.io/cluster-service: "true"
    spec: 
      containers: 
        - image: gcr.io/google_containers/heapster_influxdb:v0.3
          name: influxdb
          resources:
            limits:
              cpu: 100m
              memory: 200Mi
          ports: 
            - containerPort: 8083
              hostPort: 8083
            - containerPort: 8086
              hostPort: 8086
          volumeMounts:
          - name: influxdb-persistent-storage
            mountPath: /data
        - image: gcr.io/google_containers/heapster_grafana:v0.7
          name: grafana
          resources:
            limits:
              cpu: 100m
              memory: 100Mi
          env: 
            - name: INFLUXDB_EXTERNAL_URL
              value: /api/v1/proxy/namespaces/kube-system/services/monitoring-influxdb:api/db/
            - name: INFLUXDB_HOST
              value: monitoring-influxdb
            - name: INFLUXDB_PORT
              value: "8086"
      volumes:
      - name: influxdb-persistent-storage
        emptyDir: {}

因此容器连接到名为“monitoring-influxdb”的主机。 实际上,当我使用“busy-box”吊舱时,dns 可以很好地解析这个名称:

kubectl exec busybox --namespace=kube-system -- nslookup monitoring-influxdb
Server:    10.233.0.10
Address 1: 10.233.0.10

名称:monitoring-influxdb 地址1:10.233.83.114

但是在monitoring-influx-grafana-v1 pod里面,名字没有解析:

kubectl exec monitoring-influx-grafana-v1-obu8h --namespace=kube-system -- ping -c 1 monitoring-influxdb
PING monitoring-influxdb.kube-system.svc.osm.local (10.233.83.114) 56(84) bytes of data.

--- monitoring-influxdb.kube-system.svc.osm.local ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

注意“kubernetes”服务已解析

kubectl exec monitoring-influx-grafana-v1-obu8h --namespace=kube-system -- ping -c 1 kubernetes
PING kubernetes.default.svc.osm.local (10.233.0.1) 56(84) bytes of data.
64 bytes from 10.233.0.1: icmp_seq=1 ttl=63 time=0.441 ms

--- kubernetes.default.svc.osm.local ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
```

服务在etcd中定义如下

{'apiVersion': 'v1',
 'kind': 'Endpoints',
 'metadata': {'creationTimestamp': '2015-08-31T16:11:47Z',
              'labels': {'kubernetes.io/cluster-service': 'true',
                         'kubernetes.io/name': 'InfluxDB'},
              'name': 'monitoring-influxdb',
              'namespace': 'kube-system',
              'resourceVersion': '219',
              'selfLink': '/api/v1/namespaces/kube-system/endpoints/monitoring-influxdb',
              'uid': 'fab1bd0d-4ffa-11e5-bad3-52540011ed64'},
 'subsets': [{'addresses': [{'ip': '10.233.3.5',
                             'targetRef': {'kind': 'Pod',
                                           'name': 'monitoring-influx-grafana-v1-obu8h',
                                           'namespace': 'kube-system',
                                           'resourceVersion': '391',
                                           'uid': 'fa6fb734-4ffa-11e5-bad3-52540011ed64'}}],
              'ports': [{'name': 'http', 'port': 8083, 'protocol': 'TCP'},
                        {'name': 'api', 'port': 8086, 'protocol': 'TCP'}]}]}

我认为这个问题也会导致其他 pod 出错

kubectl logs kibana-logging-v1-ifztn --namespace=kube-system
...
{"@timestamp":"2015-08-31T16:13:29.082Z","level":"info","message":"Unable to connect to elasticsearch at http://elasticsearch-logging:9200. Retrying in 2.5 seconds.","node_env":"production"}
...

kubectl logs monitoring-heapster-v8-9cy06 --namespace=kube-system
...
E0831 16:12:27.367871       1 driver.go:326] Database creation failed: Post http://monitoring-influxdb:8086/db?u=root&p=root: dial tcp: lookup monitoring-influxdb: no such host. Retrying after 30 seconds
...

问候, 斯马那

【问题讨论】:

  • 实际上我已经做了进一步的测试,现在我不确定它是否与名称解析有关。我会及时通知你
  • 我遇到了类似的情况,这是由于 DNS 用于服务发现和路由在同一个 pod 中的两个容器之间不起作用。在 influxdb-frafana pod 中,您应该能够连接到位于 127.0.0.1/localhost 的另一个 pod

标签: kubernetes


【解决方案1】:

斯马纳, 1)和你猜的一样,不是DNS解析问题 PING 监控-influxdb.kube-system.svc.osm.local (10.233.83.114) 56(84) 字节数据。 ping 命令表明正在 ping IP 10.233.83.144

2) 集群 ip 不支持 ICMP。目前,仅支持 tcp 和 udp。因此 ping 失败。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-16
    • 2022-12-29
    • 2018-03-22
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    相关资源
    最近更新 更多