首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes kube代理NodePort与IPv6

Kubernetes kube代理NodePort与IPv6
EN

Server Fault用户
提问于 2020-03-10 10:21:13
回答 1查看 2K关注 0票数 0

我试图在一个前提下使用NodePort公开一个服务,库伯内特斯(1.17)集群( CNI和CRI 1.17)

  • 所有节点(Ubuntu18.04)都有IPv4和IPv6附件,可以使用这两种方式访问(例如ssh)
  • Kubernetes是使用kubeadm和IPv4启动的。
  • nginx测试部署正在运行,并且可以使用带有nodeport的服务访问。

我可以使用IPv4成功地压缩服务,但不使用IPv6 (连接是建立的,但没有传输)。

代码语言:javascript
复制
kubectl describe svc/example-service

Name:                     example-service
Namespace:                default
Labels:                   <none>
Annotations:              <none>
Selector:                 app=helloworld
Type:                     NodePort
IP:                       10.97.69.135
Port:                     <unset>  5000/TCP
TargetPort:               5000/TCP
NodePort:                 <unset>  32042/TCP
Endpoints:                10.10.166.132:5000
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

在运行此部署的主机上:

代码语言:javascript
复制
netstat -tulpen|grep ':32042'

tcp6       0      0 :::32042                :::*                    LISTEN      0          10276301   2314/kube-proxy  

kube-代理显然绑定到tcp6 (具有tcp4兼容性模式),因此可以建立连接,但是没有使用tcp6 (curl-6)、tcp4 (curl-4)进行预期的数据传输。

是否必须将集群配置为双堆栈或IPv6模式以接收IPv4和IPv6请求(例如通过NodePort)?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2020-03-10 15:13:32

是的,这就是双重堆栈的作用。它允许分配IPv6IPv4地址。没有它,豆荚和服务将无法从一个或另一个IP协议。如果无法处理IP协议,DNS解析不足以实现适当的网络连接。

根据库伯奈特斯文档:

IPv6 4/IPv6 6双栈特性状态:Kubernetes v1.16 alpha IPv6 4/IPv6 6双堆栈允许将IPv4和IPv6地址分配给豆荚服务。如果您为Kubernetes集群启用了IPv4 4/IPv4 6双堆栈网络,集群将支持同时分配IPv4和IPv6地址。

请注意,这是alpha特性,不适合生产环境。

另一种方法是使用IPv6终止模型。其中,IPv6流量通过代理发送到集群网络中的IPv4后端。来自GCP文档的示例

更新:

可以只使用IPv6而不与IPv4一起使用。然而,也有一些限制。

根据卡利科文档:

  • 目前,Kubernetes一次只支持一个IP堆栈版本。这意味着,如果您为IPv6配置了Kubernetes,那么Calico应该配置为只分配IPv6地址。
  • 这里的步骤和设置还没有针对现有的IPv4集群进行测试,只针对新的集群进行测试。

要仅在kubernetes集群中启用IPv6,请使用此指南

希望能帮上忙。

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

https://serverfault.com/questions/1006325

复制
相关文章

相似问题

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