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

这篇具有很好参考价值的文章主要介绍了k8s~你应该知道的ip和你应该知道的端口。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

你应该知道的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地址上去。

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

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

containerPort

这是容器里应用监听的端口,一般我们会把target port与container port设置成相同的值,不过,这两个端口本质不是一个东西,一个请求经过port/nodePort经过kube-proxy流入targetPort,最后通过containerPort进入容器。文章来源地址https://www.toymoban.com/news/detail-760770.html

到了这里,关于k8s~你应该知道的ip和你应该知道的端口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【云原生】细数 k8s支持的4种类型的container

    Ephemeral容器 init容器 标准容器和Sidecar容器 总结 截止到目前,k8s已经支持标准容器,sidecar容器,init容器,Ephemeral容器 临时容器与其他容器的不同之处在于,它们缺少对资源或执行的保证,并且永远不会自动重启,因此不适用于构建应用程序。临时容器使用与常规容器相同的

    2024年02月05日
    浏览(36)
  • k8s实战案例之部署redis单机和redis cluster

    redis是一款基于BSD协议,开源的非关系型数据库(nosql数据库),作者是意大利开发者Salvatore Sanfilippo在2009年发布,使用C语言编写;redis是基于内存存储,而且是目前比较流行的键值数据库(key-value database),它提供将内存通过网络远程共享的一种服务,提供类似功能的还有

    2024年02月08日
    浏览(49)
  • 如果把k8s比作一个餐厅,应该怎样通俗的解释 k8s的核心组件和运行原理

    可以通过以下方式理解Kubernetes的二级选项: Master节点: API Server(API服务器):API Server就像是餐厅的前台接待员,接收顾客的点餐请求,并将请求传达给相应的餐桌(Pod)。 etcd(键值存储):etcd就像是餐厅的菜单和订单记录本,它存储着餐厅的菜单信息、订单状态以及顾

    2024年02月11日
    浏览(48)
  • 没错,数据库确实应该放入 K8s 里!

    昨天冯老板发了一篇文章探讨了为什么将数据库放入 K8S 中不是一个明智的选择。 如果是四年前有人质疑容器化数据库我觉得还可以 battle 一下,都 2023 年了还有人不能认清这个大势,我就有必要来谈谈我的看法了。 我从 K8s 0.9 版本时就开始做这件事,当时确实略早,CSI 都不

    2024年02月05日
    浏览(60)
  • K8S cluster with multi-masters on Azure VM

    在 Azure VM 实例上部署 KubeSphere 基础模板 需要修改 IP 地址和 VM Image的可以在模板中修改。 可以修改 master 和 node 的名字前缀、部署区域、数量和 VM 类型 ssh 22 对外由 LB 配置 NAT 端口实现,如配置文件中 50200 → master-0 已经包含的规则转换(不含 30880) 服务 协议 规则 后端端口

    2024年02月11日
    浏览(35)
  • 【k8s】Unable to restart cluster, will reset it: apiserver healthz异常

    问题描述 该问题在执行 minikube start 命令后出现的无法启动的异常 完整异常描述: 翻译:无法重新启动群集,将重置它:apiserver healthz:apiserver进程从未出现 问题解决办法 问题分析:未构建成功服务,并由于存在国内墙的困扰,哪怕指定了阿里云的镜像库依旧失败,这可能是由

    2023年04月10日
    浏览(44)
  • K8s in Action 阅读笔记——【14】Securing cluster nodes and the network

    迄今为止,创建了 Pod 而不考虑它们允许消耗多少 CPU 和内存。但是,正如将在本章中看到的那样,设置 Pod 预期消耗和允许消耗的最大数量是任何 Pod 定义的重要部分。设置这两组参数可以确保 Pod 只占用 Kubernetes 集群提供的资源中的份额,并且还影响 Pod 在集群中的调度方式

    2024年02月08日
    浏览(47)
  • K8s in Action 阅读笔记——【13】Securing cluster nodes and the network

    Pod中的容器通常在不同的Linux名称空间下运行,这使得它们的进程与其他容器或节点默认名称空间下运行的进程隔离开来。 例如,我们学习到每个Pod都拥有自己的IP和端口空间,因为它使用其自己的网络名称空间。同样,每个Pod也拥有自己的进程树,因为它有自己的PID名称空

    2024年02月11日
    浏览(47)
  • k8s各组件端口

    10249:用于节点上的kubeproxy的健康检查和状态查询。 10256:用于NodePort服务的负载均衡。 portpool(30000-32767):NodePort服务的端口范围,这些端口用于外部流量访问Kubernetes集群中的服务。 10250:kubelet API服务器的端口,用于集群中的其他组件(如kube-scheduler、kube-controller-manager、

    2024年02月15日
    浏览(34)
  • k8s初始化报错:[ERROR CRI]: container runtime is not running(已解决)

    如有错误,敬请谅解! 此文章仅为本人学习笔记,仅供参考,如有冒犯,请联系作者删除!!          在网上找了好几天解决方案,大部分都是下述方案:         但是当我们尝试之后仍无法解决问题。 如有错误,请联系作者删除 并恳请同行朋友予以斧正,万分感谢!

    2024年02月07日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包