k8s网络与本地开发环境网络互通方案(一)

本文探讨了解决Kubernetes集群内外网络隔离的问题,提出了三种可行的解决方案:配置本机静态路由表、在路由器上设置静态路由表以及采用桥接VPN的方式。这些方案能够帮助开发人员更便捷地访问集群内的服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现状

k8s集群内是有一套完整网络环境,我们不能直接通过IP访问到k8s集群内的pod 或者service,只能通过nodeport 或者ingress 才能访问到服务.

痛点

开发人员进行微服务开发的时候需要通过服务发现进行Pod级服务的直接访问,但是现在k8s网络没办法做到直接访问pod 或者service的ip

解决方案

对于打通k8s网络与我们的开发网络根据k8s node 机器所在的网络情况 有以下几种方案:

  1. 本机静态路由表
  2. 路由器配置静态路由表
  3. VPN 桥接接入

1. 本机静态路由表

当 k8s node 所在网络与开发网络在同一个子网内时,可以通过配置本机的静态路由表 直接访问到k8s集群内pod 以及service
由于 k8s node 节点上都自动开启了 内核路由转发功能的,所以只要配置静态路由表 转发到 任意一台node 节点即可,操作如下:
k8s 集群环境:

node:  192.168.1.10/24 ,192.168.1.11/24
pod cidr: 192.168.100.0/24
service cidr : 192.168.101.0/24

windows 添加静态路由表命令

route add 192.168.100.0 mask 255.255.255.0 192.168.1.10
route add 192.168.101.0 mask 255.255.255.0 192.168.1.10

2. 在路由器上设置静态表

第一种设置只能针对本机有效,如果想让在该网络内所有机器都可以直接访问k8s集群内 pod service的话,可以在路由器的静态路由表中增加静态路由
网络 192.168.100.0 子网掩码 255.255.255.0 网关 192.168.1.10
网络 192.168.101.0 子网掩码 255.255.255.0 网关 192.168.1.10

3. 桥接VPN

当k8s 和本地开发环境网络不在同一个 局域网内的话, 就没有办法做到通过静态路由进行转发
只能
如果正常在k8s集群内部署一个vpn的话 只能实现 开发环境访问k8s集群内 正常,但是无法实现集群内访问开发环境的集群,所以需要 采用桥接VPN+ 静态路由 双重策略下,才能实现互相都可以直接使用ip进行访问
详细配置方案参考下一篇文章
k8s网络与本地开发环境网络互通方案(二)-桥接VPN

### 回答1: 基于Kubernetes(简称k8s)的平台技术架构主要由以下几个关键组件组成: 1. Master:负责整个平台的控制和管理,包括监控、调度、扩展等功能。Master节点通常由三个组件组成:API服务器、调度器和控制器管理器。 2. Node:也称为工作节点,负责运行应用程序的容器。节点上的Kubelet服务负责Master节点通信并监控节点的状态。每个节点上通常还运行着个容器运行时,如Docker,用于创建和管理容器。 3. Pod:是k8s中的最小调度单位,可以包含个或多个容器。Pod中的容器共享网络和存储资源,可以相互之间进行通信和共享数据。 4. 控制器:负责处理平台的自愈和自动伸缩能力。比如,ReplicationController可确保指定数量的Pod副本在任何时候都处于运行状态,而Deployment则可以进行滚动升级和回滚。 5. 服务发现和负载均衡:k8s可以自动为Pod提供稳定的网络访问地址,这些地址被封装到服务(Service)对象中。服务可以通过标签(Label)选择器将请求转发到个或多个后端Pod实例,从而提供负载均衡的功能。 6. 存储管理:k8s提供了多种存储管理方式,如主机路径挂载、共享存储(NFS)、云存储(AWS EBS、Azure Disk等)等,以满足应用程序对持久性存储的需求。 7. 网络管理:k8s可以创建和管理虚拟网络(Virtual Network),使得不同节点上的Pod可以互相通信。此外,还可以通过网络插件(如Calico、Flannel等)实现跨主机的容器网络互联。 基于k8s的平台技术架构通过将应用程序容器化,并提供了系列功能和工具,使得应用程序的部署、扩展和管理变得更加简单和高效。不仅如此,k8s的开源生态系统还允许第三方开发者开发丰富的插件和扩展,以满足不同场景和需求的应用程序部署和管理需求。 ### 回答2: 基于Kubernetes(简称K8s)的平台技术架构是种用于管理容器化应用程序的开源容器编排平台。K8s的技术架构主要包括控制节点、工作节点、存储和网络等组件。 在K8s技术架构中,控制节点是整个系统的核心,负责管理和协调整个集群。它包含了多个核心组件,如API Server、Controller Manager、Scheduler等。API Server提供了外部用户和其他组件交互的接口,Controller Manager负责监控系统状态并做出相应的调整,Scheduler用于调度应用程序到工作节点上。 工作节点是集群中的工作单元,负责运行容器化应用程序。每个工作节点上运行着个容器运行时(如Docker),同时还有Kubelet进程和Kube-proxy进程。Kubelet是个代理程序,控制节点进行通信,负责管理容器的生命周期、资源分配和监控等任务。Kube-proxy负责处理集群内部的网络通信,实现服务的负载均衡和容器的访问控制等功能。 存储是K8s中另个重要的组件,用于持久化存储应用程序的数据。K8s提供了多种存储解决方案,如本地存储、网络存储和云存储等。用户可以根据应用程序的需要选择适合的存储卷,并通过K8s的存储管理器进行管理。 网络K8s中连接各个组件的重要环节,负责实现容器之间的通信和服务的访问。K8s提供了多种网络插件,如Flannel、Calico和Weave等,用于实现集群内部的网络互通和外部的网络访问。 总结来说,基于K8s的平台技术架构包括控制节点、工作节点、存储和网络等组件。通过这些组件的协作配合,K8s能够有效地管理和运行容器化应用程序,实现自动化的部署、扩缩容、负载均衡和故障恢复等功能。 ### 回答3: k8s种容器编排平台,为开发者提供了种简单、高效、可扩展的方式来管理和部署容器化应用程序。基于k8s的平台技术架构主要包括以下几个关键组件: 1. 控制平面(Control Plane):控制平面由组核心组件组成,负责管理整个kubernetes集群的状态和配置信息。这些核心组件包括API服务器、调度器、控制器管理器和etcd等。API服务器是k8s系统的后端服务,用于管理和接收来自用户和其他组件的请求。调度器负责根据资源需求和约束条件选择将容器调度到集群中的节点。控制器管理器负责监视集群状态变化,并执行相应的操作。而etcd是个分布式键值存储系统,用于存储集群的配置信息。 2. 节点(Node):节点是实际运行工作负载的主机或虚拟机。每个节点上运行着个kubelet进程,它是节点上控制平面通信的代理。kubelet负责管理和监控节点上的容器,并API服务器通信以接收指令。另外,节点上还运行着kube-proxy,用于实现k8s服务的负载均衡和网络代理。 3. 容器化应用程序:k8s是为容器化应用程序设计的,它提供了种统的部署、扩展和管理的方式。开发者可以通过定义个或多个容器镜像,并将其封装到个Pod中来描述应用程序的组件。Pod是最小的部署单元,可以包含个或多个容器。k8s通过创建和管理Pod,保证应用程序的运行和可伸缩性。 4. 网络和存储:k8s提供了可插拔的网络和存储插件,以适应不同的环境和需求。网络插件负责为Pod提供网络连接,使得它们可以互相通信。存储插件则为Pod提供持久化存储,以便应用程序可以存储和访问数据。 基于k8s的平台技术架构能够帮助开发者轻松地构建、部署和管理容器化应用程序,提高开发效率和系统可用性。通过使用k8s的自动化管理和弹性伸缩功能,可以实现高可用性、可扩展性和容错性,从而满足不断变化的业务需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值