首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过一个IP访问Kubernetes吊舱?

如何通过一个IP访问Kubernetes吊舱?
EN

Stack Overflow用户
提问于 2021-06-15 18:39:50
回答 1查看 121关注 0票数 0

我有一套基于以下舰队的吊舱:

代码语言:javascript
复制
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类型的服务,但是我无法用它连接到任何一个豆荚。

代码语言:javascript
复制
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>不起作用。会不会是与选择器有关的问题?

EN

回答 1

Stack Overflow用户

发布于 2021-06-15 19:52:28

LoadBalancer服务可以在与托管您的Kubernetes节点的云提供商的API集成的集群中工作(云控制器-管理器组件)。因为这不是您的情况,所以您正在寻找NodePort服务。

类似于:

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: bungee-svc
spec:
  type: NodePort
  ports:
    - port: 25565
      protocol: TCP
  selector:
    run: bungee

创建了该服务之后,您可以检查它的描述--或者yaml/json表示:

代码语言:javascript
复制
# 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。

代码语言:javascript
复制
curl http://k8s-worker1.example.com:31655/

作为旁白: LoadBalancer服务扩展了NodePort服务。虽然externalIP永远不会出现,但是请注意,您的服务已经与自己的端口一起分配了,就像任何NodePort服务一样--这意味着从代表集群配置的任何LoadBalancer接收流量,并将其集成到云基础设施中。

还有..。我不得不说我不熟悉Agones。当您说“我可以使用<node-IP>:<port>访问集群外的这些豆荚时,这里的端口是Agones给出的每个荚的随机端口”。您是否确定端口是按每荚分配的,并绑定到给定的节点上?或者他们已经在使用NodePort服务了。再看一看:您是否尝试过将该端口连接到集群的其他节点上?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67991811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档