首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes:服务外部IP不起作用

Kubernetes:服务外部IP不起作用
EN

Stack Overflow用户
提问于 2018-02-03 22:04:10
回答 1查看 1.6K关注 0票数 3

我正在私有实验室中部署k8s,并在k8s服务中使用-外部ip选项:

代码语言:javascript
复制
Name:              my-service
Namespace:         default
Labels:            <none>
Annotations:       <none>
Selector:          app=myapp
Type:              ClusterIP
IP:                10.98.4.250
External IPs:      10.10.16.21
Port:              http  80/TCP
TargetPort:        80/TCP
Endpoints:         192.168.237.3:80

Session Affinity:  None
Events:            <none>


user@k8s-master:~$ kubectl get svc
NAME         TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1     <none>        443/TCP   22h
my-service   ClusterIP   10.98.4.250   10.10.16.21   80/TCP    7m

但是,我只能通过外部IP从同一个节点(K8S-主节点)卷起端点。如果我使用其他节点(与K8s主节点相同的子网),curl将无法工作。

运行tcpdump,我可以看到http请求正在通过,但没有答复。

外部IP在服务中是如何工作的?

EN

回答 1

Stack Overflow用户

发布于 2019-02-25 11:56:02

如果您检查github中的kubectl源代码,您会发现external-ip只记录在kubectl expose中,描述如下:

Cmd.Flags().String(“external”,"",i18n.T)(“额外的外部IP地址(不是由Kubernetes管理)来接受服务,如果这个IP被路由到一个节点,除了它生成的服务IP之外,这个IP还可以访问该服务”)。

当向服务添加external-ip参数时,Kubernete可能什么也不做,因为它不管理这个IP的行为,也不管理它在集群中的路由。它只是假设这个IP将被路由到集群中的一个节点。它将被视为与生成的服务IP相同。

要使外部IP工作,应该应用类似于服务类型LoadBalancerNodePort的配置。我认为这只是一个注释的目的。

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

https://stackoverflow.com/questions/48602528

复制
相关文章

相似问题

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