有时在我们的实际开发中我们希望直接访问k8s service 暴露的服务,以及pod的ip
解决方法,实际上很多

  • nodeport
  • ingress
  • port-forword
    实际上我们还有一种方法:正向代理

nginx 正向代理配置

为了简单,只处理http 流量,实际上我们可以基于envoy 搞这个事情也是很不错的

  • nginx conf
 
worker_processes 1;
events {
    worker_connections 1024;
}
http {
    include mime.types;
    resolver 10.254.8.8; # 比较重要
    default_type application/octet-stream;
    server {
        listen 8080;
        charset utf-8;
        location / {
   proxy_pass http://$http_host$request_uri;
        }
    }
}
  • dockerfile
FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf
  • k8s 部署
    service nodeport 类型
 
apiVersion: v1
kind: Service
metadata:
  annotations:
    kompose.cmd: kompose -f docker-compose.yaml convert -o k8s
    kompose.version: 1.17.0 ()
  creationTimestamp: null
  labels:
    io.kompose.service: proxy
  name: proxy
spec:
  type: NodePort
  ports:
  - name: "8080"
    port: 8080
    targetPort: 8080
  selector:
    io.kompose.service: proxy
status:
  loadBalancer: {}
 

Deployment

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    kompose.cmd: kompose -f docker-compose.yaml convert -o k8s
    kompose.version: 1.17.0 ()
  creationTimestamp: null
  labels:
    io.kompose.service: proxy
  name: proxy
spec:
  replicas: 1
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        io.kompose.service: proxy
    spec:
      containers:
      - image: dockerimagehost/library/nginx-proxy
        name: proxy
        ports:
        - containerPort: 8080
      restartPolicy: Always
status: {}
 
 

配置proxy

这个我们可以根据自己的系统配置,mac,linux ,Windows,都少有不同

  • 使用curl 测试
curl   --proxy http://nodeid:nodeport   http://10.254.198.240:8500
  • 配置了全局proxy 的访问

    此ip 为service ip 实际上直接使用pod ip 也是可以访问的

说明

以上是一个简单的实践,实际上上一些service mesh 的框架实现也是这种模式进行不通流量的处理的

参考资料

http://nginx.org/en/docs/http/ngx_http_proxy_module.html 
https://github.com/rongfengliang/nginx-forward-for-k8s-pod-ip

使用nginx 正向代理暴露k8s service && pod ip 外部直接访问的更多相关文章

  1. Centos8 Docker+Nginx部署Asp.Net Core Nginx正向代理与反向代理 负载均衡实现无状态更新

    首先了解Nginx 相关介绍(正向代理和反向代理区别) 所谓代理就是一个代表.一个渠道: 此时就涉及到两个角色,一个是被代理角色,一个是目标角色,被代理角色通过这个代理访问目标角色完成一些任务的过程称 ...

  2. nginx正向代理,反向代理,透明代理(总结)

    1正向代理 正向代理,也就是传说中的代理,他的工作原理就像一个跳板, 简单的说, 我是一个用户,我访问不了某网站,但是我能访问一个代理服务器 这个代理服务器呢,他能访问那个我不能访问的网站 于是我先连 ...

  3. Nginx正向代理让无法直接上网的机器通过代理上网

    Nginx正向代理让无法直接上网的机器通过代理上网 在阿里云平台买了几台ECS.但是只要其中一台开通了公网.由于要初始化系统环境,需要网络安装相关依赖. Nginx正向代理配置: 一.Nginx 正向 ...

  4. nginx正向代理

    通过把Nginx设置为正向代理,我们就可以在局域网中用运行着Nginx的主机作为正向代理服务器了.那什么是正向代理和反向代理呢?正向代理和反向代理-百度百科 正向代理:如果把局域网外的Internet ...

  5. Nginx正向代理代理http和https服务

    Nginx正向代理代理http和https服务 1. 背景需求 通过Nginx正向代理,去访问外网.可实现局域网不能访问外网的能力,以及防止在上网行为上,留下访问痕迹. 2. 安装配置 2.1安装 w ...

  6. PCB 利用nginx正向代理实现上网

    在PCB行业中,为了保证服务器的安全性,服务器正常都是需要与外网断开的,如果想在服务器通过浏览器下载一点东西是不行.通常作法是在一台可以上网的电脑下载文件,接着放到网络盘上,再从网络盘拷贝到服务器上. ...

  7. nginx 正向代理配置

    需求场景:从以下俩张图可以比较直观的理解正向代理的作用(在其他文章中会表示为“http代理”,注意当前文档的配置不支持https代理) Nginx正向代理配置文件: server{ listen de ...

  8. Nginx笔记总结十三:nginx 正向代理

    server { listen ; location / { resolver 202.106.0.20 202.106.119.116; resolver_timeout 30s; proxy_pa ...

  9. NGINX前端代理TOMCAT取真实客户端IP

    nginx前端代理tomcat取真实客户端IP 使用Nginx作为反向代理时,Tomcat的日志记录的客户端IP就不在是真实的客户端IP,而是Nginx代理的IP.要解决这个问题可以在Nginx配置一 ...

随机推荐

  1. docker查看日志记录

    命令格式: $ docker logs [OPTIONS] CONTAINER Options: --details 显示更多的信息 -f, --follow 跟踪实时日志 --since strin ...

  2. JZOJ5833 永恒

    题目大意 给你一个树,每个节点上有有一个部落,以及部落的人数,要你求出每个节点的子树里面人数最多的部落是哪一个(人数相同部落编号最小的). 思路 全网第一篇分治题解 考虑树的dfs序,然后分治处理,每 ...

  3. Ole操作帮助类

    /// <summary> /// Ole操作类 /// </summary> public class OleDataBaseHandle { private static ...

  4. 十二.作业难点(有IT大牛路过的可以帮我解答我的疑问?万分感谢)--转行的苦逼人

    今天开始改变写博客风格,其他不多说. 今天题目如下: # 7.写函数,完成以下功能: (8分) # 例如有: # user_list=[ # {"name": "alex ...

  5. VUE过滤器 基础回顾5

    过滤器是一种在模板中处理数据的便捷方式,特别适合对字符串和数组进行简易显示 <div id="app"> <p>商品1花费{{oneCost | froma ...

  6. js节流与防抖函数封装

    js节流与防抖函数封装 常见应用场景: window的 resize 和 scroll 事件: 文字输入时的 keyup 事件: 元素拖拽.移动时的 mousemove 事件: 防抖 定义:多次触发事 ...

  7. vue中keep-alive,include的指定页面缓存问题

    做vue项目时,有时要在某些页面做缓存,而其它页面不要.比如:A:首页,B:获取所有订单页面,C:订单详情页面:从A(首页)进入 B(获取所有订单)时应该不缓存,B(所有订单)进入 C(订单详情)订单 ...

  8. [LeetCode] 543. 二叉树的直径 ☆(递归、数最大深度)

    描述 给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过根结点. 示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长 ...

  9. PHP java时间戳转php时间戳

    /** * java时间戳转php时间戳 * @param int $javaUt java的时间戳 * @return int * @Date 2019/8/26 */ public static ...

  10. ubuntu18.04搭建NFS服务器

    系统环境: NFS服务器操作系统: ubuntu18.04 server lts NFS服务器IP:  192.168.1.164 注: NFS服务器 指的是 待安装 NFS服务 的机器(物理机或者虚 ...