前言
原来我们需要将端口号对外暴露,通过 ip + 端口号就可以进行访问
原来是使用 Service 中的 NodePort 来实现
- 在每个节点上都会启动端口
- 在访问的时候通过任何节点,通过 ip + 端口号就能实现访问
但是 NodePort 还存在一些缺陷
- 因为端口不能重复,所以每个端口只能使用一次,一个端口对应一个应用
- 实际访问中都是用域名,根据不同域名跳转到不同端口服务中
Ingress 和 Pod 关系
pod 和 ingress 是通过 service 进行关联的,而 ingress 作为统一入口,由 service 关联一组 pod 中
- 首先 service 就是关联我们的 pod
- 然后 ingress 作为入口,首先需要到 service,然后发现一组 pod
- 发现 pod 后,就可以做负载均衡等操作
Ingress 工作流程
在实际的访问中,我们都是需要维护很多域名, a.com 和 b.com
然后不同的域名对应的不同的 Service,然后 service 管理不同的 pod
需要注意,ingress 不是内置的组件,需要我们单独的安装
使用 Ingress
步骤如下所示
- 部署 ingress Controller【需要下载官方的】
- 创建 ingress 规则【对哪个 Pod、名称空间配置规则】
创建 Nginx Pod
创建一个 nginx 应用,然后对外暴露端口
1 | # 创建pod |
对外暴露端口
1 | kubectl expose deployment web --port=80 --target-port=80 --type:NodePort |
部署 ingress controller
下面我们来通过 yaml 的方式,部署我们的 ingress,配置文件如下所示
这个文件里面,需要注意的是 hostNetwork: true,改成 ture 是为了让后面访问到
1 | kubectl apply -f ingress-con.yaml |
通过这种方式,其实我们在外面就能访问,这里还需要在外面添加一层
1 | kubectl apply -f ingress-con.yaml |
最后通过下面命令,查看是否成功部署 ingress
1 | kubectl get pods -n ingress-nginx |
创建 ingress 规则文件
创建 ingress 规则文件,ingress-h.yaml
添加域名访问规则
在 windows 的 hosts 文件,添加域名访问规则【因为我们没有域名解析,所以只能这样做】
最后通过域名就能访问
发布时间: 2021-01-13
最后更新: 2024-06-24
本文标题: Kubernetes学习之核心技术Ingress
本文链接: https://blog-yilia.xiaojingge.com/posts/9ef6b60e.html
版权声明: 本作品采用 CC BY-NC-SA 4.0 许可协议进行许可。转载请注明出处!
