通常情况下,service和pod仅可在集群内部网络中通过IP地址访问。所有到达边界路由器的流量或被丢弃或被转发到其他地方。从概念上讲,可能像下面这样:
internet
|
------------
[ Services ]
Ingress是授权入站连接到达集群服务的规则集合。
internet
|
[ Ingress ]
--|-----|--
[ Services ]
你可以给Ingress配置提供外部可访问的URL、负载均衡、SSL、基于名称的虚拟主机等。用户通过POST Ingress资源到API server的方式来请求ingress。 Ingress controller负责实现Ingress,通常使用负载平衡器,它还可以配置边界路由和其他前端,这有助于以HA方式处理流量。
Ingress 这个玩意,简单的理解就是 你原来要改 Nginx 配置,然后配置各种域名对应哪个 Service,现在把这个动作抽象出来,变成一个 Ingress 对象,你可以用 yml 创建,每次不要去改 Nginx 了,直接改 yml 然后创建/更新就行了;那么问题来了:”Nginx 咋整?”
Ingress Controller 这东西就是解决 “Nginx 咋整” 的;Ingress Controoler 通过与 Kubernetes API 交互,动态的去感知集群中 Ingress 规则变化,然后读取他,按照他自己模板生成一段 Nginx 配置,再写到 Nginx Pod 里,最后 reload 一下。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: kube-system.default-lsb
serviceAppMap: '{"jiankunking-test-web":"jiankunking-test-web"}'
creationTimestamp: 2018-01-06T02:28:39Z
generation: 1
labels:
loadbalance.caicloud.io/created-by: kube-system.default-lsb
name: paas
namespace: default
resourceVersion: "88837"
selfLink: /apis/extensions/v1beta1/namespaces/default/ingresses/paas
uid: 4e158c13-f289-11e7-bbb5-005056b14a76
spec:
rules:
- host: c.c.jiankunking.net
http:
paths:
- backend:
serviceName: jiankunking-test-web
servicePort: 3000
path: /
status:
loadBalancer:
ingress:
- ip: 10.135.26.97
- ip: 10.135.26.98
原文地址: https://www.kubernetes.org.cn/1885.html
个人微信公众号:
作者:jiankunking 出处:http://blog.csdn.net/jiankunking