kubernetes 安装 ingress controller

kubernetes 安装 ingress controller

💡 原文中文,约8400字,阅读约需20分钟。
📝

内容提要

本文介绍了在Kubernetes中部署ingress-nginx的步骤,包括安装、创建Tomcat应用及其Ingress配置。详细说明了如何使用自签证书配置HTTPS访问,并介绍了将Deployment修改为DaemonSet以优化负载均衡的方法。

🔎

延伸解读

版本兼容性提醒

文章指出 ingress-nginx v1.0 适用于 Kubernetes v1.19+,而 Kubernetes v1.22+ 必须使用 ingress-nginx>=1.0,因为 networking.k8s.io/v1beta 已被移除。这意味着在升级集群前,需确认 ingress-nginx 版本是否匹配,否则 Ingress 资源可能无法被正确解析,导致路由失效。

NodePort 与 hostNetwork 的访问差异

默认部署下 ingress-nginx-controller 使用 NodePort,访问时需带随机端口,如 tomcat.cnsre.cn:30497。若改用 hostNetwork,则直接监听节点的 80 和 443 端口,访问时无需附加端口。两种方式在 hosts 配置和实际访问体验上不同,选择时需考虑端口占用和节点网络策略。

DaemonSet 改造的适用场景

将 Deployment 改为 DaemonSet 后,每个节点都会运行一个 ingress-nginx-controller 副本,配合 hostNetwork 可让每个节点直接处理 80/443 流量。这适合需要避免单点、提升入口可用性的场景,但也会增加资源占用,且需确保节点端口不被其他服务占用。

HTTPS 自签证书的配置要点

文章使用 openssl 生成自签证书,并通过 kubectl create secret tls 创建 secret,再在 Ingress 的 tls 字段中引用。这种方式适合测试环境,但自签证书不被浏览器信任,访问时会提示安全警告。生产环境应替换为受信任的证书,并注意 secret 需与 Ingress 在同一命名空间。

❓

Q&A

如何在Kubernetes中安装ingress-nginx?

可以通过拉取GitHub上的deploy.yaml文件进行安装,使用命令kubectl apply -f deploy.yaml。

如何创建Tomcat应用的yaml文件?

创建一个名为tomcat.yaml的文件,定义Deployment和Service,使用kubectl apply -f tomcat.yaml命令进行部署。

如何配置Ingress以路由流量到Tomcat服务?

创建一个名为tomcat-ingress.yaml的文件,定义Ingress规则,并使用kubectl apply -f tomcat-ingress.yaml命令进行部署。

如何使用自签证书配置HTTPS访问?

创建自签证书文件后,使用kubectl create secret tls命令创建secret,并在Ingress配置中引用该secret。

如何将Deployment修改为DaemonSet以优化负载均衡?

在Deployment的yaml文件中,将kind修改为DaemonSet,这样每个节点上都有ingress-nginx-controller的副本。

如何在hosts文件中添加Ingress节点的IP地址?

在hosts文件最后追加Ingress节点的IP地址和域名,例如:54.xxx.xxx.xxx tomcat.cnsre.cn。

🏷️

标签

➡️

继续阅读