如何向世界公开我的 nginx EKS 集群?

Posted

技术标签:

【中文标题】如何向世界公开我的 nginx EKS 集群?【英文标题】:How can i expose my nginx EKS cluster to the world? 【发布时间】:2021-12-27 10:42:50 【问题描述】:

我正在尝试在 eks 集群上部署此基本 nginx 映像,但在尝试访问公共 IP 时似乎无法访问它。 我正在使用官方 EKS 模块并进行以下设置:

我还使用 k8s 提供程序进行了此部署设置:


resource "kubernetes_deployment" "helloworld" 
    metadata 
       name = "helloworld"
    
    spec 
      replicas = 2
      selector 
        match_labels = 
          app = "helloworld"
         
      
      template 
        metadata 
          labels = 
            app = "helloworld"
          
        
        spec 
          container 
            name = "nginx"
            image = "nginx"
            port 
              container_port = 80 
            
           
          
       
    


resource "kubernetes_service" "example" 
  metadata 
    name = "helloworld"
  
  spec 
    selector = 
      app = "helloworld"
    
    session_affinity = "ClientIP"
    port 
      port        = 8080
      target_port = 80
    

    type = "NodePort"
  

当我去检查kubectl describe pods时,我被告知服务无法访问:

我在这里错过了什么?

【问题讨论】:

分享描述 pod 截图或细节,而不是用自己的话。 @HarshManvar 我添加了更新截图 您是如何尝试访问该服务的?所以使用 terraform pod 被部署但之后面临问题是这样吗?你试过 : 【参考方案1】:

在尝试访问公共 IP 时到达它

使用负载均衡器服务公开您的 nginx:

kubectl expose deployment helloworld --port 80 --target-port 80 --name helloworld-service --type LoadBalancer

获取外部IP:

kubectl get services helloworld-service

执行curl <external IP>,你的 helloworld nginx 应该会响应你。

【讨论】:

谢谢!这些服务类型把我搞糊涂了哈哈

以上是关于如何向世界公开我的 nginx EKS 集群?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Terraform 配置 EKS ALB

如何使用 nginx-ingress 控制器通过 TCP 公开多个服务?

将 S3 事件订阅到 SQS 队列而不向世界公开 SQS?

aws vpc 端点 - 它是如何工作的?

如何从 EKS 集群为 Django 提供静态文件?

使用 nginx 反向代理在 Kubernetes 中公开服务