Oli*_*ain 4 kubernetes kube-dns
我有一个名为== elasticsearch和serviceName == 的Kubernetes PetSet es.它确实创建了pod,并且正如预期的那样,它们的名称elasticsearch-0和elasticsearch-1.但是,DNS似乎不起作用.elasticsearch-0.es不解决(也不解决elasticsearch-0.default).如果你查看生成的srv记录,它们似乎是随机的而不是可预测的:
# nslookup -type=srv elasticsearch
Server: 10.1.0.2
Address: 10.1.0.2#53
elasticsearch.default.svc.cluster.local service = 10 100 0 9627d60e.elasticsearch.default.svc.cluster.local.
Run Code Online (Sandbox Code Playgroud)
有人有主意吗?
细节
这是实际的PetSet和服务定义:
---
apiVersion: v1
kind: Service
metadata:
name: elasticsearch
labels:
app: elasticsearch
spec:
ports:
- name: rest
port: 9200
- name: native
port: 9300
clusterIP: None
selector:
app: elasticsearch
---
apiVersion: apps/v1alpha1
kind: PetSet
metadata:
name: elasticsearch
spec:
serviceName: "es"
replicas: 2
template:
metadata:
labels:
app: elasticsearch
annotations:
pod.alpha.kubernetes.io/initialized: "true"
spec:
terminationGracePeriodSeconds: 0
containers:
- name: elasticsearch
image: 672129611065.dkr.ecr.us-west-2.amazonaws.com/elasticsearch:v1
ports:
- containerPort: 9200
- containerPort: 9300
volumeMounts:
- name: es-data
mountPath: /usr/share/elasticsearch/data
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: ES_CLUSTER_NAME
value: EsEvents
volumeClaimTemplates:
- metadata:
name: es-data
annotations:
volume.alpha.kubernetes.io/storage-class: anything
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 10Gi
Run Code Online (Sandbox Code Playgroud)
这是我误读文档的问题.文档说:
网络标识有两部分.首先,我们创建了一个无头服务,控制我们创建Pets的域.此服务管理的域采用以下形式:$(服务名称).$(名称空间).svc.cluster.local,其中"cluster.local"是集群域.当每个宠物被创建时,它获得匹配的DNS子域,采用以下形式:$(petname).$(管理服务域),其中管理服务由宠物集上的serviceName字段定义.
我认为这意味着该serviceDomain字段的值是"管理服务域"的值,但这并不意味着它.这意味着值serviceDomain必须与现有无头服务的名称匹配,并且该服务将用作管理服务域.如果不存在此类服务,则不会出现错误 - 您只需为您的宠物获取随机DNS名称.
| 归档时间: |
|
| 查看次数: |
472 次 |
| 最近记录: |