深入理解Kubernetes网络:Node IPs vs Pod IPs vs Cluster IPs vs NodePort

本文介绍了Kubernetes中的关键网络概念,包括NodeIPs(节点IP),PodIPs(Pod内IP),ClusterIPs(服务IP)和NodePort(节点端口)。理解这些概念有助于有效管理和扩展容器化应用的网络架构。

Kubernetes(K8s)是一个广泛使用的容器编排系统,它简化了容器化应用程序的部署、扩展和管理。在Kubernetes中,网络是一个核心组成部分,允许不同的服务和应用组件彼此通信。理解Kubernetes中的不同网络资源,如Node IPs、Pod IPs、Cluster IPs和NodePort,对于有效地使用和管理Kubernetes集群至关重要。下面将逐一介绍这些概念及其之间的区别。

原文: https://www.howtouselinux.com/post/k8s-node-ips-vs-pod-ips-vs-cluster-ips-vs-nodeport

Node IPs

Node IPs是分配给Kubernetes集群中每个节点(Node)的IP地址。这些IP地址是节点在物理或虚拟网络中的标识,允许网络中的其他节点或外部系统与之通信。节点可以有一个或多个IP地址,包括公网IP和私网IP,取决于其网络配置和集群环境。

Pod IPs

在Kubernetes中,Pod是基本的工作单元,每个Pod封装了一个或多个容器。每个Pod都分配有一个唯一的IP地址,称为Pod IP。这个IP地址仅在Kubernetes集群内部可见,允许集群中的其他Pods与该Pod通信。Pod IP是临时的,当Pod重新创建或调度到不同的节点时,它可能会改变。

Cluster IPs

Cluster IP是一种特殊的服务(Service)类型,用于在Kubernetes集群内部提供一个稳定的IP地址来访问一组功能相似的Pods。使用Cluster IP,可以实现负载均衡和服务发现,无需关心后端Pods的具体数量或IP地址。Cluster IP是虚拟的,它不直接映射到集群中的任何实际节点或Pod,而是由Kubernetes网络组件管理和路由。

NodePort

NodePort是另一种服务(Service)类型,它允许从集群外部通过指定的端口访问一个服务。当创建一个NodePort服务时,Kubernetes在所有节点上分配一个相同的端口(默认范围是30000-32767),并将到达任何节点此端口的流量转发到后端Pod。这提供了一种简单的方法来公开集群内的服务,特别是在没有外部负载均衡器时。

总结

  • Node IPs:集群节点的外部IP地址,用于节点间通信和从外部访问节点。
  • Pod IPs:分配给每个Pod的内部IP地址,仅在集群内部可见,用于Pod间通信。
  • Cluster IPs:虚拟IP地址,用于通过单个稳定的IP地址在集群内部访问一组Pods,支持负载均衡和服务发现。
  • NodePort:在所有节点上开放的特定端口,允许从集群外部通过任何节点的IP地址和该端口访问服务。

理解这些不同的IP类型和NodePort是设计和维护Kubernetes集群网络架构的关键,它们为应用的可扩展性和可访问性提供了强大的支持。

Name: calico-kube-controllers-658d97c59c-dwrjq Namespace: kube-system Priority: 2000000000 Priority Class Name: system-cluster-critical Service Account: calico-kube-controllers Node: node2/192.168.72.102 Start Time: Tue, 25 Mar 2025 22:47:10 +0800 Labels: k8s-app=calico-kube-controllers pod-template-hash=658d97c59c Annotations: <none> Status: Pending IP: IPs: <none> Controlled By: ReplicaSet/calico-kube-controllers-658d97c59c Containers: calico-kube-controllers: Container ID: Image: docker.io/calico/kube-controllers:v3.25.0 Image ID: Port: <none> Host Port: <none> State: Waiting Reason: ContainerCreating Ready: False Restart Count: 0 Liveness: exec [/usr/bin/check-status -l] delay=10s timeout=10s period=10s #success=1 #failure=6 Readiness: exec [/usr/bin/check-status -r] delay=0s timeout=1s period=10s #success=1 #failure=3 Environment: ENABLED_CONTROLLERS: node DATASTORE_TYPE: kubernetes Mounts: /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-wtxjf (ro) Conditions: Type Status Initialized True Ready False ContainersReady False PodScheduled True Volumes: kube-api-access-wtxjf: Type: Projected (a volume that contains injected data from multiple sources) TokenExpirationSeconds: 3607 ConfigMapName: kube-root-ca.crt ConfigMapOptional: <nil> DownwardAPI: true QoS Class: BestEffort Node-Selectors: kubernetes.io/os=linux Tolerations: CriticalAddonsOnly op=Exists node-role.kubernetes.io/control-plane:NoSchedul 我这个po不是flannel ??是不是跟flannel环境搞混了
03-26
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值