【发布时间】: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