Kubernetes学习笔记 - Ingress

概述:

Ingress的原理目前略知一二,在今后我仍会继续深入学习,届时再展开细说。

在本地实验k8s可以使用NodePort类型的Service向集群外暴露服务,本地localhost访问。

在云上实验k8s可以使用LoadBalancer类型的Service暴露服务,云端会提供给他IP。

我在AKS上部署的Ingress,因此在Github上使用面向Azure的Ingress controller。

我对流量的理解:

Ingress rules -> Service - > Ingress controller -> Endpoints

Service在Ingress和Ingress controller中间的理由:Ingress利用Service中的标签选择器来找到后端的Endpoint,同时Service暴露服务,Ingress对象本身只是一个路由规则,而Ingress controller是一个Pod,没有Service的话也无法接收流量。

环境:

平台:Azure - AKS - Linux

设备:Mac

本地操作系统:Unix 

部署:

Ingress controller:

ingress-nginx/index.md at main · kubernetes/ingress-nginx · GitHub

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.2.0/deploy/static/provider/cloud/deploy.yaml --dry-run=client -o yaml > ingress-controller.yaml

拿到yaml代码在本地查看,可根据需求来更改。

kubectl apply -f ingress-controller.yaml

部署Ingress controller之后会在AKS上得到一个External IP

 

Ingress:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-rule
  namespace: default
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx
  rules:
  - host: www.petclinic.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: gateway
            port:
              number: 8080

spec.ingressClassName这里我们填nginx,这个是在ingress-controller.yaml中声明出来的,直接用。

部署完之后需要注意host部分,我理解为Domain name,那么我们是没有这个Domain name的,因此在本地/etc/hosts中修改

sudo vi /etc/hosts,加入AKS提供的External IP  www.example.com(可自行修改为自己想要的Domain name)

接下来就可以到浏览器访问这个Domain name或者AKS提供的External IP(port可加可不加),也可以使用curl来替代浏览器。 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值