阿里云Kubenetes服务获取出站IP地址的快速说明

简介: 本文介绍了如何在阿里云Kubernetes集群中获取Next.js服务的出口IP,以便在AWS EC2安全组中配置访问规则。可通过进入Pod执行API调用获取源IP,或在Node.js中使用HTTP请求获取。此外,也可通过阿里云NAT网关的EIP直接获取出口IP。

我在阿里云上有一个 Kubernetes 集群,其中有一个 Next.js 托管服务,带有单个 pod,并且 Next.js 服务有一个服务器端 API 调用,可以从 AWS 中的 EC2 调用端点

image.png

因此,我需要在 AWS EC2 的安全组中添加传入规则,但是我的 Next.js 服务是什么 IP?

解决方案

解决方案是进入吊舱,发出 API 调用并捕获来源。

为此,我们可以执行以下操作:

# 获取 pod 列表并识别你的 pod 名称
kubectl -n <namespace> get pod 

# 进入 pod 的 shell(使用 bash 或 sh,取决于你的容器)
 kubectl -n <namespace> exec -it <your pod name> -- bash 

# 从 shell 内部,curl 结果将包含来源
curl http://httpbin.org/ip 

# 如果安装了 jq,则可以提取该字段:
# curl -s http://httpbin.org/ip | jq -r '.origin'

鉴于我的容器非常小并且没有安装 curl,而是安装了 node.js,所以我可以这样写:

const http = require ( 'http' ); 

function  getOutgoingIPAddress ( ) {
    
  return  new  Promise ( ( resolve, rejection ) => {
    
    const options = {
    
      hostname : 'httpbin.org' , 
      path : '/ip' , 
      method : 'GET'
     }; 

    const req = http.request ( options, ( res ) => {
    
      let data = ' ' ; 

      res.on ( 'data' , ( chunk ) => {
    
        data += chunk; 
      }); 

      res.on ( 'end' , ( ) => {
    
        const respond = JSON.parse (data); const 
        outgoingIPAddress = respond.origin ; resolve (outgoingIPAddress);       });     });     req.on ( ' error ' , ( error ) => {
    rejection (error);     }); req.end     ( );   }); } getOutgoingIPAddress ()   . then ( ( outgoingIPAddress ) => {
    console.log ( '传出IP 地址:' , outgoingIPAddress);   })   .catch ( ( error ) => {
    console.error ( '错误:' , error ); }   );

另一方面,如果您可以访问阿里云的管理控制台,则该信息位于 Kubernetes 集群的虚拟私有云 (VPC) 内部 NAT 网关的 EIP 中:

image.png

目录
相关文章
|
存储 安全 Unix
/var/log/messages说明
【4月更文挑战第5天】`/var/log/messages`是类Unix系统(包括Linux)的日志文件,存储系统启动、关闭、内核消息、服务状态和服务错误等信息。内容可能因配置和日志系统(如syslog、rsyslog、journald)不同而变化。现代Linux可能使用`journalctl`等工具访问journald日志,提供更强大管理功能。
2823 1
/var/log/messages说明
|
Kubernetes 网络协议 Linux
阿里云linux(Alibaba Cloud Linux) 系统安装docker的相关过程和优化配置参考
阿里云linux(Alibaba Cloud Linux) 系统安装docker的相关过程和优化配置参考 Alibaba Cloud Linux 3.x 对标 centos8 Alibaba Cloud Linux 2.x 对标 centos7
4052 0
|
存储 Kubernetes Linux
pod介绍之 容器分类与重启策略
pod介绍之 容器分类与重启策略
3556 148
|
Linux 网络安全 开发工具
|
Ubuntu Oracle 关系型数据库
Oracle VM VirtualBox之Ubuntu 22.04LTS双网卡网络模式配置
这篇文章是关于如何在Oracle VM VirtualBox中配置Ubuntu 22.04LTS虚拟机双网卡网络模式的详细指南,包括VirtualBox网络概述、双网卡网络模式的配置步骤以及Ubuntu系统网络配置。
3145 3
|
SQL 关系型数据库 MySQL
如何查看本地公网 IP 地址?
如何找到本地的公网IP?这篇文章帮到你。
3329 3
|
Kubernetes 负载均衡 算法
k8s学习--kube-proxy的三种工作模式详细解释
k8s学习--kube-proxy的三种工作模式详细解释
1078 0
|
存储 JSON 安全
Docker 的 overlay2 扩容教程
Docker 的 overlay2 扩容教程
1569 4
|
存储 Kubernetes 调度
K8S常见的持久化(存储)方案用法详解
K8S常见的持久化(存储)方案用法详解
1670 3