• kubernetes6 (ingress)


    一、Ingress服务简介

    单独用service暴露服务的方式,在实际生产环境中不太适用。
    ClusterIP的方式只能在集群内部访问;NodePort方式,当服务在集群中运行过多时,NodePort的端口管理是灾难;LoadBalance方式受限于云平台,且通常在云平台部署ELB还需要额外的费用。

    一种全局的、为了代理不同后端 Service 而设置的负载均衡服务,就是 Kubernetes 里的Ingress 服务。Ingress由两部分组成:Ingress controller和Ingress服务。

    Ingress Controller 会根据你定义的 Ingress 对象,提供对应的代理能力。业界常用的各种反向代理项目,比如 Nginx、HAProxy、Envoy、Traefik 等,都已经为Kubernetes 专门维护了对应的 Ingress Controller。

    ingress服务的使用必须在策略网络中才能实现,如calico网络

    二、ingress部署

    用deployment控制器部署ingress-controller,创建一个LoadBalancer类型的service关联这组pod。LoadBalancer的service绑定了公网地址。真机进行域名解析之后,即可实现集群服务的对外暴露

    上传镜像

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    修改配置文件

    Installation Guide - NGINX Ingress Controller https://kubernetes.github.io/ingress-nginx/deploy/
    在这里插入图片描述
    下载deloy.yaml文件
    在deloy.yaml文件修改镜像地址
    在这里插入图片描述
    在这里插入图片描述
    执行deploy.yaml清单
    在这里插入图片描述
    主要负责nginx的负载均衡器
    查看ingress-nginx的所有信息,可以看到ingress-nginx-controller已经running
    在这里插入图片描述
    svc和pod都已经就绪
    查看svc暴露端口为32567
    在这里插入图片描述
    有对应的
    在这里插入图片描述

    创建ingress服务

    在这里插入图片描述
    在这里插入图片描述
    按照这个信息修改ingress.yaml
    在这里插入图片描述
    在这里插入图片描述
    访问控制器时,就可以转发到myapp-svc端口上
    在这里插入图片描述客户端测试访问的32567端口,访问成功
    在这里插入图片描述
    在这里插入图片描述
    修改为loadbalancer,被分到一个vip
    在这里插入图片描述
    在这里插入图片描述
    可以直接curl 172.26.240.100,和下图获得同样效果
    在这里插入图片描述

    ingress管理多个svc

    清除之前的实验
    在这里插入图片描述
    将deployment.yaml和ingress.yaml放到一个路径
    复制headless
    在这里插入图片描述
    编辑deployment
    在这里插入图片描述
    运行
    ingress后面调度的是svc,svc资源和ingress在一起
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    访问不同的路径可以接到不同的svc上

    在这里插入图片描述
    在这里插入图片描述
    现在通过域名进行暴露
    在这里插入图片描述
    在这里插入图片描述
    解析到vip上
    在这里插入图片描述
    负载均衡
    在这里插入图片描述

    加密认证重定向

    现在想通过443端口HTTPS方式(加密)来访问服务
    原本的yaml
    在这里插入图片描述

    开启tls加密

    开启集群,生成key
    在这里插入图片描述
    用生成的证书和key创建tls-secrets(secrets对应密钥)
    在这里插入图片描述
    在这里插入图片描述
    两个域名都用下面的tls-secret加密方法
    在这里插入图片描述
    在这里插入图片描述
    没有定义后端默认页会显示404
    在这里插入图片描述
    一旦启动加密,就是自动重定向
    在这里插入图片描述
    在这里插入图片描述
    说明加密生效

    认证

    在这里插入图片描述
    存入认证信息
    在这里插入图片描述
    其实是一个base64的编码格式
    在这里插入图片描述

    annotation参数

    Annotation,顾名思义,就是注解。Annotation可以将Kubernetes资源对象关联到任意的非标识性元数据。使用客户端(如工具和库)可以检索到这些元数据。Annotation与Label类似,也使用key/value键值对的形式进行定义。不同的Label具有严格的命名规则,它定义的是Kubernetes对象的元数据(Metadata),并且用于Label Selector。而Annotation则是用户任意定义的“附加”信息,以便于外部工具进行查找,很多时候,Kubernetes的模块自身会通过Annotation的方式标记资源对象的特殊信息。

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    401是需要认证
    在这里插入图片描述

    重写功能

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    重定向到一个路径

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    【PAT甲级】1073 Scientific Notation
    UML图与List集合
    【c++百日刷题计划】 ———— DAY10,奋战百天,带你熟练掌握基本算法
    docker修改mysql配置文件
    Docker 安装 Elasticsearch7.16.x
    C/C++ 常见数组排序算法
    yolov8如何进行训练验证推理
    计算机网络(一)网络体系结构
    网络分析笔记02:解析pcapng的节头块
    光纤连接器的连接方法
  • 原文地址:https://blog.csdn.net/weixin_43635039/article/details/124879562