我有一套基于以下舰队的吊舱:
apiVersion: "agones.dev/v1"
kind: Fleet
metadata:
name: bungee
spec:
replicas: 2
template:
metadata:
labels:
run: bungee
spec:
ports:
- name: default
containerPort: 25565
protocol: TCP
template:
spec:
containers:
- name: bungee
image: a/b:test我可以使用<node-IP>:<port>访问集群外的这些荚,其中的端口是由Agones提供的每个荚的随机端口。
我的目标是能够通过一个IP连接到这些吊舱,这意味着我必须添加某种负载均衡器。我试着使用这个LoadBalancer类型的服务,但是我无法用它连接到任何一个豆荚。
apiVersion: v1
kind: Service
metadata:
name: bungee-svc
spec:
type: LoadBalancer
loadBalancerIP: XXX.XX.XX.XXX
ports:
- port: 25565
protocol: TCP
selector:
run: bungee
externalTrafficPolicy: Local这样的服务在这里是错误的吗?如果是的话,我应该使用什么呢?如果它是正确的,为什么它不起作用?
编辑:外部IP字段在检查服务状态时显示挂起。我在裸金属上运行库伯奈特。
编辑2:试图按照建议使用NodePort,我看到服务没有获得外部IP地址。试图连接到<node-IP>:<nodePort>不起作用。会不会是与选择器有关的问题?
发布于 2021-06-15 19:52:28
LoadBalancer服务可以在与托管您的Kubernetes节点的云提供商的API集成的集群中工作(云控制器-管理器组件)。因为这不是您的情况,所以您正在寻找NodePort服务。
类似于:
apiVersion: v1
kind: Service
metadata:
name: bungee-svc
spec:
type: NodePort
ports:
- port: 25565
protocol: TCP
selector:
run: bungee创建了该服务之后,您可以检查它的描述--或者yaml/json表示:
# kubectl describe svc xxx
Type: NodePort
IP: 10.233.24.89 <- ip within SDN
Port: tcp-8080 8080/TCP <- ports within SDN
TargetPort: 8080/TCP <- port on your container
NodePort: tcp-8080 31655/TCP <- port exposed on your nodes
Endpoints: 10.233.108.232:8080 <- pod:port ...
Session Affinity: None现在,我知道端口31655被分配给我的NodePort服务--端口在集群上是唯一的,它们是在一个范围内选择的,这取决于集群配置。
我可以在分配给我的NodePort服务的端口上连接到我的服务,访问任何Kubernetes节点IP。
curl http://k8s-worker1.example.com:31655/作为旁白: LoadBalancer服务扩展了NodePort服务。虽然externalIP永远不会出现,但是请注意,您的服务已经与自己的端口一起分配了,就像任何NodePort服务一样--这意味着从代表集群配置的任何LoadBalancer接收流量,并将其集成到云基础设施中。
还有..。我不得不说我不熟悉Agones。当您说“我可以使用<node-IP>:<port>访问集群外的这些豆荚时,这里的端口是Agones给出的每个荚的随机端口”。您是否确定端口是按每荚分配的,并绑定到给定的节点上?或者他们已经在使用NodePort服务了。再看一看:您是否尝试过将该端口连接到集群的其他节点上?
https://stackoverflow.com/questions/67991811
复制相似问题