在K8S中,Pod网络访问与Docker容器端口映射有何不同?

在kubernetes和Docker原生端口映射之间,主要区别在于:

1、Docker原生端口映射:

  • Docker容器在启动时可以通过-p参数指定宿主机端口到容器内部端口的映射,例如:docker run -p 8080:80 nginx,这意味着:外部通过访问宿主机的8080端口实际访问到容器内运行的Nginx服务的80端口
  • Docker使用NAT技术在宿主机上创建端口转发规则,使得来自宿主机外部的流量能够到达正确的容器内部服务

2、kubernetes中的Pod网络:

  • 在kubernetes中,Pod有自己的IP地址,它们可以直接通过集群内部的服务发现机制互相访问,而无需显示端口映射
  • 对于集群外部的访问,通常不直接对Pod进行端口映射,而是创建一个Service资源,并定义其类型(如ClusterIP、NodePort或LoadBalancer)来暴露Pod内的服务
    • CluaterIP:Service会为Pod分配一个仅集群内部可访问的虚拟IP地址和端口
    • NodePort:Service会自动在每个节点上打开一个特定端口,允许从集群外部通过这个端口访问到Pod
    • LoadBalancer:Service在支持的云环境中,会进一步配置一个外部负载均衡器将流量引入集群
区别:
  • Docker端口映射是单机环境下的简单一对一映射,主要用于将外部请求路由到特定容器
  • kubernetes则提供了一种更复杂的网络模型,包括内部服务发现、多层抽象以及灵活的端口和服务管理,它不依赖于宿主机级别的端口映射,而是通过网络插件实现跨节点的Pod间通信和对外服务的统一入口

综上所述:
在kubernetes中,端口映射更为复杂且灵活,设计到服务发现、网络策略以及多层抽象。而Docker的端口映射更偏向于一对一的简单宿主机与容器间的网络通信。在kubernetes中,Pod并不直接对外提供端口映射,而是由Sercive来管理并提供对一组Pod实例的访问入口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值