我正在使用外部DNS,以获取更多背景信息。
我为应用程序“ A”设置了一项服务,部署和入口,所有这些都按预期工作,并且可以通过指定的URL到达应用程序A。然后,我为应用程序“ B”设置了类似的内容,现在我可以到达应用程序B,但是如果我点击了为应用程序A指定的URL,则会收到default backend - 404
消息。我以前没看过这个问题,这是什么问题?以下是A和B的服务,部署和入口清单:
A:服务:
apiVersion: v1
kind: Service
metadata:
name: my-app-A
spec:
ports:
- name: https
port: 443
protocol: TCP
targetPort: 3000
- name: http
port: 80
protocol: TCP
targetPort: 3000
selector:
run: my-app-A
type: NodePort
A:部署:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: my-app-A
spec:
replicas: 1
template:
metadata:
labels:
run: my-app-A
spec:
containers:
- name: my-app-A
image: this-is-my-docker-image
imagePullPolicy: Always
envFrom:
- secretRef:
name: my-app-A-secrets
- configMapRef:
name: my-app-A-configmap
ports:
- containerPort: 3000
A:女主角:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-app-A
annotations:
external-dns.alpha.kubernetes.io/hostname: "A.myurl.com"
kubernetes.io/ingress.class: "gce"
kubernetes.io/ingress.allow-http: "true"
spec:
rules:
- host: "A.myurl.com"
http:
paths:
- path: /*
backend:
serviceName: my-app-A
servicePort: 80
- host: "my-app-A-namespace.clusterbase.myurl.com"
http:
paths:
- path: /*
backend:
serviceName: my-app-A
servicePort: 80
对于B的清单,将“ A”的所有实例替换为“ B”,并将external-dns.alpha.kubernetes.io/hostname: "A.myurl.com"
仅替换为external-dns.alpha.kubernetes.io/hostname: "myurl.com"
。
答案 0 :(得分:1)
问题是名称空间+入口的名称太长,并且在后台创建的资源以相同的名称结尾,因为它们的字符数限制为64个字符,并且唯一部分被截断了。我在此处提交了一个错误,对其进行了更详细的说明。
https://github.com/kubernetes/ingress-gce/issues/537
如果<namespace>-<ingress>
的前64个字符不是唯一的,则会遇到此问题。