kubernetes ingress学习笔记

外部访问kubernetes内部的pod通常有 LoadBlancer Service、NodePort Service、Ingress三种方式。
LoadBlancer Service 需要结合云平台来使用。
NodePort Service 是将pod的端口映射成cluster节点的端口(30000~32767)使用比较简单,但是对于应用较多的集群,不易管理。
Ingress 通过反向代理的方式来对外暴露服务。

一、什么是ingress

ingress的访问规则如下:

   internet
        |
   [ Ingress ]
   --|-----|--
   [ Services ]

ingress可以帮助service提供外部可以访问的url、并可以提供基于虚拟主机的反向代理。
但是ingress本身只能实现反向代理规则的配置,需要结合ingress controller才能完整的实现外部网络访问的。

二、什么是ingress controller

ingress controller是一个daemon,以pod的形式部署,通过apiserver监控ingress endpoint的更新,以实现ingress规则。
通常ingress controller上层会有一个NodePort类型的service作为统一入口。

三、ingress controller选型

官方推荐的ingress controller

  1. Ambassador
  2. Voyager
  3. Contour
  4. Citrix
  5. F5
  6. Gloo
  7. HAproxy
  8. Traffic
  9. Kong
  10. nginx

由于个人对nginx比较熟悉,所以选择了nginx-ingress-controller。

四、安装ingress-controller

通过执行一下命令来创建ingress controller

https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml

如果主机不能连接外网,则需要nginx-ingress-controller:0.24.1的镜像。
可以在集群中看到刚刚安装的controller

> kubectl get po 
nginx-ingress-controller-5694ccb578-g5xz5          1/1     Running   0          23d
> kubectl get svc
service/ingress-nginx                     NodePort    10.108.146.145   <none>        80:30012/TCP,443:30013/TCP   23d

五、配置ingress规则

ingress的yml定义文件如下:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-myapp
  namespace: dev
  annotations:
    kubernetes.io/ingress.class: "nginx"
    
spec:
  rules:
  - host: test.ingress.com 
    http:
      paths:
      - path: /
        backend:
          serviceName: crm-portal
          servicePort: 8091

解析:

  1. rules中,host指定一个虚拟主机,访问时在hosts文件中配置一个虚拟主机域名与cluster中任意主机
  2. path指定路径进行转发,可以有多个路径,转发至不同的service。
  3. serviceName和servicePort指定要转发的pod对应的svc。

参考:
https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/
https://kubernetes.io/docs/concepts/services-networking/ingress/
https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/

发布了48 篇原创文章 · 获赞 31 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_44723434/article/details/97899607