首页 > 其他分享 >kubernetes中使用Service反向代理外部服务

kubernetes中使用Service反向代理外部服务

时间:2024-03-13 16:58:50浏览次数:17  
标签:endpoint Service service 端口 svc 反向 kubernetes name

参考
https://blog.csdn.net/weixin_43334786/article/details/128432325

当我们的某个服务在外部集群的时候,但是又想k8s集群内的应用连接它,这是可以创建一个service,用service代理外部服务,然后集群内就能连接该service,从而间接的访问外部服务。

创建一个service代理外部的服务

创建一个没有标签选择器的service,这样的service就不会关联到任何pod,从而也不会自动创建endpoint。这时我们手动创建一个与service同名的endpoint,使用endpoint来定义外部服务的地址端口,service会自动关联该endpoint。
service是如何与endpoint关联的?需要特别注意一下几点:

  1. endpoint的名称必须要与service的名称相同,这样两者才能关联;
  2. service定义spec.ports的ports的时候,包含port端口、name端口名称、protocol协议;
  3. endpoint中定义外部服务的IP和端口,endpoint的名称一定要与service的名称一样,协议也要一样,端口的name也要与service的端口的name一样,端口协议也要与service的端口协议一样,不然endpoint不能与service进行关联。

下面是演示示例

  1. 在一台服务器(192.168.3.215)部署http服务,启动端口为80,可以使用浏览器正常访问
  2. 创建service和endpoint的配置文件,如下
# cat svc.yaml 
apiVersion: v1
kind: Service
metadata:
  name: outside-svc # Service的名称,跟Endpoints名称保持一致
spec:
  type: NodePort # Service的类型,需要对外提供服务的话,使用NodePort,如不需要外部访问,只限于内部访问,则使用ClusterIP
  ports:
  - name: out-agent-port # 端口名称,跟Endpoints的端口名称保持一致
    port: 80 #集群內部访问端口
    nodePort: 32000 # 对外提供服务的端口,仅NodePort模式下生效
    protocol: TCP # 协议类型
  sessionAffinity: None
---
apiVersion: v1
kind: Endpoints 
metadata:
  name: outside-svc # Endpoints的名称,跟Service名称保持一致
subsets:
- addresses:
  - ip: 192.168.3.215 # 需要被代理出去的服务器的IP,即我们上面部署了httpd服务的IP
  ports:
  - port: 80 # httpd服务的端口
    protocol: TCP # 协议类型,需要跟Service的保持一致
    name: out-agent-port # 端口名称,跟Service的端口名称保持一致

部署

# kubectl apply -f svc.yaml

查看部署的svc和ep

# kubectl get svc outside-svc
NAME          TYPE       CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
outside-svc   NodePort   10.0.0.161   <none>        80:32000/TCP   10m
# kubectl get ep outside-svc
NAME          ENDPOINTS          AGE
outside-svc   192.168.3.215:80   10m

可以看到epoints指向是k8s集群外部地址
外部使用node地址+nodeport映射端口可以访问即以下两个地址访问的服务是一致的

# 源服务器访问
# http://192.168.3.215
# k8s集群node地址+nodeport访问
# http://192.168.3.65:32000

标签:endpoint,Service,service,端口,svc,反向,kubernetes,name
From: https://www.cnblogs.com/minseo/p/18071002

相关文章

  • 使用kubeadm部署Kubernetes 1.26及其它版本
    1.系统配置环境信息:系统:CentOSLinuxrelease7.6.1810(Core)k8s版本:1.26.0(可自己选择)IP主机名规划角色192.168.223.123auto-inspaction-1master192.168.223.68auto-inspaction-0node192.168.223.73auto-inspaction-2node在各个主机上完成下......
  • 使用IDEA+groovy快速生成entity、dto、dao、service、serviceImpl
    groovy代码importcom.intellij.database.model.DasTableimportcom.intellij.database.util.Caseimportcom.intellij.database.util.DasUtilimportjava.text.SimpleDateFormat/**Availablecontextbindings:*SELECTIONIterable<DasObject>*PROJ......
  • kubernetes 安装 kubernetes-dashboard 7.x
    kubernetes安装kubernetes-dashboard7.x介绍Kubernetes仪表板是Kubernetes集群的通用、基于Web的UI。它允许用户管理集群中运行的应用程序并对其进行故障排除,以及管理集群本身。从7.x版开始,不再支持基于Manifest的安装。现在只支持基于Helm的安装。由于多容器设置和对Kong网......
  • Ubuntu Server 部署 FRP 反向代理
    踩坑记录第一次我使用Docker镜像snowdreamtech/frps部署frps,发现始终连不上去。在本地的Dockerlog中显示如下错误:2024-03-1217:02:312024/03/1209:02:31[I][root.go:142]startfrpcserviceforconfigfile[/etc/frp/frpc.toml]2024-03-1217:02:312024/03/12......
  • jmeter5.1进行webservice接口测试
    原始代码展示如下:分别为soap1.1和soap1.2的源代码:测试测试窗体只能用于来自本地计算机的请求。SOAP1.1以下是SOAP1.2请求和响应示例。所显示的占位符需替换为实际值。POST/WuService.asmxHTTP/1.1Host:192.168.20.230Content-Type:text/xml;charset=utf-8Cont......
  • 将Asp.net Core 微服务容器部署到 Kubernetes
    将微服务容器部署到KubernetesKubernetes会为你运行容器,需要通过YAML文件描述希望Kubernetes执行的操作,在Kubernetes上部署和运行后端服务简单操作如下步骤安装Kubernetes工具和实现我们需要同时安装kubectl工具和Kubernetes实现按照参考:https://www.cnblogs.co......
  • 在Linux中,nginx反向代理和负载均衡实现原理是什么?
    在Linux环境中,Nginx实现反向代理和负载均衡是通过编写和配置Nginx服务器的配置文件来完成的。以下是如何利用Nginx实现这两种功能的基本原理和步骤:1.反向代理实现原理:反向代理是一种服务端代理,它允许Nginx服务器接收来自客户端的所有请求,并根据配置规则将这些请求透明地转发给......
  • kubernetes-服务器重启后集群检查
    kubernetes-服务器重启后集群检查搭建k8s集群的服务器因机房断电原因挂掉。以下是恢复后的常规检查检查k8s的master组件服务systemctlstatuskube-apiserver.servicekube-controller-manager.servicekube-scheduler.service检查k8s的node组件服务systemctlstatuskubel......
  • Kubernetes与Docker Swarm的区别如何
    1)安装和部署:k8s安装很复杂;但是一旦安装完毕,集群就非常强大,DockerSwarm安装非常简单;但是集群不是很强大;2)图形用户界面:k8s有,DockerSwarm无;3)可伸缩性:k8s支持,DockerSwarm比k8s快5倍;4)自动伸缩:k8s有,DockerSwarm无;5)负载均衡:k8s在不同的Pods中的不同容器之间平衡负载流量,需要手......
  • Kubernetes 网络
    简述Kubernetes网络模型Kubernetes网络模型中每个Pod都拥有一个独立的IP地址,不管它们是否运行在同一个Node(宿主机)中,都要求它们可以直接通过对方的IP进行访问;同时为每个Pod都设置一个IP地址的模型使得同一个Pod内的不同容器会共享同一个网络命名空间,也就是同一个Linux网络协议栈......