k8s ingress对外暴露接口的几种方式
2021-05-26 本文已影响0人
hugoren
先看结果
DaemonSet+HostNetwork+nodeSelector
![](https://img.haomeiwen.com/i1500770/29dedeab2cf51cc6.png)
Deployment+NodePort模式的Service
![](https://img.haomeiwen.com/i1500770/fcef56e61df24bdb.png)
Deployment+LoadBalancer模式的Service
修改deploy.yaml的service
![](https://img.haomeiwen.com/i1500770/51da4143e167db6e.png)
因没有外部地址,一直处于pending状态
![](https://img.haomeiwen.com/i1500770/176ebe9993c5d797.png)
原理
为什么需要ingress?实际就是service的service
service不足
1.nodepoint过多,管理不便
2.cluster-ip 只能在同一个集群内访问
3.lb增加费用
调用过程controller(pod)运行着nginx-->ingress配置调用指向service
controller上运行的nginx
![](https://img.haomeiwen.com/i1500770/6969d5f4c1999dcc.png)
ingress 的service配置
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-nginx
namespace: test
annotations:
# use the shared ingress-nginx
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
rules:
- host: hugo.com
http:
paths:
- path: /
backend:
serviceName: svc-nginx
servicePort: 80