首页 > 其他分享 >k8s~你应该知道的ip和你应该知道的端口

k8s~你应该知道的ip和你应该知道的端口

时间:2023-12-26 10:22:34浏览次数:28  
标签:容器 Kubernetes ip 端口 地址 IP Pod k8s port

你应该知道的ip

  • Node IP
  • Cluster IP
  • Pod IP
  • Container IP

Node IP

node ip是指k8s节点的ip地址,这个ip是具体的服务器,它上面的端口是node port,是真实服务器上的端口。

Cluster IP

在 Kubernetes 中,ClusterIP 是指 Service 类型中的一种,它为集群内部的其他资源提供了一个虚拟 IP 地址。这个虚拟 IP 只在集群内部可见,用于将请求负载均衡到后端 Pod 上。

具体来说,当你创建一个 ClusterIP 类型的 Service 时,Kubernetes会为该服务分配一个虚拟的 ClusterIP 地址,这个地址只能在集群内部使用。当其他资源需要访问该服务时,它们可以通过 ClusterIP 地址来与 Service 进行通信,而无需关心后端 Pod 的具体 IP 地址。

总之,ClusterIP 是一个由 Kubernetes 分配并管理的虚拟 IP 地址,用于在集群内部提供服务发现和负载均衡功能。

在 Kubernetes 中,ClusterIP 是由 kube-proxy 组件生成和管理的。kube-proxy 是 Kubernetes 中负责实现服务发现和负载均衡的关键组件之一。它通过监视 API 服务器上 Service 和 Endpoint 对象的变化,然后更新集群中的网络规则来实现服务的负载均衡和代理转发。
具体地说,当你创建一个 ClusterIP 类型的 Service 时,kube-proxy 将会监听这个 Service 的信息,并为其分配一个虚拟的 ClusterIP 地址。同时,kube-proxy 会维护一个关于 Service 和对应 Pod IP 地址的映射表,以便正确地将请求转发到后端 Pod 上。
因此,kube-proxy 是负责生成和管理 ClusterIP 的组件,在整个 Kubernetes 集群中起着非常重要的作用。

Pod IP

在 Kubernetes 中,Pod 的 IP 地址是由网络插件(CNI 插件)负责生成和管理的。Kubernetes 本身并不直接生成 Pod 的 IP 地址,而是将这一任务交给网络插件来处理。

当一个 Pod 被创建时,网络插件会为该 Pod 分配一个 IP 地址。这个 IP 地址通常是从预先定义的 Pod 网络地址池中动态分配的。网络插件负责确保每个 Pod 都拥有一个唯一的、可路由的 IP 地址,并且能够与集群内的其他资源进行通信。

不同的网络插件可能会采用不同的方式来生成 Pod 的 IP 地址,例如使用 overlay 网络、VXLAN、flannel 网络等技术。但无论采用何种技术,网络插件都必须确保生成的 IP 地址是唯一的,并且能够正确地与集群中的其他组件进行通信。

因此,Pod 的 IP 地址是由网络插件根据集群配置和网络策略动态生成的,这也使得 Kubernetes 能够灵活地适应不同类型的网络环境和需求。

container IP

在 Kubernetes 中,Pod 最终会包含一个或多个容器,并且每个容器都会拥有自己的 IP 地址。这些容器 IP 地址与 Pod IP 地址是相关联的,但并不完全相同。

Pod 的 IP 地址是由网络插件分配的,而容器 IP 地址则是由容器运行时(如 Docker 或 Containerd)负责生成和管理的。通常情况下,容器 IP 地址是从 Pod 的 IP 地址空间中动态分配的,因此它们是相关联的。

在 Kubernetes 中,容器 IP 地址是通过容器运行时在 Pod 网络命名空间中为容器分配的。当容器启动时,容器运行时会为其分配一个 IP 地址,并将其添加到 Pod 网络命名空间中。这样,每个容器就拥有了自己的 IP 地址,可以在 Pod 内部进行通信。

总之,Pod IP 地址是由网络插件分配给整个 Pod 的,而容器 IP 地址是由容器运行时在 Pod 内部分配给每个容器的。它们之间是相关联的,但是在技术上是两个不同的概念。

你应该知道的端口

  • node port
  • port
  • target port
  • container port

node port

首先,nodePort是kubernetes提供给集群外部客户访问service入口的一种方式(另一种方式是LoadBalancer),所以,:nodePort 是提供给集群外部客户访问service的入口。

port

这里的port表示:service暴露在cluster ip(虚拟IP,只在集群内部使用)上的端口,:port 是提供给集群内部客户访问service的入口。

targetPort

targetPort很好理解,targetPort是pod上的端口,从port和nodePort上到来的数据最终经过kube-proxy流入到后端pod的targetPort上进入容器。

不管是通过集群内部服务入口:port还是通过集群外部服务入口:nodePort的请求都将重定向到本地kube-proxy端口(随机端口)的映射,然后将到这个kube-proxy端口的访问给代理到远端真实的pod地址上去。

containerPort

这是容器里应用监听的端口,一般我们会把target port与container port设置成相同的值,不过,这两个端口本质不是一个东西,一个请求经过port/nodePort经过kube-proxy流入targetPort,最后通过containerPort进入容器。

标签:容器,Kubernetes,ip,端口,地址,IP,Pod,k8s,port
From: https://www.cnblogs.com/lori/p/17927395.html

相关文章

  • k8s 部署 kuboard v3
    下载kuboard部署清单#wgethttps://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml修改部署清单configmap#vimkuboard-v3-swr.yaml修改内容#KUBOARD_AGENT_KEY是Agent与Kuboard通信时的密钥,请修改为一个任意的包含字母、数字的32位字符串,此密钥变更后,需要删除K......
  • 如何通过port-forward命令在本地访问 k8s 集群服务
    公众号「架构成长指南」,专注于生产实践、云原生、分布式系统、大数据技术分享概述在我们访问k8s中的pod服务时,一般通过nodeport映射pod端口进行访问,还有一种是通过ingress或者istio通过域名方式来访问,虽然两种方式能满足我们需求,但是如果针对临时访问,配置起来还是有点复杂和......
  • 一篇可供参考的 K8S 落地实践经验
    前言k8s即Kubernetes,是一个开源的容器编排引擎,用来对容器化应用进行自动化部署、扩缩和管理本篇文章将分享k8sv1.18.8的安装,以及其面板,监控,部署服务,使用Ingress-Ningx进行负载均衡的实践因为公司用的这个老版本,并且后面要负责搭建,担心无法复刻,趁此周末,实践一二,确认可行,......
  • JavaScript基础语句和window对象
    ifelse语句varsum=190varyouhuisum//赋予一个容器if(sum>=200){youhuisum=sum-10console.log(111)}else{//如果上面if不满足则都执行else语句......
  • Trunk 端口汇聚
    Trunk线路实现跨交换机的线路连接交换机和交换机之间1.左边先按照上划分好vlan网络,右边也同样划分vlan网络,2.后同样设置为trunk链路,trunk后则属于同一个vlan网络的PC端可以ping通3.左边vlan1网络可以ping通右边vlan10网络,但是不能ping通属于vlan20的PC机 ......
  • 【自摘】Hypixel公益加速IP收录页
    github原文:HiPeach.github.io/hypixel/index.htmlatc260b180deed3ac22aedfb570eeba17f56afe4c2·HiPeach/HiPeach.github.ioHypixel公益加速IP收录页欢迎来到Hypixel公益加速IP收录页这是由站长经过无数个日夜精心整理的公益IP收录页请收藏下方永久链接,这十分有用!h......
  • Windows修改pip国内镜像源
    ​ Windows下的pip配置文件路径:C:\Users\用户名\AppData\Roaming\pip\pip.ini如果pip文件夹不存在,则新建pip文件夹和pip.ini文件接着,在pip.ini文件中新增以下内容并保存:[global]index-url=https://pypi.tuna.tsinghua.edu.cn/simpleextra-index-url= https://mirro......
  • Ubuntu环境下SomeIP/CommonAPI环境搭建详细步骤
    环境搭建1.Boost安装下载Boost源码:https://www.boost.org/users/download/编译安装首先安装编译所需依赖sudoapt-getinstallbuild-essentialg++sudoapt-getinstallinstallpython-devautotools-devsudoapt-getinstallinstalllibicu-devbuild-essentialsudoapt-......
  • JavaScript读写FM1208 CPU卡源码
    本示例使用的发卡器:<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><head><metahttp-equiv=&quo......
  • JavaScript读写15693 ICod2 卡源码
    本示例使用设备:<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><head><metahttp-equiv="......