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

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

一 . 网络通信原理                                                                                                             

二. service作用及类型

三.   IPVS模式设置                                                                                                                          

      kubelet管理容器生命周期        kube-proxy是管理网络流量的   

          1.    安装查看策略工具

          2.    修改 kube-proxy配置

          3.  修改配置后需要重载或重启服务,这里直接删除重建

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

  IPVS模式下,kube-proxy会在service创建后,在宿主机上添加一个虚拟网卡并分配service IP  

             5.   查看策略

    kube-proxy通过linux的IPVS模块,以rr轮询的方式调度service中的pod                                     

            6. 查看其他节点的mac地址

  四. 修改flannel网络模式                                                                                                 

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

           此时查看已经生效

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

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

               2. 使其生效并查看svc

               3. 通过之前deployment控制器创建pod并使其生效

             4.  查看service详情

            5. 此时ip a查看到多了service暴露的IP

             6. 查看策略且为负载均衡

             7. 查看dns解析

  六. Headless Service服务                                                                                                     

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

                2. headless通过svc名称访问,由集群内dns提供解析

   七. 开始创建service(Nodeport)                                                                                      

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

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

             2. 应用后查看svc     (nodeport就是在ClusterIP上绑了一个端口) 

              3. 也可以直接修改类型           kubectl edit svc my-nginx

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

      访问集群任何一个节点端口时候,流量就到达集群,然后转发到集群内的vip

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

           6.  在编辑文件添加参数后重新应用即可

八. 开始创建service(LoadBalancer)                                                                               

LoadBalancer在集群外是有负载均衡的,并不是k8s的功能,是从公有云平台分配的地址,直接访问给的地址会直接转发到节点端口nodeport上,在进入到集群内,这样一个服务就可以分配一个地址                                                                                                                                       

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

          2. 应用后查看处于Pending状态表示没有分配IP  (只要访问分配的IP就转发到指定端口) 

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

          1. 修改配置文件            kubectl edit configmap -n kube-system kube-proxy

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

        3.  下载部署文件       

   wget https://raw.githubusercontent.com/metallb/metallb/v0.13.9/config/manifests/metallb-native.yaml                                                                     

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

        5.  仓库创建新项目将上面所需镜像下载上传进去

           3.  应用配置文件并查看pod就绪

           4.  创建编辑文件              vim config.yaml

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

九 . 开始创建service(externalname)                                    

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

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

               2. 用命令查看解析

            3. 更改对外连接资源查看

十.  Ingress-nginx                                                                                                           

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

     (1)功能简介         

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

(3)开始部署实验环境           

                  1. 下载部署文件

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

              3. 创建新的项目将镜像上传进去

                 4.  应用文件并查看pod情况

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

方便实验将这里修改,因为Clusterip只能在集群内访问,为了测试Ingress功能,用ingress七层方式把应用暴露出去                                                                                                            

    开始Ingress控制器环节   

                1. 修改Ingress控制器的类型

               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路由规则,基于域名转发

             4.  Ingress规则必须和上面创建的两个svc必须处于同一个namespace

             5.  在集群外的主机上添加解析即可访问

  十一. Ingress TLS配置                                                                                                  

Basic Authentication - Ingress-Nginx Controller (kubernetes.github.io)icon-default.png?t=N7T8https://kubernetes.github.io/ingress-nginx/examples/auth/basic/

         1. 生成自签名证书 2.上面生成的tls两个文件在操作系统中存放,要让集群能够识别到,create将其创建为集群的资源

        3.  编辑文件添加模块后应用文件并详情查看是否成功       vim ingress.yaml

           4. 集群外访问即可

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

            1.  创建auth文件

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

           3.编辑文件添加模块后应用文件并详情查看是否成功       vim ingress.yaml

           4.集群外尝试访问即可

  十三. Rewrite重定向                                                                                                               

            1. 编辑文件添加参数后应用       vim ingress.yaml

          2. 没修改前访问

          3. 修改后访问即重定向

          

              

       

       

          

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/616756.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NAND Separate Command Address (SCA) 接口数据传输解读

在采用Separate Command Address (SCA) 接口的存储产品中,DQ input burst和DQ output burst又是什么样的策略呢? DQ Input Burst: 在读取操作期间,数据以一种快速并行的方式通过DQ总线传送到控制器。在SCA接口下,虽然命令和地址信…

关于Python里xlwings库对Excel表格的操作(三十一)

这篇小笔记主要记录如何【如何使用“Chart类”、“Api类"和“Axes函数”设置绘图区外框线型、颜色、粗细及填充颜色】。前面的小笔记已整理成目录,可点链接去目录寻找所需更方便。 【目录部分内容如下】【点击此处可进入目录】 (1)如何安…

【附源码】基于SSM+Java的题库管理系统的设计与实现

基于SSMJava的题库管理系统的设计与实现 🍅 作者主页 央顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(We…

Redis的优化

1 Redis的高可用 1.1 高可用的定义 在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。 但是在Redis语境中,高可用的含义似乎要宽泛一些&…

RTSP网络视频协议

一.RTSP网络视频协议介绍 RTSP是类似HTTP的应用层协议,一个典型的流媒体框架网络体系可参考下图,其中rtsp主要用于控制命令,rtcp主要用于视频质量的反馈,rtp用于视频、音频流从传输。 1、RTSP(Real Time Streaming P…

【群晖NAS】记一次FRP报错:login to server failed: connection write timeout

报错如下: rongfuDS224plus:~/fff/frp$ ./frpc -c ./frpc.toml 2024/01/12 23:08:31 [I] [root.go:139] start frpc service for config file [./frpc.toml] 2024/01/12 23:08:41 [W] [service.go:131] login to server failed: i/o deadline reached 2024/01/12 2…

人工智能:未来智慧城市建设的“智慧大脑”与核心价值

目录 一、引言 二、人工智能在智慧城市中的应用实例 三、人工智能对智慧城市建设的核心价值 四、面临的挑战与未来展望 五、结语 六、附:智慧城市全套解决方案大合集 - 下载 一、引言 随着科技的飞速发展,智慧城市的概念逐渐深入人心。智慧城市利…

python爬虫实战(10)--获取本站热榜

1. 需要的类库 import requests import pandas as pd2. 分析 通过分析,本站的热榜数据可以直接通过接口拿到,故不需要解析标签,请求热榜数据接口 url "https://xxxt/xxxx/web/blog/hot-rank?page0&pageSize25&type" #本…

最全Linux驱动开发全流程详细解析(持续更新)

Linux驱动开发详细解析 一、驱动概念 驱动与底层硬件直接打交道,充当了硬件与应用软件中间的桥梁。 具体任务 读写设备寄存器(实现控制的方式)完成设备的轮询、中断处理、DMA通信(CPU与外设通信的方式)进行物理内存…

linux创建文件并分配权限

linux中对文件的定义 在Linux中,文件是一个具有符号名字的一组相关联元素的有序序列。文件可以包含的内容十分广泛,操作系统和用户都可以将具有一定独立功能的一个程序模块、一组数据或一组文字命名为一个文件。文件名是数据有序序列集合(文…

聚焦老年生活与健康,“老有所依·情暖夕阳”元岗街社区微型养老博览会顺利开展

尊老敬老是中华民族的传统美德, 爱老助老是全社会的共同责任。 家有一老,如有一宝, 长者的生活情况是一个家庭的头等大事, 做好长者服务是街道和社区的重要工作。 2024年1月6日,由元岗街道党工委、元岗街道办事处、…

开源C语言库Melon:红黑树

本文对Melon库中的红黑树进行介绍,关于Melon库,这是一个开源的C语言库,它具有:开箱即用、无第三方依赖、安装部署简单、中英文文档齐全等优势。 Github repo 简介 红黑树是一种被应用的非常广泛的数据结构,用于快速搜…

Veeam Backup12安装备份恢复ESXI7.0 U3虚拟机

介绍 只需单个平台即可保护并管理所有工作负载、应用及数据:云端、虚拟、物理、SaaS、Kubernetes、VMware、Hyper-V、Windows、Linux、UNIX、NAS、AWS、Azure、企业应用等。 个人主要用于备份ESXi上的虚拟机,可以实现单次完整备份,和定时的…

Vue3 的基本开发+新特性

Vue3 1.Vue3 1. Vue2 选项式 API vs Vue3 组合式API <script> export default {data(){return {count:0}},methods:{addCount(){this.count}} } </script> <script setup> import { ref } from vue const count ref(0) const addCount ()> count.val…

小H靶场笔记:Empire-Breakout

Empire&#xff1a;Breakout January 11, 2024 11:54 AM Tags&#xff1a;brainfuck编码&#xff1b;tar解压变更目录权限&#xff1b;Webmin&#xff1b;Usermin Owner&#xff1a;只惠摸鱼 信息收集 使用arp-scan和namp扫描C段存活主机&#xff0c;探测靶机ip&#xff1a;1…

作业--day45

定时播放 #include "mywidget.h" #include "ui_mywidget.h"MyWidget::MyWidget(QWidget *parent) :QWidget(parent),ui(new Ui::MyWidget) {ui->setupUi(this);ui->bg_lab->setPixmap(QPixmap(":/pictrue/shanChuan.jpg"));ui->bg_…

AJAX入门到实战,学习前端框架前必会的(ajax+node.js+webpack+git)(六)

《诗小雅小旻》&#xff1a;“战战兢兢&#xff0c;如临深渊&#xff0c;如履薄冰。” 01.Nodejs安装与使用 什么是 Node.js&#xff1f; 什么是前端工程化&#xff1f; Node.js 为何能执行 JS&#xff1f; 查看当前使用的Node.js版本&#xff1a;node -v 执行JS&#xff1a;no…

Linux(Debina12)系统安装

在开发或学习中&#xff0c;linux系统是我们必须要熟悉的系统&#xff0c;那么今天就记录一下&#xff0c;较为稳定&#xff0c;也是小编这几年当做开发环境的发行版吧 官网地址 https://www.debian.org 下载链接 http://mirrors.163.com/debian-cd/12.4.0/amd64/iso-dvd/ …

先锋WEB燃气收费系统 Upload.aspx 文件上传漏洞复现

0x01 产品简介 先锋WEB燃气收费系统是一种先进的在线燃气收费解决方案,旨在简化和优化燃气收费的流程和管理。该系统基于Web平台,提供了一系列功能和工具,使燃气公司能够高效地进行收费、账单管理和客户服务。 0x02 漏洞概述 先锋WEB燃气收费系统/AjaxService/Upload.asp…

PHP版学校教务管理系统源码带文字安装教程

PHP版学校教务管理系统源码带文字安装教程 运行环境 服务器宝塔面板 PHP 7.0 Mysql 5.5及以上版本 Linux Centos7以上 系统介绍&#xff1a; 后台权限控制&#xff1a;支持多个管理员&#xff0c;学生管理&#xff0c;学生成绩&#xff0c;教师管理&#xff0c;文章管理&#x…