当前位置: 首页 > news >正文

Kubernetes服务发布基础

service的概念和原理

  • service概念及用途
    • service用于将外部请求代理到内部Pod上,提供四层负载均衡和服务发现的功能,使得我们可以构建高可用和可扩展的应用程序
  • service基本原理

  • service的负载均衡机制
    • 当一个Service对象在Kubernetes集群中背定义出来时,集群内的客户端应用就可以通过服务IP访问到具体的Pod容器提供的服务,从服务IP到后端Pod的负载均衡机制,是有每个node上的kube-proxy代理负责实现的
    • kube-proxy的代理模式有:userspace、iptables、IPVS和kernelspace
  • kube-proxy的代理模式之userspace

    • kube-proxy为每个Service在node上打开一个随机端口做为代理端口
    • 建立iptables规则,将clusterip请求重定向到代理端口(用户空间)
    • 到达代理端口的请求再由kube-proxy转发到后端
  • kube-proxy的代理模式之iptables

    • 通过API Server的Watch接口实时跟踪Service和Endpoint的变更信息
    • 并更新对应的iptables规则
    • Client的请求流量通过iptables的NAT机制“直接路由”到目标Pod
    • kube-proxy不再负责转发数据包,kube-proxy主要完成对iptables策略的动态管理
  • kube-proxy的代理模式之IPVS

    • IPVS专门用于高性能的负载均衡
    • IPVS使用ipset存储iptables规则,可以将ipset简单理解为IP集合
    • 减少iptables规则的数量,从而减少性能损耗

service的类型

  • Service的四种类型
    • ClusterIP(默认创建出来的Service,虚拟VIP只供内部使用,给k8s内其他程序使用的)(使用场景:内部程序之间访问)
      • 这是最常用的Service类型,它为Pod提供了一个虚拟的IP地址,当其他的Pod需要访问钙Service时,他们只需要使用该虚拟IP地址即可。Kubernetes会自动将请求路由到相应的Pod上
    • NodePort
      • 这种Service类型将Pod公开为集群中所有节点上的某个端口。当外部的请求到达任何一个节点上的该端口时,Kubernetes会将请求路由到相应的Pod上。
    • LoadBalancer
      • LoadBalancer Service:这种Service类型使用云提供商的负载均衡器将请求路由到后端Pod。Kubernetes会自动创建和配置负载均衡器,并将其绑定到Service上。
    • externalName(外部空间)
      • externalName:这种Service类型允许你将Service映射到集群外部的名称。当Pod需要访问该Service时,他们将使用该名称来解析出相应的IP地址。

service的创建

ClusterIP的创建(默认创建出来的Service就是ClusterIP)

    1. 创建一个Pod服务

    1. 查看Pod状态

    1. 查看创建Pod详细信息

    1. 访问提供的IP地址与yaml文件中提供的端口

  1. 【使用命令的方式创建Service】为创建的复制集的Pod服务创建出来一个Service(默认的Service就是ClusterIP)

    1. 【使用yaml文件的方式创建Service】

      1. 查看创建的Service

      1. 查看Service详细信息

      1. 查看Service为Pod提供的IP+端口

    1. 查看创建的Service

    1. 此时若使用宿主机的浏览器访问创建出来的ClusterIP是无法访问到的,因为创建出来的ClusterIP是仅供k8s内部程序之间访问时才可以使用的,属于一个内部网络,外部网络是无法与其通信的
    2. 删除Service

  1. NodePort的创建
    1. 创建类型为NodePort的Pod服务

    1. 查看创建的详细信息

    1. 在程序内部进行访问测试

    1. 在浏览器访问测试

    1. 删除Service

  1. LoadBalancer的创建
    1. 创建LoadBalancer

    1. 查看Service信息

    1. 分别进行内部测试和浏览器访问
    2. 删除LoadBalancer

  1. externalName的创建
    1. 先创建两个命名空间

    1. 分别针对两个命名空间创建后端节点(Pod)

    1. 查看创建的后端节点Pod的信息(要指定命名空间)

    1. 查看详细信息

    1. 可以登录到创建的后端Pod当中

    1. 分别为两个命名空间创建不同的无头服务(headless)

    1. 查看两个命名空间下的服务

    1. 登录到Pod当中,使用ping命令测试Pod与其他服务的连通性

    1. 创建externalname

    1. 无头服务创建出来之后,对于其他外部的 pod 来讲,该 pod 对应的名字就确定了下来,其固定的格式是:无头服务名,命名空间,svc.cluster.local
    2. 登录到Pod服务中,验证Pod间的通信

相关文章:

  • LeetCode 149. 直线上最多的点数
  • LaTeX 编辑器-TeXstudio
  • 【计算机网络最全知识点问答】第二章 物理层
  • gitlab-runner集成CI/CD完整项目部署
  • 凤凰模拟器V6中无人机如何设置“有头模式”
  • 科研绘图系列:R语言多个AUC曲线图(multiple AUC curves)
  • Linux终端简介
  • WordPress LearnPress插件 SQL注入复现(CVE-2024-8522)
  • 网络编程,端口号,网络字节序,udp
  • 如何创建网络白名单
  • [数据结构]无头单向非循环链表的实现与应用
  • sql执行流程经典案例分析
  • pdf.js滚动翻页的例子
  • Dubbo入门案例
  • 本地搭建OnlyOffice在线文档编辑器结合内网穿透实现远程协作
  • [LeetCode] Wiggle Sort
  • 「译」Node.js Streams 基础
  • Angular6错误 Service: No provider for Renderer2
  • C语言笔记(第一章:C语言编程)
  • Java多态
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Meteor的表单提交:Form
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • Vue全家桶实现一个Web App
  • 程序员该如何有效的找工作?
  • 从伪并行的 Python 多线程说起
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 机器学习 vs. 深度学习
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 优化 Vue 项目编译文件大小
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • #define用法
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (2024,Flag-DiT,文本引导的多模态生成,SR,统一的标记化,RoPE、RMSNorm 和流匹配)Lumina-T2X
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (libusb) usb口自动刷新
  • (二十四)Flask之flask-session组件
  • (二刷)代码随想录第16天|104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • .bashrc在哪里,alias妙用
  • .NET 4.0中的泛型协变和反变
  • .net core 控制台应用程序读取配置文件app.config
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .net 使用ajax控件后如何调用前端脚本
  • .NET 中 GetProcess 相关方法的性能
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...
  • .NET8 动态添加定时任务(CRON Expression, Whatever)
  • .w文件怎么转成html文件,使用pandoc进行Word与Markdown文件转化
  • /bin/bash^M: bad interpreter: No such file ordirectory