目前,我已经在K8s服务中使用K8s API Pod来连接到K8s Redis服务,并使用它自己的K8s Pod。问题是,我使用的是NodePort,这意味着BOTH暴露给公众。我只希望API能够访问公众。问题是,如果我使Redis服务不公开,则API无法看到它。有没有办法连接两个服务而不向公众公开?如何让两个Kubernetes服务互相交谈?
这是我的API服务YAML:
apiVersion: v1
kind: Service
metadata:
name: app-api-svc
spec:
selector:
app: app-api
tier: api
ports:
- protocol: TCP
port: 5000
nodePort: 30400
type: NodePort
,这是我的Redis服务YAML:
apiVersion: v1
kind: Service
metadata:
name: app-api-redis-svc
spec:
selector:
app: app-api-redis
tier: celery_broker
ports:
- protocol: TCP
port: 6379
nodePort: 30537
type: NodePort
我确实需要一个服务才能成为NodePort,这样公众或不同计算机上的某个人就可以打到它。那它是如何工作的?当涉及到网络时,我的速度很慢 –
如果您希望Redis服务是私有的,那么Redis服务应该是ClusterIP。 API可以是NodePort或LoadBalancer,没关系。 –
该应用如何解析“app-api-redis-svc”到集群IP? – kaizenCoder