Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker minikube和ingress nginx没有打开端口80_Docker_Nginx_Kubernetes - Fatal编程技术网

Docker minikube和ingress nginx没有打开端口80

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

我是ingress nginx的新手,我使用minikube插件启用ingress,并使用minikube启用了它。在查找与ingress nginx相关的服务时,我运行了
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的内部机制。如果你需要通过入口,你必须