Kubernetes – Ingress

用户在 Kubernetes 上部署的服务一般运行于私有网络,Pod和Service 提供了 hostPort,NodePort等参数用于暴露这些服务端口到K8S节点上,供使用者访问。这样的方法有明显缺点:

1)容易占用过多的主机端口;

2)服务端口暴露到多台主机会增加防火墙和安全配置的难度

3)默认的hostPort,NodePort方式没有负载均衡的作用

 

K8S的 Ingress 资源提供了另一种服务暴露的方法,它可以获取各个服务的状态,传递给nginx等工具进行配置修改、重新加载等工作,实现负载均衡、虚拟主机、SSL等功能。并且它只需要占用一台主机的80、443、8080三个端口就可以为所有HTTP服务实现上述功能。

 

关于nginx ingress的安装,K8S有相关说明,网上也有很多文档可参考:

https://github.com/kubernetes/contrib/tree/master/ingress/controllers/nginx

apiVersion: v1
kind: Service
metadata:
name: gitlab-svc
namespace: gitlab5
spec:
ports:
- port: 80
name: web
selector:
name: gitlab
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: git.mydomain.com
namespace: gitlab5
spec:
rules:
- host: git.mydomain.com
http:
paths:
- path: /
backend:
serviceName: gitlab-svc
servicePort: 80

 

posted @ 2017-09-19 10:16  秋日私语的博客  阅读(626)  评论(0编辑  收藏  举报