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. 修改后访问即重定向

          

              

       

       

          

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Flet教程】使用Flet以Python创建TODO应用程序

Flet是基于Python实现的Flutter图形界面GUI。除了使用Python,具备美观、简洁、易用,还有Flutter本身的跨平台(安卓、iOS、Win、Mac、Web)、高性能、有后盾的特点。下面是0.18版官方TODO APP教程,为了准确,保…

java智慧医院互联网智慧3D导诊系统源码,经由智慧导诊系统多维度计算,准确推荐科室

什么是智慧导诊系统? 简单地说,智慧导诊系统是一种利用人工智能技术,为医生提供帮助的系统。它可以通过分析患者的症状和病史为医生提供疾病诊断和治疗方案的建议。 系统介绍: 医院智慧导诊系统是在医院中使用的引导患者自助就诊挂号&…

git ssh key 配置

一、Profile Settings-->SSH Keys 我们点击这里会有详情的文档介绍生成sshkey。 ssh-keygen -t rsa -b 2048 -C "邮箱" --回车... 将生成的id_rsa.pub粘贴到如下保存 git config --global user.name "用户名" git config --global user.email "邮…

数据分析基础之《pandas(1)—pandas介绍》

一、pandas介绍 1、2008年Wes McKinney(韦斯麦金尼)开发出的库 2、专门用于数据分析的开源python库 3、以numpy为基础,借力numpy模块在计算方面性能高的优势 4、基于matplotlib能够简便的画图 5、独特的数据结构 6、也是三个单词组合而…

基于Kettle开发的web版数据集成开源工具(data-integration)-应用篇

目录 📚第一章 基本流程梳理📗页面基本操作📗对应后台服务流程 📚第二章 二开思路📗前端📗后端📗后续补充:[Kettle Local引擎源码使用记录](https://renxiaozhao.blog.csdn.net/arti…

【Spring】Spring的事务管理

前言: package com.aqiuo.service.impl;import com.aqiuo.dao.AccountMapper; import com.aqiuo.pojo.Account; import com.aqiuo.service.AccountService; import org.springframework.jdbc.core.JdbcTemplate;import java.sql.Connection; import java.sql.SQLEx…

【QML COOK】- 000-创建Project

1. 文件->New Project... 2. Application(Qt)->Qt Quick Application(compat) 3. 填好【名称】和【创建路径】 4. 选择CMake 5. 选择QT6.2 6. 直接【下一步】 7. 直接下一步 8. 直接下一步 9. 出现工程文件 10. 点击运行 11. 出现窗口

leetcode算法题之递归--深度优先搜索总结

文章目录 1.全排列2.子集 1.全排列 全排列 class Solution {vector<vector<int>> ret;vector<int> path;bool check[7];//标记nums数组某个下标是否已访问&#xff0c;剪枝使用 public:vector<vector<int>> permute(vector<int>& n…

输入输出流、字符字节流、NIO

1、对输入输出流、字符字节流的学习&#xff0c;以之前做的批量下载功能为例 批量下载指的是&#xff0c;将多个文件打包到zip文件中&#xff0c;然后下载该zip文件。 1.1下载网络上的文件 代码参考如下&#xff1a; import java.io.*; import java.net.URL; import java.n…

2023三星齐发,博客之星、华为OD、Java学习星球

大家好&#xff0c;我是哪吒。 一、回顾2023 2023年&#xff0c;华为OD成了我的主旋律&#xff0c;一共发布了561篇文章&#xff0c;其中包含 368篇华为OD机试的文章&#xff1b;100篇Java基础的文章40多篇MongoDB、Redis的文章&#xff1b;30多篇数据库的文章&#xff1b;2…

创建第一个SpringMVC项目,入手必看!

文章目录 创建第一个SpringMVC项目&#xff0c;入手必看&#xff01;1、新建一个maven空项目&#xff0c;在pom.xml中设置打包为war之前&#xff0c;右击项目添加web框架2、如果点击右键没有添加框架或者右击进去后没有web框架&#xff0c;点击左上角file然后进入项目结构在模块…

MES系统精准把控生产全过程,按期交货不再难

当订单交期较短时且物料异常较大时物料会存在供应商交期困难&#xff0c;PMC在下PR单时需注明原因&#xff0c;同时要求采购紧急回复&#xff0c;PMC将最终交期知会相关部门。若为PMC漏单&#xff0c;则需注明情况并且作紧急物料处理确保订单正常出货。PMC每周需将紧急物料列出…

New!2024最新ChatGPT提示词开源项目:GPT Prompts Hub - 专注于深化对话质量和探索更复杂的对话结构

&#x1f31f; GPT Prompts Hub &#x1f31f; 欢迎来到 “GPT Prompts Hub” 存储库&#xff01;探索并分享高质量的 ChatGPT 提示词。培养创新性内容&#xff0c;提升对话体验&#xff0c;激发创造力。我们极力鼓励贡献独特的提示词。 在 “GPT Prompts Hub” 项目中&#…

LeetCode-58/709

1.最后一个单词的长度&#xff08;58&#xff09; 题目描述&#xff1a; 给你一个字符串 s&#xff0c;由若干单词组成&#xff0c;单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 思路&…

是时候扔掉cmder, 换上Windows Terminal

作为一个Windows的长期用户&#xff0c;一直没有给款好用的终端&#xff0c;知道遇到了 cmder&#xff0c;它拯救一个习惯用Windows敲shell命令的人。 不用跟我安利macOS真香&#xff01;公司上班一直用macOS&#xff0c;一方面确实更加习惯windows下面学习, 另一方面是上课需要…

Large Language Models Paper 分享

论文1&#xff1a; ChatGPTs One-year Anniversary: Are Open-Source Large Language Models Catching up? 简介 2022年11月&#xff0c;OpenAI发布了ChatGPT&#xff0c;这一事件在AI社区甚至全世界引起了轰动。首次&#xff0c;一个基于应用的AI聊天机器人能够提供有帮助、…

一文初步了解slam技术

本文初步介绍slam技术&#xff0c;主要是slam技术的概述&#xff0c;涉及技术原理、应用场景、分类、以及各自优缺点&#xff0c;和slam技术的未来展望。 &#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;slam精进之…

Hyperledger Fabric Java App Demo

编写一个应用程序来连接到 fabrc 网络中&#xff0c;通过调用智能合约来访问账本. fabric gateway fabric gateway 有两个项目&#xff0c;一个是 fabric-gateway-java , 一个是 fabric-gateway。 fabric-gateway-java 是比较早的项目&#xff0c;使用起来较为麻烦需要提供一…

【JaveWeb教程】(12) 一篇文章教你轻松搞定IDEA集成Maven(最详细)

目录 03. IDEA集成Maven3.1 配置Maven环境3.1.1 当前工程设置3.1.2 全局设置 3.2 Maven项目3.2.1 创建Maven项目3.2.2 POM配置详解3.2.3 Maven坐标详解 3.3 导入Maven项目 03. IDEA集成Maven 我们要想在IDEA中使用Maven进行项目构建&#xff0c;就需要在IDEA中集成Maven 3.1 …

Bedrock Base推出Gal 01,一款专为个人用户设计的AI人工智能电脑

Bedrock Base 是一个为高效团队设计的协作工作环境。它的主要用途是帮助团队更快、更好地进行创作和合作。 Bedrock Base 可以对各行各业的团队都有帮助和影响。无论是科技行业、创意行业、媒体行业还是其他行业&#xff0c;团队都可以利用 Bedrock Base 的功能来更高效地组织…