当前位置: 首页 > 知识库问答 >
问题:

库伯内特斯服务无法在AWS-EKS上访问

边明煦
2023-03-14

我在aws上创建了一个简单的EKS集群,如https://github.com/terraform-providers/terraform-provider-aws/tree/master/examples/eks-getting-started.所述

我在这个集群中创建了一个nginx部署和一个Loadbalancer类型的服务,如下所述。该配置在minikube上本地工作。

在AWS上,我可以看到pod和服务已启动,服务有一个外部ip,我可以通过kubectl端口转发访问pod,我可以ping负载平衡器。

但是,我无法通过浏览器通过访问Loadbalancerhtml" target="_blank">http://a53439687c6d511e8837b02b7cab13e7-935938560.eu-west-1.elb.amazonaws.com:3001
我收到一条消息,无法访问此网站

你知道我应该去哪里调查吗?

NGinx部署

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: "1"
  labels:
    run: nginx
  name: nginx
  namespace: default
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 2
  selector:
    matchLabels:
      run: nginx
  template:
    metadata:
      creationTimestamp: null
      labels:
        run: nginx
    spec:
      containers:
      - image: nginx
        imagePullPolicy: Always
        name: nginx
        ports:
          - containerPort: 80
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30

NGinx服务

{
   "kind":"Service",
   "apiVersion":"v1",
   "metadata":{
      "name":"nginx",
      "labels":{
         "app":"nginx"
      }
   },
   "spec":{
      "ports": [
         {
           "port":3001,
           "targetPort":80
         }
      ],
      "selector":{
         "run":"nginx"
      },
      "type": "LoadBalancer"
   }
}

支票

kubectl get svc
NAME         TYPE           CLUSTER-IP      EXTERNAL-IP                                                              PORT(S)          AGE
kubernetes   ClusterIP      172.20.0.1      <none>                                                                   443/TCP          1h
nginx        LoadBalancer   172.20.48.112   a53439687c6d511e8837b02b7cab13e7-935938560.eu-west-1.elb.amazonaws.com   3001:31468/TCP   45m

kubectl get pod
NAME                     READY     STATUS    RESTARTS   AGE
nginx-768979984b-vqz94   1/1       Running   0          49m

kubectl port-forward pod/nginx-768979984b-vqz94 8080:80
Forwarding from 127.0.0.1:8080 -> 80
Forwarding from [::1]:8080 -> 80

ping a53439687c6d511e8837b02b7cab13e7-935938560.eu-west-1.elb.amazonaws.com
PING a53439687c6d511e8837b02b7cab13e7-935938560.eu-west-1.elb.amazonaws.com (62.138.238.45) 56(84) bytes of data.
64 bytes from 62.138.238.45 (62.138.238.45): icmp_seq=1 ttl=250 time=7.21 ms

服务描述

Name:                     nginx
Namespace:                default
Labels:                   app=nginx
Annotations:              kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app":"nginx"},"name":"nginx","namespace":"default"},"spec":{"ports":[{"port...
Selector:                 run=nginx
Type:                     LoadBalancer
IP:                       172.20.48.112
LoadBalancer Ingress:     a53439687c6d511e8837b02b7cab13e7-935938560.eu-west-1.elb.amazonaws.com
Port:                     <unset>  3001/TCP
TargetPort:               80/TCP
NodePort:                 <unset>  31468/TCP
Endpoints:                10.0.0.181:80
Session Affinity:         None
External Traffic Policy:  Cluster
Events:
  Type    Reason                Age   From                Message
  ----    ------                ----  ----                -------
  Normal  EnsuringLoadBalancer  57m   service-controller  Ensuring load balancer
  Normal  EnsuredLoadBalancer   57m   service-controller  Ensured load balancer

共有1个答案

杨君之
2023-03-14

请尝试以下3个步骤:

>

  • 再次检查选择器和标签是否在服务和部署之间设置正确。

    在AWS内部,转到创建的负载平衡器(可能是经典)的“实例”选项卡,检查与LB相关的所有实例的状态和健康状态:

    如果状态不是“InService”或状态不是“健康”-检查这些实例的安全组:
    NodePort(在您的情况下为31468)应该打开以接受流量。

  •  类似资料:
    • 我在GKE上设置了Istio(Kubernetes入口模式,而不是Istio网关)。但是,我无法使用curl从外部访问 istio ingressgateway LoadBalancer 10.48.11.240 35.222.111.100 15020:30115/TCP,80:31420/TCP,443:32019/TCP,31400:31267/TCP,15029:30180/TCP,150

    • 我有一个朋友允许我访问他的kube集群(托管在IBM云上)。 我可以通过IBM云控制台登录 但是,当我试图通过kubectl访问它们时:kubectl get节点 结果显示一条错误消息: 服务器错误(禁止):节点被禁止:用户https://iam.ng.bluemix.net/kubernetes#无法在群集范围内列出节点。 为什么控制台和CLI之间的访问(RBAC)会有所不同?

    • 我是Kubernetes平台的新手,尝试启用部署在Kubernetes平台上的tomcat web app的HTTPS安全连接。我对舱单感到困惑。与部署、服务和入口控制器相关的yml。 那么,我是否也必须在部署(在端口:-containerPort:8080)服务(如端口:-端口:80 targetPort:8080协议:TCP名称:http)和入口(在后端:serviceName:tomcat

    • 我是库伯内特斯的新手。我已经在Oracle虚拟盒管理器上设置了3个Ubuntu 20.04.2 LTS虚拟机。 根据以下文档,我已经在所有3个虚拟机中安装了docker、kubelet、kubeadm和kubectl https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/ 我使用以

    • 我只是在本地mac上使用mini kube设置kubernetes。 创建了一个类型为NodePort的服务,并且能够使用url

    • 我们有一个由几个节点组成的集群,所以我不能做节点端口,只需转到我的节点ip(这是我为测试普罗米修斯所做的)。我在“监控”名称空间中安装了stable/prometheus和stable/grafana。 到目前为止一切看起来都很好。 这是服务elb。yaml: 顺便说一句,如果我不使用--set rbac创建图表,那么在serviceaccount的权限方面会出现错误。创建=false 我最近为K