Load-Balancing
雖然外部 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
歡迎加入堆棧!您
targetPort
正在將流量定向到埠 9376,但您的部署 pod 正在偵聽埠 80。targetPort
將服務上的 80 更改為。下面快速回顧一下 Kubernetes 中哪個埠做什麼:
埠在集群內的指定埠上公開 Kubernetes 服務。集群中的其他 pod 可以在指定埠上與此伺服器通信。
TargetPort是服務將向其發送請求的埠,您的 pod 將在該埠上進行偵聽。您在容器中的應用程序也需要在此埠上進行偵聽。
NodePort通過目標節點 IP 地址和 NodePort 向集群外部公開服務。如果未指定埠欄位,則 NodePort 是預設設置。
讓我知道它是否有幫助。