nginx是有毒嘛,装在哪个节点就只能在哪个节点访问,其他节点都不行,但是其他pod就可以,比如tomcat,每个节点都可以
2条回答 默认 最新
关注 - 你可以看下这个问题的回答https://ask.csdn.net/questions/7707470
- 这篇博客也不错, 你可以看下k8s安装nginx
- 除此之外, 这篇博客: 记录自己使用nginx 的所用知识点(包含 安装、查看地址、配置文件、卸载、重启、各种类型配置文件(更新中)、文件大小限制、session共享等)中的 4.1 nginx一个服务器 多个tomcat 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
- 您还可以看一下 张立坤老师的Nginx反向代理与Tomcat集群配置详解课程中的 Nginx专题课程的总结和说明小节, 巩固相关知识点
- 以下回答由chatgpt基于相关博客总结生成:
在kubernetes中,只有在装有nginx的节点上才能访问nginx服务的原因是因为nginx服务的Pod并没有被自动暴露到集群内部。nginx服务的Pod可能被声明为一个普通的Pod,而不是一个Service或者Ingress资源。因此,只有在部署了nginx服务的节点上,才能通过节点IP地址访问nginx服务。
为了解决这个问题,我们可以采取以下步骤:
- 部署一个Service资源:Service资源将为nginx服务创建一个稳定的虚拟IP地址,并为Pod提供可访问的DNS名称。可以使用以下命令在kubernetes集群中创建一个Service资源:
kubectl create service clusterip my-nginx --tcp=80:80 --dry-run=client -o yaml | kubectl apply -f -
上述命令将创建一个名为my-nginx的ClusterIP类型的Service资源,它将监听80端口,并将流量转发到Pod的80端口。这将为nginx服务创建一个可用的虚拟IP地址,并为该Service分配一个唯一的DNS名称。
- 部署Ingress资源:如果想要通过集群中的任何节点访问nginx服务,则可以部署一个Ingress资源。Ingress资源是Kubernetes集群中用于公开服务的对象。它可以将外部流量路由到不同的Service资源,以及提供TLS终止和负载均衡等功能。可以使用以下命令在kubernetes集群中创建一个Ingress资源:
kubectl create ingress my-nginx --rule="hostname/path=service:port" --dry-run=client -o yaml | kubectl apply -f -
上述命令将创建一个名为my-nginx的Ingress资源,并将流量路由到由之前创建的Service资源提供的DNS名称。可以根据需要配置其他Ingress规则,如TLS终止和路径匹配。
- 配置网络策略:为了确保其他节点上的Pod可以访问nginx服务,需要检查网络策略是否允许跨节点通信。可以使用以下命令查看网络策略:
kubectl get networkpolicies
如果没有网络策略或者网络策略允许跨节点通信,那么其他节点上的Pod应该能够通过虚拟IP地址或DNS名称访问nginx服务。
通过执行上述步骤,应该能够解决在kubernetes中只有在装有nginx的节点上才能访问nginx服务的问题,并实现其他节点上的Pod在任何节点上访问nginx服务。
解决 无用评论 打赏 举报
悬赏问题
- ¥15 尝试访问%1服务的windows注册表时遇到问题。必须先解决此问题,然后才能运行安装过程。(请确认您正在使用管理员权限运行)373
- ¥15 (关键词-运算放大器)
- ¥15 关于#游戏策划#的问题:当浏览器输入兑换码,疯狂点击领取按钮,邮箱马上到账几十个兑换码礼包
- ¥15 虚拟机打不开,怎么解决
- ¥15 为什么游戏兑换码能被重复领取
- ¥30 (急!)java实现二叉链表构建二叉树,实现相关功能
- ¥15 C#tekloa节点插件小项
- ¥20 脑电信号的局部场电位分析
- ¥30 Diodes 霍尔开关AH337已经obselete,他的升级替代料【不改变现有电路图】
- ¥15 python爬虫IndexError: list index out of range