我已经部署了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
答案 0 :(得分:3)
如果要到达詹金斯端点,则不应该使用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集群中的机器处于同一台计算机中。
答案 1 :(得分:2)
似乎您部署的方式不包括监视kubernetes中的Ingress资源所需的功能。
我建议您以官方建议的方式部署nginx-ingress:https://kubernetes.github.io/ingress-nginx/deploy/#generic-deployment
我个人建议使用舵图选项:https://kubernetes.github.io/ingress-nginx/deploy/#using-helm
可以使用下表通过Helm安装NGINX Ingress控制器 来自官方图表资料库的稳定版/ nginx-ingress。安装 发布名称为my-nginx的图表:
helm install stable / nginx-ingress --name my-nginx如果kubernetes 集群已启用RBAC,然后运行:
helm install stable / nginx-ingress --name my-nginx --set rbac.create = true检测安装的版本:
POD_NAME = $(kubectl获取容器-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