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

      官网地址:   服务(Service) | Kubernetesicon-default.png?t=N7T8https://v1-24.docs.kubernetes.io/zh-cn/docs/concepts/services-networking/service/

Kubernetes (七) service(微服务)及Ingress-nginx_第1张图片

一 . 网络通信原理                                                                                                             

Kubernetes (七) service(微服务)及Ingress-nginx_第2张图片

Kubernetes (七) service(微服务)及Ingress-nginx_第3张图片

Kubernetes (七) service(微服务)及Ingress-nginx_第4张图片

Kubernetes (七) service(微服务)及Ingress-nginx_第5张图片

二. service作用及类型

Kubernetes (七) service(微服务)及Ingress-nginx_第6张图片

三.   IPVS模式设置                                                                                                                          

      kubelet管理容器生命周期        kube-proxy是管理网络流量的   Kubernetes (七) service(微服务)及Ingress-nginx_第7张图片

          1.    安装查看策略工具

          2.    修改 kube-proxy配置Kubernetes (七) service(微服务)及Ingress-nginx_第8张图片

          3.  修改配置后需要重载或重启服务,这里直接删除重建Kubernetes (七) service(微服务)及Ingress-nginx_第9张图片

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

  IPVS模式下,kube-proxy会在service创建后,在宿主机上添加一个虚拟网卡并分配service IP  Kubernetes (七) service(微服务)及Ingress-nginx_第10张图片

             5.   查看策略

    kube-proxy通过linux的IPVS模块,以rr轮询的方式调度service中的pod                                     Kubernetes (七) service(微服务)及Ingress-nginx_第11张图片

            6. 查看其他节点的mac地址Kubernetes (七) service(微服务)及Ingress-nginx_第12张图片

  四. 修改flannel网络模式                                                                                                 

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

Kubernetes (七) service(微服务)及Ingress-nginx_第13张图片

           此时查看已经生效

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

              1.  创建编辑文件           vim clusterip.yamlKubernetes (七) service(微服务)及Ingress-nginx_第14张图片

               2. 使其生效并查看svcKubernetes (七) service(微服务)及Ingress-nginx_第15张图片

               3. 通过之前deployment控制器创建pod并使其生效Kubernetes (七) service(微服务)及Ingress-nginx_第16张图片

             4.  查看service详情Kubernetes (七) service(微服务)及Ingress-nginx_第17张图片

            5. 此时ip a查看到多了service暴露的IPKubernetes (七) service(微服务)及Ingress-nginx_第18张图片

             6. 查看策略且为负载均衡Kubernetes (七) service(微服务)及Ingress-nginx_第19张图片

             7. 查看dns解析

  六. Headless Service服务                                                                                                     

                 1. 创建编辑文件               vim headless.yamlKubernetes (七) service(微服务)及Ingress-nginx_第20张图片

                2. headless通过svc名称访问,由集群内dns提供解析Kubernetes (七) service(微服务)及Ingress-nginx_第21张图片Kubernetes (七) service(微服务)及Ingress-nginx_第22张图片

   七. 开始创建service(Nodeport)                                                                                      

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

             1. 创建编辑文件         vim nodeport.yamlKubernetes (七) service(微服务)及Ingress-nginx_第23张图片

             2. 应用后查看svc     (nodeport就是在ClusterIP上绑了一个端口) Kubernetes (七) service(微服务)及Ingress-nginx_第24张图片

              3. 也可以直接修改类型           kubectl edit svc my-nginx
Kubernetes (七) service(微服务)及Ingress-nginx_第25张图片

            4. 此时用集群外访问任何一个节点都可以

      访问集群任何一个节点端口时候,流量就到达集群,然后转发到集群内的vipKubernetes (七) service(微服务)及Ingress-nginx_第26张图片Kubernetes (七) service(微服务)及Ingress-nginx_第27张图片

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

           6.  在编辑文件添加参数后重新应用即可Kubernetes (七) service(微服务)及Ingress-nginx_第28张图片

八. 开始创建service(LoadBalancer)                                                                               

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

           1. 创建编辑文件      vim loadbalancer.yamlKubernetes (七) service(微服务)及Ingress-nginx_第30张图片

          2. 应用后查看处于Pending状态表示没有分配IP  (只要访问分配的IP就转发到指定端口) Kubernetes (七) service(微服务)及Ingress-nginx_第31张图片

  因为公有云要收费 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_第32张图片

        2.  删除kube-proxy里边的pod自动重建

        3.  下载部署文件       

   wget https://raw.githubusercontent.com/metallb/metallb/v0.13.9/config/manifests/metallb-native.yaml                                                                     Kubernetes (七) service(微服务)及Ingress-nginx_第33张图片

       4. 编辑文件  将两个镜像路径修改和仓库一致    新创建的目录 metallb/vim metallb-native.yaml

        5.  仓库创建新项目将上面所需镜像下载上传进去Kubernetes (七) service(微服务)及Ingress-nginx_第34张图片Kubernetes (七) service(微服务)及Ingress-nginx_第35张图片Kubernetes (七) service(微服务)及Ingress-nginx_第36张图片

           3.  应用配置文件并查看pod就绪Kubernetes (七) service(微服务)及Ingress-nginx_第37张图片

           4.  创建编辑文件              vim config.yamlKubernetes (七) service(微服务)及Ingress-nginx_第38张图片

          5.  应用后查看分配地址成功 且集群外可以访问

九 . 开始创建service(externalname)                                    

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

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

Kubernetes (七) service(微服务)及Ingress-nginx_第39张图片

               2. 用命令查看解析Kubernetes (七) service(微服务)及Ingress-nginx_第40张图片

            3. 更改对外连接资源查看Kubernetes (七) service(微服务)及Ingress-nginx_第41张图片Kubernetes (七) service(微服务)及Ingress-nginx_第42张图片

十.  Ingress-nginx                                                                                                           

Ingress | Kubernetesicon-default.png?t=N7T8https://v1-24.docs.kubernetes.io/zh-cn/docs/concepts/services-networking/ingress/

     (1)功能简介         Kubernetes (七) service(微服务)及Ingress-nginx_第43张图片

Kubernetes (七) service(微服务)及Ingress-nginx_第44张图片

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

Kubernetes (七) service(微服务)及Ingress-nginx_第45张图片

(3)开始部署实验环境           

                  1. 下载部署文件Kubernetes (七) service(微服务)及Ingress-nginx_第46张图片

                2. 查看所需镜像下载并修改三处镜像为仓库路径

              3. 创建新的项目将镜像上传进去Kubernetes (七) service(微服务)及Ingress-nginx_第47张图片

                 4.  应用文件并查看pod情况Kubernetes (七) service(微服务)及Ingress-nginx_第48张图片

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

方便实验将这里修改,因为Clusterip只能在集群内访问,为了测试Ingress功能,用ingress七层方式把应用暴露出去                                                                                                            Kubernetes (七) service(微服务)及Ingress-nginx_第49张图片

    开始Ingress控制器环节   

                1. 修改Ingress控制器的类型Kubernetes (七) service(微服务)及Ingress-nginx_第50张图片

               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_第51张图片

             4.  Ingress规则必须和上面创建的两个svc必须处于同一个namespaceKubernetes (七) service(微服务)及Ingress-nginx_第52张图片

             5.  在集群外的主机上添加解析即可访问Kubernetes (七) service(微服务)及Ingress-nginx_第53张图片

  十一. Ingress TLS配置                                                                                                  

Basic Authentication - Ingress-Nginx Controller (kubernetes.github.io)icon-default.png?t=N7T8https://kubernetes.github.io/ingress-nginx/examples/auth/basic/Kubernetes (七) service(微服务)及Ingress-nginx_第54张图片

Kubernetes (七) service(微服务)及Ingress-nginx_第55张图片

         1. 生成自签名证书Kubernetes (七) service(微服务)及Ingress-nginx_第56张图片 2.上面生成的tls两个文件在操作系统中存放,要让集群能够识别到,create将其创建为集群的资源

        3.  编辑文件添加模块后应用文件并详情查看是否成功       vim ingress.yamlKubernetes (七) service(微服务)及Ingress-nginx_第57张图片

Kubernetes (七) service(微服务)及Ingress-nginx_第58张图片

           4. 集群外访问即可Kubernetes (七) service(微服务)及Ingress-nginx_第59张图片

十二. auth认证(做完加密后做认证)                                                                                    Kubernetes (七) service(微服务)及Ingress-nginx_第60张图片

            1.  创建auth文件

           2. create将其创建为集群的资源

           3.编辑文件添加模块后应用文件并详情查看是否成功       vim ingress.yamlKubernetes (七) service(微服务)及Ingress-nginx_第61张图片Kubernetes (七) service(微服务)及Ingress-nginx_第62张图片

           4.集群外尝试访问即可Kubernetes (七) service(微服务)及Ingress-nginx_第63张图片

  十三. Rewrite重定向                                                                                                               Kubernetes (七) service(微服务)及Ingress-nginx_第64张图片

            1. 编辑文件添加参数后应用       vim ingress.yamlKubernetes (七) service(微服务)及Ingress-nginx_第65张图片

          2. 没修改前访问Kubernetes (七) service(微服务)及Ingress-nginx_第66张图片

          3. 修改后访问即重定向Kubernetes (七) service(微服务)及Ingress-nginx_第67张图片

          

              

       

       

          

你可能感兴趣的:(kubernetes,容器,云原生,运维,linux)