ingress来实现端口暴露

一、大致的部署流程如下:
1)下载Ingress-controller相关的YAML文件,并给Ingress-controller创建独立的名称空间;
2)部署后端的服务,如myapp,并通过service进行暴露;
3)部署Ingress-controller的service,以实现接入集群外部流量;
4)部署Ingress,进行定义规则,使Ingress-controller和后端服务的Pod组进行关联。

 

二、Ingress与Service的关系?
1)通过ingress controller通过service实现pod的负载均衡。
2)支持TCP/UDP 4层和HTTP 7层。
用户--》ingress控制器定义的规则【Node上运行】-----》service ----》pod

wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml
修改以下内容:
template:
    metadata:
      labels:
        app.kubernetes.io/name: ingress-nginx
        app.kubernetes.io/part-of: ingress-nginx
      annotations:
        prometheus.io/port: "10254"
        prometheus.io/scrape: "true"
    spec:
      # wait up to five minutes for the drain of connections
      hostNetwork: true                                                        #注意这里修改成服务器本身地址
      terminationGracePeriodSeconds: 300
      serviceAccountName: nginx-ingress-serviceaccount
      containers:
        - name: nginx-ingress-controller
          image: 42.159.152.148/mydate/nginx-ingress-controller:0.20.0           #主要修改这个

1、controller启动以后,会监控宿主机服务器的80和443端口服务。
2、只有部署了controller的宿主机节点上,宿主机才有提供服务。

三、具体的演示步骤
[root@master01 demo]# more ingress.yaml 
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  annotations:
    ingress.kubernetes.io/rewrite-target: /
  namespace: ingress-nginx
spec:
  rules:
  -  host: foo.bar.com        #包含了一个转发规则,将发往foo.bar.com的请求,代理给一个名字给nginx-service的Service的资源。
     http:
      paths:
      - path: /
        backend:
          serviceName: nginx-service
          servicePort: 80

[root@master01 demo]# kubectl get ingress -n ingress-nginx
NAME           HOSTS         ADDRESS   PORTS   AGE
test-ingress   foo.bar.com             80      26s

1、rules:用于定义当前ingress资源的转发规则列表;当没有匹配到规则时,所有的流量都会转发由backend定义的默认后端。
2、backend:默认的后端用于服务那些没有匹配到规则的请求,定义ingress资源时,必须要定义banckend或rules两者之一,backend对象的定义由2个必要的字段组成:serviceName和servicePort,分别用于指定流量转发的后端目标Service资源名称和端口。
3.tls:目前支持通过默认端的443提供服务。

[root@master01 demo]# kubectl describe ingress test-ingress -n ingress-nginx
Name:             test-ingress
Namespace:        ingress-nginx
Address:          
Default backend:  default-http-backend:80 (<none>)
Rules:
  Host         Path  Backends
  ----         ----  --------
  foo.bar.com  
               /   nginx-service:31427 (<none>)
Annotations:
  ingress.kubernetes.io/rewrite-target:  /
Events:                                  <none>

四、测试

1)本地绑定host

192.168.187.144 foo.bar.com    #部署了ingress-controller的宿主机节点

2)访问 foo.bar.com:31427端口

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值