入口和入口控制器如何将它们与节点端口服务一起使用?



我在 NodePort 服务上运行了一个服务。如何使用入口访问多个服务。

部署.yml

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

服务.yml

apiVersion: v1
kind: Service
metadata:
name: auth
spec:
selector:
app: auth
tier: backend
ports:
- protocol: TCP
port: 3000
targetPort: auth
type: NodePort

ingress.yml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-ingress
spec:
backend:
serviceName: auth
servicePort: 8080

我从这个回购中一步一步地跟随。我无法让它适用于我的端口配置。 我是初学者,想要一些相同的资源。

尝试这些清单并记住部署入口控制器(我通常使用 traefik,这里有一些设置说明(

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

服务在端口 3000 中运行,但入口路由规则与端口 8080 匹配。如果只是在入口资源定义的后端部分中将 servicePort 更改为 3000,则可能会起作用。

我建议在尝试入口之前先确保它与 NodePort 一起使用。我建议这样做是因为我注意到您的服务只指定端口和目标端口的值,而不是节点端口的值。如果不指定节点端口值,则会获得一个随机端口号。由于您希望将入口与 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

相关内容

  • 没有找到相关文章

最新更新