簡體   English   中英

Kubernetes Ingress 無法獲取服務的集群 IP

[英]Kubernetes Ingress cannot fetch cluster ip of service

我用 calico 和 haproxy 設置了一個 kubernetes 單節點主平面。 現在每當我要創建一個 Ingress 時,地址保持為空並且服務器返回 503 錯誤。

下面顯示了我的 kubernetes 部署。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: wordpress
          ports:
            - containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  ports:
    - port: 8080
      targetPort: 8080
      protocol: TCP
  selector:
    app: nginx
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: web-ingress
spec:
  rules:
    - host: wordpress.example.org
      http:
        paths:
          - path: /
            backend:
              serviceName: nginx-service
              servicePort: 8080

這是我從 kubernetes cl 的輸出。

NAME                             HOSTS                   ADDRESS   PORTS   AGE
ingress.extensions/web-ingress   wordpress.example.org             80      35s

NAME                    TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
service/kubernetes      ClusterIP   10.96.0.1       <none>        443/TCP    10h
service/nginx-service   ClusterIP   10.97.189.233   <none>        8080/TCP   35s

NAME                                     READY   UP-TO-DATE   AVAILABLE   AGE
deployment.extensions/nginx-deployment   1/1     1            1           35s

NAME                                    READY   STATUS    RESTARTS   AGE
pod/nginx-deployment-7798df5dd5-gnwf2   1/1     Running   0          35s

NAME                      ENDPOINTS              AGE
endpoints/kubernetes      164.68.103.199:6443    10h
endpoints/nginx-service   192.168.104.150:8080   36s
Pascals-MBP-c8a4:api-gateway pascal$

我希望入口將接收服務的集群 ip 並偵聽給定的主機 uri 並提供除給定 503 錯誤之外的其他信息。

// 編輯:它是一個獨立節點,不是桌面版本或 minikube 安裝!

這個鏡像的容器端口是80,我暴露的是8080。

我已轉載您的問題並進行了一些更改,現在可以正常使用了。 因此,首先將服務類型更改為NodePort,然后等待大約2或3分鍾,直到出現Ingress的IP地址。

apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx
  name: nginx-service
spec:
  type: NodePort
  ports:
    - port: 8080
      targetPort: 8080
      protocol: TCP
  selector:
    app: nginx

現在,如果我輸入$ kubectl get ingress

NAME          HOSTS                   ADDRESS      PORTS   AGE
web-ingress   wordpress.example.org   34.98.73.0   80      66s

如果您想了解有關Ingress的更多信息,請參閱分步教程 希望對您有幫助。

服務默認類型是 ClusterIP,但它僅用於集群內部通信。 對於外部流量,您應該切換到 NodePort 類型。 例如:

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  type: NodePort
  ports:
    - port: 80
      targetPort: 8080
      protocol: TCP
      name: http
  selector:
    run: nginx

如果我沒記錯的話,nginx alb 控制器允許使用 ClusterIP(或 LoadBalancer)。

更多信息: https : //kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM