Kubernetes - Ingress 类型
https://kubernetes.io/docs/concepts/services-networking/ingress/
Single Service Ingress
ingress.yaml:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-ingress
spec:
backend:
serviceName: testsvc
servicePort: 80
kubectl create -f ingress.yaml
$ kubectl get ing
NAME RULE BACKEND ADDRESS
test-ingress - testsvc:80 107.178.254.228
其中107.178.254.228是由Ingress控制器分配以满足此Ingress的IP。 “规则”列显示,发送到IP的所有流量都被定向到在BACKEND下列出的Kubernetes服务。
Simple fanout
如前所述,kubernetes中的pod在集群网络上只能看到IP,所以我们需要一些边缘接受入口流量并将其代理到正确的端点。 该组件通常是高可用性负载平衡器。 In Ingress允许您将负载平衡器的数量降至最低,例如:
foo.bar.com -> 178.91.123.132 -> / foo s1:80
/ bar s2:80
Ingress:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test
spec:
rules:
- host: foo.bar.com
http:
paths:
- path: /foo
backend:
serviceName: s1
servicePort: 80
- path: /bar
backend:
serviceName: s2
servicePort: 80
kubectl create -f:
$ kubectl get ing
NAME RULE BACKEND ADDRESS
test -
foo.bar.com
/foo s1:80
/bar s2:80
只要存在服务(s1,s2),Ingress控制器将提供满足Ingress的实现特定负载平衡器。 当这样做时,您将在Ingress的最后一列看到负载均衡器的地址。
Name based virtual hosting
基于名称的虚拟主机使用相同IP地址的多个主机名。
foo.bar.com --| |-> foo.bar.com s1:80
| 178.91.123.132 |
bar.foo.com --| |-> bar.foo.com s2:80
以下Ingress告诉备份负载均衡器根据Host头发送请求。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test
spec:
rules:
- host: foo.bar.com
http:
paths:
- backend:
serviceName: s1
servicePort: 80
- host: bar.foo.com
http:
paths:
- backend:
serviceName: s2
servicePort: 80
默认后端:没有规则的入口(如上一节所示)将所有流量发送到单个默认后端。 您可以使用相同的技术通过指定一组规则和默认后端来告诉负载均衡器找到您的网站的404页面。 如果您的Ingress中的主机与请求标头中的主机匹配,并且/或没有一个路径与请求的URL匹配,则流量将路由到您的默认后端。
TLS
您可以通过指定包含TLS私钥和证书的密钥来保护Ingress。 目前,Ingress仅支持单个TLS端口443,并假定TLS终止。 如果Ingress中的TLS配置部分指定不同的主机,则它们将根据通过SNI TLS扩展指定的主机名(提供Ingress控制器支持SNI)在多个相同端口上进行复用。 TLS秘密必须包含名为tls.crt和tls.key的密钥,其中包含用于TLS的证书和私钥,例如:
apiVersion: v1
data:
tls.crt: base64 encoded cert
tls.key: base64 encoded key
kind: Secret
metadata:
name: testsecret
namespace: default
type: Opaque
在Ingress中引用秘钥:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: no-rules-map
spec:
tls:
- secretName: testsecret
backend:
serviceName: s1
servicePort: 80
请注意,各种Ingress控制器支持的TLS功能之间存在差距。 请参阅有关nginx,GCE或任何其他平台特定Ingress控制器的文档,以了解TLS在您的环境中的工作原理。
#更新Ingress策略见 方法。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY