gpt4 book ai didi

docker - DNS无法与Kubernetes PetSet一起使用

转载 作者:行者123 更新时间:2023-12-02 20:19:27 24 4
gpt4 key购买 nike

好的,按照Kubernetes网站上的示例和文档,以及对Google的广泛研究,我仍然无法获得Pod中容器之间的DNS解析。

我有一个Service和一个PetSet,其中定义了2个容器。当我部署PetSet和Service时,它们会成功启动并运行,但是如果我尝试通过主机名或完整域名从另一个容器ping我一个容器的主机,则无法到达目的地。我可以按IP地址ping通。

这是我的Kubernetes配置文件:

apiVersion: v1
kind: Service
metadata:
name: ml-service
labels:
app: marklogic
annotations:
service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
spec:
#restartPolicy: OnFailure
clusterIP: None
selector:
app: marklogic
ports:
- protocol: TCP
port: 7997
#nodePort: 31997
name: ml7997
- protocol: TCP
port: 8000
#nodePort: 32000
name: ml8000
# ... More ports defined
#type: NodePort

---
apiVersion: apps/v1alpha1
kind: PetSet
metadata:
name: marklogic
spec:
serviceName: "ml-service"
replicas: 2
template:
metadata:
labels:
app: marklogic
annotations:
pod.alpha.kubernetes.io/initialized: "true"
spec:
terminationGracePeriodSeconds: 30
containers:
- name: 'marklogic'
image: "{local docker registry ip}:5000/dcgs-sof/ml8-docker-final:v1"
imagePullPolicy: Always
command: ["/opt/entry-point.sh", "-l", "/opt/mlconfig.sh"]
ports:
- containerPort: 7997
name: ml7997
- containerPort: 8000
name: ml8000
- containerPort: 8001
name: ml8001
- containerPort: 8002
name: ml8002
- containerPort: 8040
name: ml8040
- containerPort: 8041
name: ml8041
- containerPort: 8042
name: ml8042
- containerPort: 8050
name: ml8050
- containerPort: 8051
name: ml8051
- containerPort: 8060
name: ml8060
env:
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
lifecycle:
preStop:
exec:
command: ["/etc/init.d/MarkLogic stop"]
volumeMounts:
- name: ml-data
mountPath: /data
volumeClaimTemplates:
- metadata:
name: ml-data
annotations:
volume.alpha.kubernetes.io/storage-class: anything
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 1Gi

我注释掉了 type: NodePort定义,因为我认为这可能是罪魁祸首,但仍然没有成功。

此外,如果我运行 docker@minikube:/$ docker exec b4d21c4bc065 /bin/bash -c 'nslookup marklogic-1.marklogic.default.svc.cluster.local',则无法解析名称。

我想念什么???

最佳答案

您正在解析错误的域名。
参见http://kubernetes.io/docs/user-guide/petset/#network-identity

您应该尝试解决:

marklogic-0.ml-service.default.svc.cluster.local



如果所有内容都在默认 namespace 内,则DNS名称为:

<pod_name>.<svc_name>.default.svc.cluster.local

关于docker - DNS无法与Kubernetes PetSet一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39854354/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com