我有一个单节点k8s集群,其中2个web应用程序运行在2个NGINX k8s吊舱上。
nginx部署1-> WEBAPP1 -> nginx-svc-app1 -> :30080/webapp1
nginx部署2-> WEBAPP2 -> nginx-svc-app2 -> :30081/webapp2 2
它只连接到各自的节点ip,而不连接到:30080/webapp1和:30081/webapp1 2。你能帮我理解一下我错过了什么吗?
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment1
labels:
name: nginx-app1
spec:
replicas: 3
selector:
matchLabels:
name: nginx-app1
template:
metadata:
labels:
name: nginx-app1
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-svc-app1
labels:
name: nginx-svc-app1
spec:
type: NodePort
ports:
- port: 80
nodePort: 30080
name: app1_port
selector:
name: nginx-app1
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment2
labels:
name: nginx-app2
spec:
replicas: 3
selector:
matchLabels:
name: nginx-app2
template:
metadata:
labels:
name: nginx-app2
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-svc-app2
labels:
name: nginx-svc-app2
spec:
type: NodePort
ports:
- port: 80
nodePort: 30081
name: http
selector:
name: nginx-app2发布于 2022-07-09 12:06:58
您的端口配置不正确。您需要为这两个服务设置targetPort: 80。当您使用NodePort服务类型并指定NodePort时,port字段与此无关。该端口通常接收服务端点的传入通信量。因此,指定两者都意味着:
并且您没有指定一个targetPort,它是接收部署吊舱中的通信量的端口。所以,流量进来了,但没有被转发到任何地方。
您需要向这两个服务添加targetPort: 80并删除port参数。
另外,您不是运行两个荚,而是运行两个部署,每个部署中有3个荚(副本)。您将发送到每个服务的流量,将由服务“分发”,在所有的豆荚,将匹配的选择-即所有的3个豆荚。了解交流是如何进行的是很重要的。
另外,k8s_controller_ip是描述IP地址的一种不正确的方式。您应该使用术语k8s Node IP或k8s_master_node_ip。IP地址属于运行群集的节点,而不是任何控制器。
https://stackoverflow.com/questions/72921057
复制相似问题