Kubernetes (七) service(微服务)及Ingress-nginx

这篇具有很好参考价值的文章主要介绍了Kubernetes (七) service(微服务)及Ingress-nginx。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

      官网地址:   服务(Service) | Kuberneteshttps://v1-24.docs.kubernetes.io/zh-cn/docs/concepts/services-networking/service/

Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

一 . 网络通信原理                                                                                                             

Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

二. service作用及类型

Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

三.   IPVS模式设置                                                                                                                          

      kubelet管理容器生命周期        kube-proxy是管理网络流量的   Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

          1.    安装查看策略工具Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

          2.    修改 kube-proxy配置Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

          3.  修改配置后需要重载或重启服务,这里直接删除重建Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

            4.  可以用ip a 查看网络信息(会出现虚拟网卡ipvs0)

  IPVS模式下,kube-proxy会在service创建后,在宿主机上添加一个虚拟网卡并分配service IP  Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

             5.   查看策略

    kube-proxy通过linux的IPVS模块,以rr轮询的方式调度service中的pod                                     Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

            6. 查看其他节点的mac地址Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linuxKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linuxKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

  四. 修改flannel网络模式                                                                                                 

            1. 改为主机网关模式并删除pod自动重建使其生效

Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linuxKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

           此时查看已经生效

Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

  五. 开始创建service(默认为ClusterIP)

              1.  创建编辑文件           vim clusterip.yamlKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

               2. 使其生效并查看svcKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

               3. 通过之前deployment控制器创建pod并使其生效Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

             4.  查看service详情Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

            5. 此时ip a查看到多了service暴露的IPKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

             6. 查看策略且为负载均衡Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

             7. 查看dns解析Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

  六. Headless Service服务                                                                                                     

Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

                 1. 创建编辑文件               vim headless.yamlKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

                2. headless通过svc名称访问,由集群内dns提供解析Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linuxKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

   七. 开始创建service(Nodeport)                                                                                      

       在每个集群节点设置了端口,只要访问给定的端口就可以访问服务               

             1. 创建编辑文件         vim nodeport.yamlKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

             2. 应用后查看svc     (nodeport就是在ClusterIP上绑了一个端口) Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

              3. 也可以直接修改类型           kubectl edit svc my-nginx
Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

            4. 此时用集群外访问任何一个节点都可以Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

      访问集群任何一个节点端口时候,流量就到达集群,然后转发到集群内的vipKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linuxKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

            5. 指定端口方法      vim /etc/kubernetes/manifests/kube-apiserver.yaml
                                         (nodeport默认端口范围:30000-32767)修改后api-server会自动重启

Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

           6.  在编辑文件添加参数后重新应用即可Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linuxKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

八. 开始创建service(LoadBalancer)                                                                               

LoadBalancer在集群外是有负载均衡的,并不是k8s的功能,是从公有云平台分配的地址,直接访问给的地址会直接转发到节点端口nodeport上,在进入到集群内,这样一个服务就可以分配一个地址                                                                                                                                       Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

           1. 创建编辑文件      vim loadbalancer.yamlKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

          2. 应用后查看处于Pending状态表示没有分配IP  (只要访问分配的IP就转发到指定端口) Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

  因为公有云要收费 metallb用来实现在私有化搭建的裸机环境中实现负载均衡器的功能,在没有云环境的情况下通过metallb将service暴露到网络环境中,供其他系统访问。
裸金属环境中模拟云端环境,分配ip
它的作用就是通过k8s原生的方式提供LB(LoadBalancer )类型的Service支持,开箱即用。
  官网: MetalLB, bare metal load-balancer for Kubernetes

          1. 修改配置文件            kubectl edit configmap -n kube-system kube-proxyKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

        2.  删除kube-proxy里边的pod自动重建Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

        3.  下载部署文件       

   wget https://raw.githubusercontent.com/metallb/metallb/v0.13.9/config/manifests/metallb-native.yaml                                                                     Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

       4. 编辑文件  将两个镜像路径修改和仓库一致    新创建的目录 metallb/vim metallb-native.yamlKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linuxKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

        5.  仓库创建新项目将上面所需镜像下载上传进去Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linuxKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linuxKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

           3.  应用配置文件并查看pod就绪Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linuxKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

           4.  创建编辑文件              vim config.yamlKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

          5.  应用后查看分配地址成功 且集群外可以访问Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linuxKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

九 . 开始创建service(externalname)                                    

再做一些应用迁移时候常用,有的应用在集群内,有的应用在集群外,一般用来迁移应用.外部资源变更的时候我们只需要更改资源设置就行,而不用变更我们的应用连接

               1. 创建编辑文件               vim externalname.yaml

Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

               2. 用命令查看解析Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

            3. 更改对外连接资源查看Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linuxKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

十.  Ingress-nginx                                                                                                           

Ingress | Kuberneteshttps://v1-24.docs.kubernetes.io/zh-cn/docs/concepts/services-networking/ingress/

     (1)功能简介         Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

(2)下载官方地址:Installation Guide - Ingress-Nginx Controller (kubernetes.github.io)

Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

(3)开始部署实验环境           

                  1. 下载部署文件Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

                2. 查看所需镜像下载并修改三处镜像为仓库路径Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linuxKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linuxKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

              3. 创建新的项目将镜像上传进去Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linuxKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

                 4.  应用文件并查看pod情况Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linuxKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

                5. 将my-nginx控制器loadbalancer模式改为ClusterIP

方便实验将这里修改,因为Clusterip只能在集群内访问,为了测试Ingress功能,用ingress七层方式把应用暴露出去                                                                                                            Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

    开始Ingress控制器环节   

                1. 修改Ingress控制器的类型Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linuxKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

               2. 创建编辑文件并应用           vim myapp-deploy.yaml

           当访问不同域名的时候定义到不同的svc上                                                 

apiVersion: networking.k8s.io/v1

kind: Ingress

metadata:

  name: name-virtual-host-ingress

spec:

  ingressClassName: nginx

  rules:

  - host: nginx.westos.org

    http:

      paths:

      - pathType: Prefix

        path: "/"

        backend:

          service:

            name: my-nginx

            port:

              number: 80

  - host: myapp.westos.org

    http:

      paths:

      - pathType: Prefix

        path: "/"

        backend:

          service:

            name: my-myapp

            port

              number: 80

              3.  创建ingres路由规则,基于域名转发Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

             4.  Ingress规则必须和上面创建的两个svc必须处于同一个namespaceKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

             5.  在集群外的主机上添加解析即可访问Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linuxKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

  十一. Ingress TLS配置                                                                                                  

Basic Authentication - Ingress-Nginx Controller (kubernetes.github.io)https://kubernetes.github.io/ingress-nginx/examples/auth/basic/Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

         1. 生成自签名证书Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux 2.上面生成的tls两个文件在操作系统中存放,要让集群能够识别到,create将其创建为集群的资源Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

        3.  编辑文件添加模块后应用文件并详情查看是否成功       vim ingress.yamlKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

           4. 集群外访问即可Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

十二. auth认证(做完加密后做认证)                                                                                    

            1.  创建auth文件Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

           2. create将其创建为集群的资源Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

           3.编辑文件添加模块后应用文件并详情查看是否成功       vim ingress.yamlKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linuxKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

           4.集群外尝试访问即可Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

  十三. Rewrite重定向                                                                                                               

            1. 编辑文件添加参数后应用       vim ingress.yamlKubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

          2. 没修改前访问Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

          3. 修改后访问即重定向Kubernetes (七) service(微服务)及Ingress-nginx,kubernetes,容器,云原生,运维,linux

          文章来源地址https://www.toymoban.com/news/detail-785103.html

              

       

       

          

到了这里,关于Kubernetes (七) service(微服务)及Ingress-nginx的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 图解Kubernetes的服务(Service)

    pod 准备: 不要直接使用和管理Pods: 当使用ReplicaSet水平扩展scale时,Pods可能被terminated 当使用Deployment时,去更新Docker Image Version,旧Pods会被terminated,然后创建新Pods Kubernetes 中 Service 是 将运行在一个或一组 [Pod]上的网络应用程序公开为网络服务的方法。 Kubernetes 中 Service 的

    2024年02月03日
    浏览(34)
  • Kubernetes(k8s)服务service:service的发现和service的发布

    目录 一.系统环境 二.前言 三.Kubernetes service简介 四.使用hostPort向外界暴露应用程序 4.1 创建deploy 4.2 使用hostPort向外界暴露pod的端口 五.使用service服务向外界暴露应用程序 5.1 使用service服务向外界暴露pod 5.1.1 创建service服务 5.1.2 测试svc的负载均衡 六.service服务的发现 6.1 使用

    2024年02月08日
    浏览(54)
  • 【微服务】 Spring cold、Kubernetes、Service mesh

      目录  Spring Cloud # 什么是微服务?谈谈你对微服务的理解? # 什么是Spring Cloud? # springcloud中的组件有那些? # 具体说说SpringCloud主要项目? # Spring Cloud 和dubbo区别? # 服务注册和发现是什么意思?Spring Cloud 如何实现? # 什么是Eureka? # Eureka怎么实现高可用? # 什么是Eureka的自

    2024年01月15日
    浏览(40)
  • Kubernetes技术--k8s核心技术Service服务

    1.service概述         Service 是 Kubernetes 最核心概念, 通过创建 Service,可以为一组具有相同功能的容器应用提供一个统一的入口地址,并且将请求负载分发到后端的各个容器应用上 。 2.service存在的意义 -1: 防止pod失联(服务发现) 我们先说一下什么叫pod失联。     -2:

    2024年02月10日
    浏览(44)
  • Service Mesh和Kubernetes:加强微服务的通信与安全性

    🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏 ✨收录专栏:大数据系列 ✨文章内容: 🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!🤗 Kubernetes已经成为云原生应用程序的事实标准,它为容器编排和管

    2024年02月08日
    浏览(40)
  • 【Spring Cloud Kubernetes】使用k8s原生service实现服务注册和发现

    @TOC 现在微服务开发模式应用的越来越广泛,注册中心 Eureka 也逐渐被其它注册中心产品替代,比如阿里出品的 Nacos 。随着云原生相关技术的普及, k8s 迅猛发展,我们把 K8s 中的 Pod 暴露给外部访问,通过少了 Service ,这也是今天的主角。 有没有发现,其实 Service 已经解决了

    2024年02月12日
    浏览(77)
  • 【Kubernetes】第二十二篇 - k8s 部署 MySQL 服务(secret、deployment、service)

    上一篇,介绍基于 k8s 项目部署流程设计; 本篇,介绍 MySQL 服务的部署; 部署 MySQL 可以为指定 node 添加污点,专门用于 mysql 部署(当前只有一个节点,不考虑); 为了保证mysql容器重启时数据不会丢失:创建 mysql 数据目录,用于存储 mysql 数据,实现 MySQL 数据的持久化;

    2024年02月03日
    浏览(57)
  • (二十八)Kubernetes集群服务发现之Service资源ClusterIP/NodePort/HeadLiness/ExternallName类型详解

    目录 1.service介绍 1.1.service原理 1.2.kube-proxy支持的三种工作模式 1.3.开启ipvs模式 2.service资源清单文件 3.准备一个deployment资源 4.service资源详细配置 4.1.ClusterIP类型的Service 4.1.1.Endpoints资源 4.1.2.service亲和性负载策略 4.2.HeadLiness类型的Service 4.3.NodePort类型的Service 4.4.ExternalName类型的

    2024年02月21日
    浏览(33)
  • K8s的Service、Ingress

    ● 在kubernetes中,Pod是应用程序的载体,我们可以 通过Pod的IP 来访问应用程序,但是 Pod的IP地址 不是固定的,这就意味着不方便直接采用Pod的IP对服务进行访问。 ● 为了解决这个问题,kubernetes提供了Service资源,Service会对提供同一个服务的 多个Pod进行聚合 ,并且 提供一个

    2024年02月05日
    浏览(40)
  • Kubernetes-Ingress、Ingress Controller、Ingress Class

    1.Ingress 是对K8S集群中服务的外部访问进行管理的 API 对象。Ingress 公开从集群外部到集群内服务的 HTTP 和 HTTPS 路由。 流量路由由 Ingress 资源上定义的规则控制。 2.Ingress Controller 通常负责通过负载均衡器来实现 Ingress。 3.必须拥有一个 Ingress Controller 才能满足 Ing

    2024年02月11日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包