首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用kubectl代理访问集群外的服务?

如何使用kubectl代理访问集群外的服务?
EN

Stack Overflow用户
提问于 2018-12-09 13:52:07
回答 1查看 616关注 0票数 0

当我们在kubernetes中使用kubeadm旋转集群时,服务的.yaml文件如下所示:

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: neo4j
  labels:
    app: neo4j
    component: core
spec:
  clusterIP: None
  ports:
    - port: 7474
      targetPort: 7474
      name: browser
    - port: 6362
      targetPort: 6362
      name: backup
  selector:
    app: neo4j
    component: core

在运行完所有的豆荚和服务之后,我做了kubectl proxy,它说:

代码语言:javascript
复制
Starting to serve on 127.0.0.1:8001

所以,当我想访问这个服务时,比如:

代码语言:javascript
复制
curl localhost:8001/api/

它在集群内是可以到达的!如何才能到达集群之外的服务?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-09 16:20:07

您应该使用NodePort公开服务:

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: neo4j
  labels:
    app: neo4j
    component: core
spec:
  externalTrafficPolicy: Local
  type: NodePort
  ports:
    - port: 7474
      targetPort: 7474
      name: browser
    - port: 6362
      targetPort: 6362
      name: backup
  selector:
    app: neo4j
    component: core

现在,如果您使用

代码语言:javascript
复制
 kubectl describe svc neo4j

您将获得一个nodeport值,该值在30000-32767之间,您可以使用

代码语言:javascript
复制
curl http://<node_ip>:<node_port>

希望这能有所帮助。

编辑:是的,在通过clusterIP: None公开服务的情况下,您不能直接使用NodePort。现在,clusterIP: None意味着没有由kubernetes完成的内部负载平衡,为此,我们也可以在服务定义中使用externalTrafficPolicy=Local

或者,您可以使用入口将流量路由到正确的服务。

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

https://stackoverflow.com/questions/53693030

复制
相关文章

相似问题

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