[英]Kubernetes's Ingress has no effect on nginx-ingress-controller
我已經部署了nginx:
kubectl run nginx --image=nginx
我暴露了nginx
kubectl expose deployment nginx --port 80 --type NodePort
而當執行此命令
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx NodePort 10.254.237.40 <none> 80:31111/TCP 22s
jenkins ClusterIP 10.254.118.81 <none> 8080/TCP 45m
我部署了Ingress文件
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nginx
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: example.com
http:
paths:
- path: /jenkins
backend:
serviceName: jenkins
servicePort: 8080
並知道入口的輸出
-> kubectl apply -f ingress.yaml
ingress.extensions "nginx" configured
-> kubectl get ing
NAME HOSTS ADDRESS PORTS AGE
nginx example.com 80 40m
而當瀏覽器
http://Node-IP:31111
Returns Nginx's Welcome Page
而當瀏覽器
http://http://Node-IP:31111/jenkins
Returns 404 Not Found
有我不明白的東西嗎?
以及如何解決這個問題?
謝謝你:D
如果要訪問jenkins端點,則不應使用Node-IP
。 在這種情況下,您需要使用example.com
。 但是您需要第7層主機標頭,以便Ingress能夠理解它。 要對其進行測試,您需要對其進行修改。 您可以通過以下兩種方法進行操作:
嘗試運行:
curl -H 'Host: example.com' http://Node-IP:31111/jenkins
修改/etc/hosts
以在您的計算機上擁有一個條目Node-IP example.com
文件,然后瀏覽至:
http://example.com:31111/jenkins
請注意,您正在使用NodePort
服務。 您可以使用LoadBalancer
類型來避免指定端口。 (使用默認端口80)。 您還可以使用clusterIP 10.254.237.40
,但是要訪問它,您必須與Kubernetes集群中的計算機處於同一台計算機中。
看來您部署的方式不包括觀看kubernetes中的Ingress資源所需的功能。
我建議您以正式建議的方式部署nginx-ingress: https : //kubernetes.github.io/ingress-nginx/deploy/#generic-deployment
我個人建議使用舵圖選項: https : //kubernetes.github.io/ingress-nginx/deploy/#using-helm
NGINX Ingress控制器可以通過Helm使用官方圖表存儲庫中的圖表stable / nginx-ingress進行安裝。 要使用發布名稱my-nginx安裝圖表:
helm install stable / nginx-ingress --name my-nginx如果kubernetes集群啟用了RBAC,請運行:
掌舵安裝穩定版/ nginx-ingress --name my-nginx --set rbac.create = true檢測安裝的版本:
POD_NAME = $(kubectl get pods -l app.kubernetes.io/name=ingress-nginx -o jsonpath ='{。items [0] .metadata.name}')kubectl exec -it $ POD_NAME-/ nginx-ingress -controller --version
此外,有關傳遞正確的主機頭,請參閱@Rico的上述答案:
嘗試運行:
curl -H 'Host: example.com' http://Node-IP:31111/jenkins
修改
/etc/hosts
以在您的計算機上擁有一個條目Node-IP example.com
文件,然后瀏覽至:http://example.com:31111/jenkins
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.