k8s学习-Ingress(安装、模板、创建、删除)


什么是Ingress?

Ingress和之前提到的Service、Deployment一样,也是一个k8s的资源类型,ingress用于实现用域名的方式访问k8s内部应用。Ingress 可以提供负载均衡、SSL 终止和基于名称的虚拟托管。Ingress 不会公开任意端口或协议。 将 HTTP 和 HTTPS 以外的服务公开到 Internet 时,通常使用 Service.Type=NodePort 或 Service.Type=LoadBalancer 类型的 Service。
在这里插入图片描述

使用helm安装Ingress

下载、安装helm

下载地址-github-helm
博主下载的3.6.3

解压

tar -zxf helm-v3.6.3-linux-amd64.tar.gz

安装

mv linux-amd64/helm /usr/local/bin/helm

查看

helm version

在这里插入图片描述

下载、安装ingress

添加仓库

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx

在这里插入图片描述
下载ingress

helm pull ingress-nginx/ingress-nginx

解压
修改配置

  • hostNetwork设置为true
  • dnsPolicy设置为 ClusterFirstWithHostNet
  • nodeSelector添加ingress: “true”
  • 部署至指定节点 类型更改为kind: DaemonSet
  • LoadBalancer 改为 ClusterIP

nodeSelector的修改如下图所示:
在这里插入图片描述
其他的我就不一一截图了。
安装ingress

kubectl label node k8s-master ingress=true
kubectl create ns ingress-nginx
helm install ingress-nginx -n ingress-nginx .

在这里插入图片描述

模板

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: minimal-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx-example
  rules: # 一个Ingress可以配置多个rules
  - host: foo.bar.com # 域名配置,可以不写,匹配*, *.bar.com
    http:
      paths: # 相当于nginx的location配合,同一个host可以配置多个path: /、/abc
      - path: /testpath
        pathType: Prefix
        backend:
          service:
            name: test
            port:
              number: 80

当前支持的路径类型有三种:

  • ImplementationSpecific:对于这种路径类型,匹配方法取决于 IngressClass。 具体实现可以将其作为单独的 pathType 处理或者与 Prefix 或 Exact 类型作相同处理。
  • Exact:精确匹配 URL 路径,且区分大小写。
  • Prefix:基于以 / 分隔的 URL 路径前缀匹配。匹配区分大小写,并且对路径中的元素逐个完成。 路径元素指的是由 / 分隔符分隔的路径中的标签列表。 如果每个 p 都是请求路径 p 的元素前缀,则请求与路径 p 匹配。

实战

创建

为ing-internal命名空间下的service hi创建一个ingress,使用app-root类型的annotations,代理端口80,域名为app.hi.com。最终实现302的效果。

ingress-app-root.html

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/app-root: /app1
  name: approot
  namespace: ing-internal
spec:
  ingressClassName: nginx
  rules:
  - host: app.hi.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: http-svc
            port: 
              number: 80
kubectl create -f ingress-app-root.html

在这里插入图片描述
在ingress的po中可以看到如何修改了nginx的配置文件,来实现302
在这里插入图片描述

删除

命令

kubectl delete -f ingress-app-root.html

结果
在这里插入图片描述

参考

helm安装
k8s-使用helm安装ingress
k8s-Ingress
k8s-Ingress控制器
ingress安装
ingress-nginx user guide
github - ingress issue
ingress - rewrite

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lady_killer9

感谢您的打赏,我会加倍努力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值