首页 > 其他分享 >在K8S中,Pod网络访问与Docker容器端口映射有何不同?

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

时间:2024-02-03 09:22:56浏览次数:27  
标签:Kubernetes 有何 宿主机 端口 Pod K8S 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内的服务。
    • ClusterIP 类型的Service会为Pod分配一个仅集群内部可访问的虚拟IP地址和端口。
    • NodePort 类型的Service会自动在每个节点上打开一个特定端口,允许从集群外部通过这个端口访问到Pod。
    • LoadBalancer 类型的Service在支持的云环境中,会进一步配置一个外部负载均衡器将流量引入集群。

因此,区别在于:

  1. Docker端口映射是单机环境下的简单一对一映射,主要用于将外部请求路由到特定容器。
  2. Kubernetes则提供了一种更复杂的网络模型,包括内部服务发现、多层抽象以及灵活的端口和服务管理,它不依赖于宿主机级别的端口映射,而是通过网络插件实现跨节点的Pod间通信和对外服务的统一入口。

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

标签:Kubernetes,有何,宿主机,端口,Pod,K8S,Docker,端口映射
From: https://www.cnblogs.com/huangjiabobk/p/18004345

相关文章

  • 在K8S中,发布应用流程是什么?
    在Kubernetes(简称K8s)中发布应用的基本流程通常包括以下几个步骤:编写YAML或JSON配置文件:创建一个或多个YAML文件,例如deployment.yaml、service.yaml等,来定义应用所需的资源对象。对于部署一个Tomcat应用,你可能需要定义Deployment资源,指定容器镜像、端口映射、副本数量等属......
  • 在k8s中,有哪些存储?
    在Kubernetes(简称K8s)中,有多种内置和外部的存储解决方案,它们可以满足不同场景下的持久化存储需求。以下是一些常见的存储类型:PersistentVolume(PV):PersistentVolume是集群管理员创建并提供的存储资源,它具有一定的容量和访问模式。PersistentVolumeClaim(PVC):用户通......
  • 在K8S中,内置的污点主要有哪些?
    在Kubernetes(K8S)中,内置的污点(Taints)主要用于自动化的节点亲和性和反亲和性管理。当集群中的节点出现某种问题或满足特定条件时,kubelet会自动给这些节点添加内置污点。以下是一些常见的内置污点:node.kubernetes.io/not-ready:当节点尚未通过健康检查,即节点尚处于未就绪状态时,k......
  • 在K8s中,提供的DNS组件是什么?有什么特性?
    在Kubernetes(K8s)集群中,用于内部DNS服务的组件已经从早期的kube-dns过渡到了coredns。kube-dns(已弃用):在Kubernetes1.10版本之前,kube-dns是默认的集群内部DNS解决方案。它包含以下组件:etcd:存储DNS记录。kube2sky:在较早的版本中用于将Kubernetes服务转换为DNS记录,但在kube......
  • 新主机加入k8s 1.24.4集群
    配置静态IP[root@localhost~]#cat/etc/sysconfig/network-scripts/ifcfg-ens33TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=staticDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR......
  • 项目中如何保证API接口的幂等性?有哪些实现解决方法?有何利弊
    在实际开发项目中保证API接口的幂等性是十分重要的,因为在幂等性可以保证多次相同的操作不会对系统造成多次影响。首先来了解什么是接口API幂等性,简单来说就是对同一个接口的多次请求或操作造成的影响是相同的,就是说一个操作如果在其执行一次或者多次后产生的结果相同,这个操作就是......
  • Podman使用(Mac M1)
    1.前言弃用docker选择使用podman的理由:使用虚拟机进行容器管理不需要本机root权限非守护进程podman命令与docker一致2.安装及配置使用homebrew安装podmanbrewinstallpodmanbrewinstallpodman-composebrewinstallpodman-desktop创建podman虚拟机:通过podman-d......
  • Pod
    1.1Pod目录1.1Pod1.1.1创建一个pod1.1.2更改pod的启动命令和参数1.1.3pod的状态以及pod故障排查命令1.1.4镜像拉取策略1.1.5Pod重启策略1.1.6Pod的三种探针1.1.7探针实现的方式1.1.8livenessProbe和readinessProbe1.1.9配置startupProbe1.1.10prestop和poststart1.1......
  • K8S-污点和容忍
    一、污点(Taint)污点是用来配置节点亲和性的,是Pod的一种属性(偏好),它使Pod被吸引到某一类特点的节点,也就是说我想让Pod被调度到指定的节点应用场景:把Nginx服务调度到Node1节点,Tomcat服务调度到Node2节点,其它服务在没有配置容忍的情况下,不会被调度到Node1和Node2具体方法:1、在Node1......
  • Pod
    1.1Pod1.1.1创建一个pod定义一个podvimpod.yamlapiVersion:v1kind:Podmetadata:name:podspec:containers:-name:nginximage:nginxports:-name:httpcontainerPort:80创建podkubectlapply-fpod.yaml查看pod状态[root@k......