k8s ingress 即“service”的“service”,通过七层协议访问。
ingress描述
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: hello-ingress
spec:
tls:
- hosts:
- hello.example.com
secretName: my-secret
rules:
- host: hello.example.com
http:
paths:
- path: /hello
backend:
serviceName: hello-svc
servicePort: 80
- path: /greet
backend:
serviceName: greet-svc
servicePort: 80
例如上面的ingress,这个ingress定义了两个url,通过这两个url可以访问到k8s内部的两个service。
通过ingress,就可以实现 k8s 外部访问k8s内部,在ingress这一层提供反向代理能力,访问到内部的service,这样一个ingress可以访问很多个service,就不需要像NodePort一样每个service都要暴漏一个端口。
ingress实现
这里ingress本身是一个开放实现,目前有Nginx、HAProxy、Envoy等各种实现,首先要使用厂家实现安装好ingress-controller,然后创建ingress的时候controller就会根据ingress的提交创建对应的反向代理服务,
小结
ingress是基于service在7层上的一种对象,并且k8s 对外提供了标准定义,各厂商安定义实现定义的controller,即可提供对应的ingress功能,用户创建ingress来从k8s外部访问k8s内部,这样可以避免NodePort方式每个service都要消耗一个端口。
网友评论