Docker minikube和ingress nginx没有打开端口80
我是ingress nginx的新手,我使用minikube插件启用ingress,并使用minikube启用了它。在查找与ingress nginx相关的服务时,我运行了Docker minikube和ingress nginx没有打开端口80,docker,nginx,kubernetes,Docker,Nginx,Kubernetes,我是ingress nginx的新手,我使用minikube插件启用ingress,并使用minikube启用了它。在查找与ingress nginx相关的服务时,我运行了kubectl get services-n kube system并获得: NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ingress-nginx-con
kubectl get services-n kube system
并获得:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller-admission ClusterIP 10.96.141.138 <none> 443/TCP 16m
kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 16m
Name: ingress-nginx-controller-admission
Namespace: kube-system
Labels: addonmanager.kubernetes.io/mode=Reconcile
app.kubernetes.io/component=controller
app.kubernetes.io/instance=ingress-nginx
app.kubernetes.io/name=ingress-nginx
Annotations: <none>
Selector: app.kubernetes.io/component=controller,app.kubernetes.io/instance=ingress-nginx,app.kubernetes.io/name=ingress-nginx
Type: ClusterIP
IP: 10.96.141.138
Port: https-webhook 443/TCP
TargetPort: webhook/TCP
Endpoints: 172.17.0.3:8443
Session Affinity: None
Events: <none>
尝试访问端点时https://ingress-nginx-controller-admission.kube-system.svc.cluster.local/foo
,我收到以下错误:
FetchError: request to https://ingress-nginx-controller-admission.kube-system.svc.cluster.local/foo failed, reason: unable to verify the first certificate
,尽管从一个pod内通过入口击中端点可以正常工作。我在调查那件事,但没有结果。在此方面的任何帮助都将不胜感激
编辑:我已经为每个请求添加了kubectl get svc-A
的输出:
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default auth-svc ClusterIP 10.100.218.231 <none> 4000/TCP 13s
default client-svc ClusterIP 10.106.143.107 <none> 3000/TCP 12s
default kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 37m
kube-system ingress-nginx-controller-admission ClusterIP 10.96.141.138 <none> 443/TCP 36m
kube-system kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 37m
命名空间名称类型CLUSTER-IP EXTERNAL-IP端口
默认身份验证svc群集IP 10.100.218.231 4000/TCP 13s
默认客户端svc群集IP 10.106.143.107 3000/TCP 12s
默认kubernetes ClusterIP 10.96.0.1 443/TCP 37m
kube系统入口nginx控制器准入群集IP 10.96.141.138 443/TCP 36m
kube系统kube dns ClusterIP 10.96.0.10 53/UDP、53/TCP、9153/TCP 37m
正如名称所示,您正在查看的服务是minikube ingress插件的核心入口控制器使用它来解析入口定义并配置底层nginx(您可以查看) 要访问您可能已定义的暴露入口,您需要点击minikube机器的端口80或443(可通过
minikube ip
访问)。(您可以通过执行minikube ssh--docker container ls--filter label=app.kubernetes.io/name=ingres nginx来查看这些侦听端口)
您需要的文档如下:
因此,如果您使用host=hello world.info
和path=/foo
定义入口,您将能够通过以下方式访问它:
curl--header'Host:hello world.info'http://`minikube ip`:80/foo
当然,最好定义一个DNS条目,将hello world.info
映射到minikube IP。正如名称所示,您正在查看的服务是minikube ingress插件的名称
入口控制器使用它来解析入口定义并配置底层nginx(您可以查看)
要访问您可能已定义的暴露入口,您需要点击minikube机器的端口80或443(可通过minikube ip
访问)。(您可以通过执行minikube ssh--docker container ls--filter label=app.kubernetes.io/name=ingres nginx来查看这些侦听端口)
您需要的文档如下:
因此,如果您使用host=hello world.info
和path=/foo
定义入口,您将能够通过以下方式访问它:
curl--header'Host:hello world.info'http://`minikube ip`:80/foo
当然,最好定义一个DNS条目,将hello world.info
映射到minikube IP。minikube上的Nginx入口不使用服务提供对入口吊舱的访问
它使用主机端口。这是安格尔控制器吊舱yaml的一部分:
$ kubectl get pod -n kube-system ingress-nginx-controller-789d9c4dc-5wnc2 -oyaml
[...]
ports:
- containerPort: 80
hostPort: 80
name: http
protocol: TCP
- containerPort: 443
hostPort: 443
name: https
protocol: TCP
- containerPort: 8443
name: webhook
protocol: TCP
[...]
它的行为记录在
主机端口
要在主机上公开的端口数。如果指定,则必须是有效的端口号0
有鉴于此,可以通过以下方式轻松访问入口:
curl $(minikube ip)
minikube上的Nginx ingress不使用服务提供对ingress吊舱的访问
它使用主机端口。这是安格尔控制器吊舱yaml的一部分:
$ kubectl get pod -n kube-system ingress-nginx-controller-789d9c4dc-5wnc2 -oyaml
[...]
ports:
- containerPort: 80
hostPort: 80
name: http
protocol: TCP
- containerPort: 443
hostPort: 443
name: https
protocol: TCP
- containerPort: 8443
name: webhook
protocol: TCP
[...]
它的行为记录在
主机端口
要在主机上公开的端口数。如果指定,则必须是有效的端口号0
有鉴于此,可以通过以下方式轻松访问入口:
curl $(minikube ip)
运行kubectl expose deployment ingres nginx controller--target port=80--type=NodePort-n kube system
允许我从集群中的pod内访问入口。运行kubectl expose deployment ingres nginx controller--target port=80--type=NodePort-n kube system
允许我访问入口从集群中的一个pod中添加kubectl get svc-a的输出
@ArghyaSadhu谢谢。我用这些信息更新了原来的帖子哪个版本的minikube?minikube的哪个驱动程序?@zigarn我正在arch linux上使用minikube 1.16.0版。我还没有指定驱动程序,所以我相信是默认的。谢谢。添加kubectl get svc-A
@ArghyaSadhu的输出谢谢。我用这些信息更新了原来的帖子哪个版本的minikube?minikube的哪个驱动程序?@zigarn我正在arch linux上使用minikube 1.16.0版。我还没有指定驱动程序,所以我相信是默认的。谢谢,谢谢。我应该澄清一下,我可以点击hello world.info
以及minikube ip。我只是无法从一个豆荚中点击该ip,这是我在尝试点击https://ingress-nginx-controller-admission.kube-system.svc.cluster.local/foo
。希望这有助于澄清我的目标。谢谢入口更多地服务于集群外部;从集群内部,只需使用对服务的直接访问。服务ingress nginx控制器许可
并非用于公开ingress控制器,而是用于ingress的内部机制。如果你需要通过入口,你必须