有了 Ingress Controller,这些 API 对象的关联就更复杂了 。然后我们创建对象:
$ kubectl apply -f ngx-ing-dep.yamldeployment.apps/ngx-ing-dep created
注意 Ingress Controller 位于名字空间 nginx-ingress
,所以查看状态需要用 -n
参数显式指定,否则我们只能看到 default
名字空间里的 Pod:
$ kubectl get deploy -n nginx-ingressNAMEREADYUP-TO-DATEAVAILABLEAGEngx-ing-dep1/11110m$ kubectl get pod -n nginx-ingressNAMEREADYSTATUSRESTARTSAGEngx-ing-dep-7c48c74865-vzmnf1/1Running011m
现在 Ingress Controller 就算是运行起来了 。还有最后一道工序,因为 Ingress Controller 本身也是一个 Pod,想要向外提供服务还是要依赖于 Service 对象 。所以至少还要再为它定义一个 Service,使用 NodePort 或者 LoadBalancer 暴露端口,才能真正把集群的内外流量打通 。
这里还有个取巧的办法,使用 kubectl port-forward
直接把本地的端口映射到 Kubernetes 集群的某个 Pod 里,在测试验证的时候非常方便 。
$ kubectl port-forward -n nginx-ingress ngx-ing-dep-7c48c74865-vzmnf 8080:80 &
可以修改 /etc/hosts
来手工添加域名解析,也可以使用 --resolve
参数,指定域名的解析规则,比如在这里把 ngx.test
强制解析到 127.0.0.1
,也就是被 kubectl port-forward
转发的本地地址 。
和 Service 一样,Ingress 把请求转发到了集群内部的 Pod,但 Ingress 的路由规则不再是 IP 地址,而是 HTTP 协议里的域名、URI 等要素 。
再补充一点,目前的 Kubernetes 流量管理功能主要集中在 Ingress Controller 上,已经远不止于管理“入口流量”了,它还能管理“出口流量”,也就是 egress,甚至还可以管理集群内部服务之间的“东西向流量” 。此外,Ingress Controller 通常还有很多的其他功能,比如 TLS 终止、网络应用防火墙、限流限速、流量拆分、身份认证、访问控制等等,完全可以认为它是一个全功能的反向代理或者网关 。
【十一 【Kubernetes】K8s笔记:Ingress 集群进出流量总管】
经验总结扩展阅读
- 2023年农历五月十九搬家乔迁好不好
- 2023年农历八月十九宜洗澡吗 2023年10月3日洗澡好不好
- 我的世界里怎么骑马(我的世界怎样骑马)
- 2024年九月初四出生江姓女孩名字叫什么好名字推荐
- 张姓男孩名字2024年10月5日出生的生辰八字五行查询
- 2023年2月7日出海打鱼吉日一览表 2023年2月7日出海打鱼好吗
- 大白菜从什么时候开始有的
- 西甲硅油功效作用是什么?
- iPhone15系列电池容量曝光 苹果或告别128GB存储吗
- 老九门点天灯是第几集?