美文网首页
Kubernetes的网络模型笔记

Kubernetes的网络模型笔记

作者: 深圳都这么冷 | 来源:发表于2023-01-10 17:31 被阅读0次

Kubernetes网络分类

    1. node网络
      基础设施网络,所有节点处于同一个局域网
    1. pod网络
      虚拟网络,无论节点哪里,所有pod都在同一个虚拟网络中,IP-per-Pod,pod间使用ip通信
    1. service网络
      服务clusterIP所在的网络
kubeadm init \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.23.0 \
  --service-cidr=10.96.0.0/12 \
  --pod-network-cidr=10.244.0.0/16 \
  --ignore-preflight-errors=all

以上命令可以看出需要指定pod网络和service网络的网段

pod网络

pod创建时会自动分配一个pod网络的IP,pod之间可以使用该IP相互通信,但是:

  • pod会自动释放和重新创建,ip因此不稳定
  • 集群外部不可见
    所以需要service暴露服务

service网络

service创建以后会分配一个service网络的IP,service不会自动删除重建,所以IP固定不变。
service一般指kind=Service&type=clusterIP的资源:

  • service的默认type就是clusterIP,clusterIP自动分配
  • 没有指定clusterIP的创建会自动分配一个ip(外部依然访问不了
  • 指定clusterIP的创建也是允许的
  • clusterIP: none的叫无头服务,dns直接查到pod的ip地址,这个适合各个pod之间相互通信的场景

node网络

  • Nodeport(kind=Service&type=Nodeport)
    pod的服务直接映射到集群每一个节点的指定port,这样我们就可以通过节点的IP+port访问pod提供的服务了

  • LoadBalance(kind=Service&type=LoadBalancer)
    这个只有云基础设施提供才行,LoadBalancer有外部ip(不属于node网络),用户可以通过LoadBalancer的ip访问服务,内部是映射到类似Nodeport的节点+IP做负载均衡

Ingress

Ingress(kind=Ingress)
第七层反向代理,同一个ip/域名管理多个服务,流程如下

  • 外部能够访问Ingress控制器即可,一般叫做upstream
  • upstream将请求转发给Ingress
  • Ingress根据rules分流,将请求转发给指定的service
    此处的service可以是Nodeport,也可以是clusterIP
    Is Ingress working with ClusterIP services?

结论:

使用Ingress+clusterIP服务对外暴露计算服务
pod不能直接提供稳定的ip
clusterIP服务虽然提供了稳定的IP,没有办法暴露给外部
Nodeport可以暴露给外部,但是开放的口子太多了,如果集群有1万台机器,每台机器都要开放端口
LoadBalancer提供了唯一的入口,但是底层实现是基于Nodeport的,兼具Nodeport的缺点
方案只剩一个Ingress->clusterIP服务->pod集群

相关文章

网友评论

      本文标题:Kubernetes的网络模型笔记

      本文链接:https://www.haomeiwen.com/subject/pgsvcdtx.html