我正在關注本教程,了解如何公開本地集群以供外部訪問。我只需要能夠從瀏覽器中檢查我的應用程式,而無需將應用程式暴露在 Internet 上。
> kubectl get service web
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
web NodePort 10.98.217.114 <none> 8080:32718/TCP 10m
> minikube service web --url
http://192.168.49.2:32718
按照指南操作,直到 etc/hosts 部分。我設定了入口:
> kubectl get ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
example-ingress nginx hello-world.info 192.168.49.2 80 96s
由于各種原因,我無法在我的 Windows 機器上編輯 etc/hosts 檔案,它說另一個行程正在使用它。但是,瀏覽器中的 192.168.49.2 和http://192.168.49.2:32718以及 curl 192.168.49.2 (以及:32718)都不會回傳任何內容。我認為這不應該是預期的,因為主機檔案只是將 hello-world.info 轉發到 IP,我應該能夠僅使用 IP 訪問我的應用程式。我在這里想念什么?
Kubectl v1.24.1(kustomize v4.5.4,服務器 v1.23.3),Minikube v1.25.2,Windows 10,帶有 Docker 驅動程式的 Minikube。
uj5u.com熱心網友回復:
好的,我對問題的解決方案是:埠轉發到 ingress-controller pod(而不是入口本身的物件,因為它似乎不可能)
名為“web”的服務的示例入口檔案:
# example-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web
port:
number: 8080
運行它
kubectl apply -f example-ingress.yaml
檢查它是否正在運行
> kubectl get ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
example-ingress nginx * 192.168.49.2 80 23h
如果你 ssh 進入 minikube (minikube ssh),你可以 curl 192.168.49.2:80 并回傳正確的輸出。
輸出 nginx-controller pod:
> kubectl get pod -n ingress-nginx
NAME READY STATUS RESTARTS
AGE
ingress-nginx-admission-create-56gbc 0/1 Completed 0
46h
ingress-nginx-admission-patch-fqf92 0/1 Completed 0
46h
ingress-nginx-controller-cc8496874-7znt5 1/1 Running 4 (39m ago)
46h
轉發埠到它:
> kubectl port-forward ingress-nginx-controller-cc8496874-7znt5 8080:80 -n ingress-nginx
然后查看 localhost:8080。如果它回傳 nginx 404,那么您的 Ingress.yaml 設定可能是錯誤的。否則對我有用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/489265.html
標籤:Kubernetes 迷你库贝
上一篇:為什么找不到pod?來自服務器的錯誤(未找到):未找到pod“curl-pod”
下一篇:使用不同的值創建相同的pod
