Load-Balancing

雖然外部 ip 已解析,但網站在 kubernetes 中返回連接超時

  • June 10, 2020

我為靜態網站創建了一個 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

歡迎加入堆棧!您targetPort正在將流量定向到埠 9376,但您的部署 pod 正在偵聽埠 80。targetPort將服務上的 80 更改為。

下面快速回顧一下 Kubernetes 中哪個埠做什麼:

在集群內的指定埠上公開 Kubernetes 服務。集群中的其他 pod 可以在指定埠上與此伺服器通信。

TargetPort是服務將向其發送請求的埠,您的 pod 將在該埠上進行偵聽。您在容器中的應用程序也需要在此埠上進行偵聽。

NodePort通過目標節點 IP 地址和 NodePort 向集群外部公開服務。如果未指定埠欄位,則 NodePort 是預設設置。

讓我知道它是否有幫助。

引用自:https://serverfault.com/questions/1020788