问题描述
我正在学习 kubernetes 并且陷入了我非常困惑的地步。我已经安装了 Metallb 和 ingress-nginx,因此可以从外部访问内容。我看到了几个使用 nginx image 在 pod 中运行的示例,尽管它们也使用了 ingress-Nginx。
ingress-Nginx 不能作为 Nginx 镜像完成所有工作吗?否则他们两个扮演什么角色?
我需要部署快速服务器,我想在其中使用一些 Nginx 功能,例如 gzip,因此它是反向代理的来源。
那么我需要让它在 ingress-Nginx 级别或从 Nginx 图像上工作吗?如果我需要 Nginx 映像,是否意味着我需要使用 Express 应用程序单独运行 Nginx 映像和构建的节点映像?
解决方法
简答:否
但这很复杂。
nginx
image 你提到的是最受欢迎的镜像之一(在撰写本文时在 Docker Hub 上排名第 5),相对较小(133MB),并且易于记忆。这就是为什么它在许多教程中被广泛用作示例。
ingress-nginx 不能作为 nginx 镜像完成所有工作吗?
在某种程度上。
Pod 和 Ingress 是不同的 Kubernetes 资源,它们的行为也不同。 nginx
映像通常部署为 Pod 内的容器。
如果是 nginx 入口控制器,Pod 和 Ingress(如下所述)使用类似的图像。
每当您在入口控制器中部署(例如)重写规则时
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
正在 nginx.conf
图像中的 nginx-ingress
文件中创建相应的条目(再次在下面提到)。
您可以阅读更多here。
话虽如此,当您创建 Ingress Controller 资源时,正在部署 nginx/nginx-ingress
映像。
你甚至可以从 Docker Hub 拉取它
$ docker image pull nginx; docker image pull nginx/nginx-ingress
Using default tag: latest
latest: Pulling from library/nginx
69692152171a: Pull complete
30afc0b18f67: Pull complete
596b1d696923: Pull complete
febe5bd23e98: Pull complete
8283eee92e2f: Pull complete
351ad75a6cfa: Pull complete
Digest: sha256:6d75c99af15565a301e48297fa2d121e15d80ad526f8369c526324f0f7ccb750
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
Using default tag: latest
latest: Pulling from nginx/nginx-ingress
69692152171a: Already exists
30afc0b18f67: Already exists
596b1d696923: Already exists
febe5bd23e98: Already exists
8283eee92e2f: Already exists
351ad75a6cfa: Already exists
ff0027f23312: Pull complete
18361787d4a4: Pull complete
e1aba8353cbb: Pull complete
f9a4438768c4: Pull complete
Digest: sha256:a57fc7835c14b7294180f5c11ae6b81f2745189ef2adb57a5188952bf8aaa17a
Status: Downloaded newer image for nginx/nginx-ingress:latest
docker.io/nginx/nginx-ingress:latest
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx/nginx-ingress latest 1bc8d3e90493 2 weeks ago 177MB
nginx latest d1a364dc548d 2 weeks ago 133MB
如您所见,nginx
和 nginx-ingress
是两个不同的图像。
事实上,您甚至可以build the image自己。