虽然解析了外部 ip,但网站在 kubernetes 中返回连接超时

虽然解析了外部 ip,但网站在 kubernetes 中返回连接超时

我已经为静态网站创建了 k8s 部署和服务 yaml。外部 IP 地址也在 kubernetes 服务中解析。但是当我尝试通过 curl 或浏览器访问该网站时,它返回连接超时。

Dockerfile:

FROM nginx:alpine
COPY . /usr/share/nginx/html

K8s部署yml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ohno-website
  labels: 
          app: ohno-website
spec:
  replicas: 1
  selector:
          matchLabels:
                  app: ohno-website
  template:
          metadata:
                      labels:
                              app: ohno-website
          spec:
                  containers:
                          - name: ohno-website
                            image: gkganeshr/ohno-website:v0.1
                            imagePullPolicy: Always
                            ports:
                                    - containerPort: 80 
k8s service yml:
apiVersion: v1
kind: Service
metadata:
  name: ohno-website
spec:
  type: LoadBalancer
  ports:
          - protocol: TCP
            port: 80
            targetPort: 9376
  selector:
    app: ohno-website
ohno_fooserver@cloudshell:~ (fourth-webbing-279817)$ kubectl get svc
NAME           TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)        AGE
kubernetes     ClusterIP      10.16.0.1      <none>          443/TCP        8h
ohno-website   LoadBalancer   10.16.12.162   34.70.213.174   80:31977/TCP   7h4m

答案1

欢迎加入 Stack!您targetPort正在将流量导向端口 9376,但您的部署 pod 正在监听端口 80。请targetPort在您的服务上将端口更改为 80。

下面快速回顾一下 Kubernetes 中哪个端口可以做什么:

港口在集群内指定端口上公开 Kubernetes 服务。集群内的其他 pod 可以通过指定端口与此服务器进行通信。

目标端口是服务将向其发送请求的端口,您的 pod 将监听该端口。容器中的应用程序也需要监听此端口。

节点端口通过目标节点 IP 地址和 NodePort 向集群外部公开服务。如果未指定端口字段,则 NodePort 是默认设置。

如果有帮助的话请告诉我。

相关内容