我在NodePort服务上运行了一个服务。如何使用入口访问多个服务。
apiVersion: apps/v1
kind: Deployment
metadata:
name: auth
spec:
replicas: 1
selector:
matchLabels:
app: auth
template:
metadata:
labels:
app: auth
tier: backend
track: dev
spec:
containers:
- name: auth
image: [url]/auth_app:v2
ports:
- name: auth
containerPort: 3000
apiVersion: v1
kind: Service
metadata:
name: auth
spec:
selector:
app: auth
tier: backend
ports:
- protocol: TCP
port: 3000
targetPort: auth
type: NodePort
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-ingress
spec:
backend:
serviceName: auth
servicePort: 8080
我从此repo开始逐步进行。我无法在我的端口配置中使用它。 我是一个初学者,想要一些相同的资源。
答案 0 :(得分:2)
您的服务在端口3000中运行,但是您的Ingress路由规则与端口8080匹配。如果仅在Ingress资源定义的后端部分中将servicePort更改为3000,则它可能会起作用。
我建议在尝试Ingress之前先确保它与NodePort兼容。我建议这样做是因为我注意到您的服务仅为port和targetPort指定值,而不为nodePort指定值。您应该为要在外部公开的端口设置一个值,否则将获得一个随机值。
对于NodePort教程,您可以从https://medium.com/@markgituma/kubernetes-local-to-production-with-django-2-docker-and-minikube-ba843d858817开始,因为我注意到您已经用django标记了您的帖子
对于nginx入口,您可以看到https://cloud.google.com/community/tutorials/nginx-ingress-gke,但是如果您不使用gke,则可能想找到特定于您云平台的内容
最好是从一项服务开始,但是要了解它如何适用于多种服务,您可以查看文档https://kubernetes.io/docs/concepts/services-networking/ingress/#simple-fanout
中的扇出入口示例答案 1 :(得分:2)
尝试这些清单,并记住部署一个Ingress Controller(我通常使用traefik,here一些说明进行设置)
service.yml
:我将NodePort更改为ClusterIP(默认情况下,您可以删除该行)
apiVersion: v1
kind: Service
metadata:
name: auth
spec:
selector:
app: auth
tier: backend
ports:
- protocol: TCP
port: 3000
targetPort: auth
type: ClusterIP
ingress.yml
:(我将端口设置为3000,即您的服务端口)
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-ingress
spec:
backend:
serviceName: auth
servicePort: 3000