07 Kubernetes 网络与服务管理
课件
Kubernetes Service是一个抽象层,用于定义一组Pod的访问方式和访问策略,其作用是将一组Pod封装成一个服务,提供一个稳定的虚拟IP地址和端口号,以便于其他应用程序或服务进行访问。
以下是Kubernetes Service YAML配置文件的一些重要字段及其解释:
apiVersion: v1
kind: Service
metadata:name: my-servicenamespace: my-namespace
spec:selector:app: my-appports:- name: httpport: 80targetPort: 8080type: ClusterIP
apiVersion
: 指定使用的Kubernetes API版本。kind
: 指定对象类型,这里是Service。metadata
: 指定Service的元数据,包括名称、命名空间等信息。selector
: 指定Service所关联的Pod的标签选择器,用于将Pod与Service关联起来。ports
: 指定Service所监听的端口,包括端口名称、端口号和目标端口号。其中,端口名称是可选的,目标端口号是Pod中实际监听的端口号。type
: 指定Service的类型,包括ClusterIP、NodePort、LoadBalancer和ExternalName等。ClusterIP是默认类型,用于将Service暴露到集群内部。NodePort将Service暴露到每个Node的IP地址和端口上。LoadBalancer用于将Service暴露到外部负载均衡器上。ExternalName用于将Service与外部服务关联起来。
除了上述字段外,还可以配置一些高级选项,例如:
apiVersion: v1
kind: Service
metadata:name: my-service
spec:selector:app: my-appports:- name: httpport: 80targetPort: 8080type: ClusterIPsessionAffinity: ClientIPexternalTrafficPolicy: Local
sessionAffinity
: 指定会话亲和性类型,包括None和ClientIP。ClientIP将请求发送到相同的Pod,以保持会话一致性。externalTrafficPolicy
: 指定外部流量策略,包括Cluster和Local。Cluster将流量分配给所有节点,Local将流量分配给与请求最近的节点。
Kubernetes Endpoints是一种资源对象,用于将Service与其实现的Pod的IP地址和端口号匹配。Endpoints资源通常由Kubernetes API服务器自动创建和更新,以确保Service可以正确地路由到其后端Pod。
Endpoints资源的YAML定义如下:
apiVersion: v1
kind: Endpoints
metadata:name: my-service
subsets:- addresses:- ip: 10.0.0.1- ip: 10.0.0.2ports:- name: httpport: 80protocol: TCP
其中:
- apiVersion:指定Kubernetes API版本。
- kind:指定资源类型,这里是Endpoints。
- metadata:指定资源的元数据,包括名称等。
- subsets:指定一组后端Pod的IP地址和端口。
在subsets中,addresses字段列出了后端Pod的IP地址,ports字段列出了后端Pod的端口号和协议。在上面的示例中,我们定义了一个名为my-service的Endpoints资源,它包含了两个IP地址(10.0.0.1和10.0.0.2)和一个端口号(80)。
这个Endpoints资源的作用是将名为my-service的Service路由到这两个IP地址和端口号所代表的Pod上。如果有更多的Pod加入了这个Service,Kubernetes API服务器会自动更新这个Endpoints资源。
无头服务(Headless Service)是 Kubernetes 中的一种特殊类型的服务。与普通的服务不同,无头服务并不会为 Pod 提供一个稳定的访问 IP,它的 Cluster IP 为 None。这意味着,无头服务并不会进行负载均衡,而是直接将请求转发给后端 Pod,这些 Pod 的 IP 地址将会被暴露出来。
无头服务通常用于需要访问单个 Pod 的场景,例如 StatefulSet 中的每个 Pod 都具有唯一的标识符和状态,需要直接对每个 Pod 进行访问。无头服务可以将所有后端 Pod 的 IP 地址公开出来,以便直接访问每个 Pod。
在创建无头服务时,需要将 spec.clusterIP 设置为 None,并且需要设置 spec.selector 以选择后端 Pod。这样就可以创建一个无头服务了。
无头服务(Headless Service)的好处有以下几点:
-
直接访问后端 Pod:无头服务不会对请求进行负载均衡,而是直接将请求转发给后端 Pod,这样可以直接访问每个 Pod。
-
每个 Pod 有唯一的标识符和状态:在某些情况下,每个 Pod 都具有唯一的标识符和状态,需要直接对每个 Pod 进行访问。无头服务可以将所有后端 Pod 的 IP 地址公开出来,以便直接访问每个 Pod。
-
避免网络代理:在某些情况下,需要直接访问后端 Pod,而不是通过 Service 进行代理。无头服务可以避免网络代理,直接访问后端 Pod。
-
避免 Service IP 变化:普通的服务会为 Pod 提供一个稳定的访问 IP,但是 Service IP 可能会发生变化,这可能会导致一些问题。无头服务的 Cluster IP 为 None,避免了 Service IP 变化的问题。
综上所述,无头服务可以直接访问后端 Pod,避免了网络代理和 Service IP 变化的问题,适用于一些需要直接访问每个 Pod 的场景。
$ nslookup example.com
$ dig example.com +short
dig example.com +short
是一个在命令行中使用 dig
工具的简单命令。它的作用是查询 example.com
域名的 IP 地址,并以简短的格式输出结果。
具体来说,命令中的参数含义如下:
dig
:命令名,用于查询 DNS 信息。example.com
:要查询的域名。+short
:输出简短格式的结果,只显示 IP 地址,不包含其他信息。
$ dig @localhost -t AXFR example.com
该命令表示在本地主机上使用 DNS 协议的 AXFR(Zone Transfer)方式获取 example.com 域名的所有 DNS 记录。
- @localhost:指定 DNS 服务器为本地主机。
- -t AXFR:指定使用 AXFR 方式进行 DNS 记录的传输。
- example.com:指定要获取 DNS 记录的域名。
是的,Cilium Endpoints 和 Kubernetes Endpoints 之间存在关系。
Kubernetes Endpoints 是 Kubernetes 中的一种资源,用于表示服务的后端。它包含了一组 IP 地址和端口号,代表了服务的所有可用实例。当一个 Pod 加入或离开一个服务时,Kubernetes 会自动更新相应的 Endpoints。
Cilium Endpoints 是 Cilium 的一个概念,它是一个具有特定标识符的网络终端,代表了一个容器或一个 Pod。Cilium 使用 Endpoints 来实现网络安全和服务发现等功能,通过监控 Kubernetes Endpoints 的变化来更新 Cilium Endpoints。
因此,Cilium Endpoints 和 Kubernetes Endpoints 是密切相关的,它们共同组成了 Kubernetes 集群中的网络拓扑,并共同支持了 Kubernetes 中的服务发现和网络安全功能。
Kubernetes Ingress工作在应用层(Layer 7)协议,因为它是一个HTTP(S)负载均衡器。Ingress提供了一种将外部HTTP(S)流量路由到Kubernetes集群内部的机制,通过将请求路由到不同的服务和端点,从而实现负载均衡和流量管理。Ingress控制器使用HTTP请求中的主机名和路径来路由请求到不同的服务,可以根据需要添加SSL/TLS加密和身份验证,提供更高级别的访问控制和安全性。因此,Ingress是在应用层(Layer 7)上工作的,提供了更高级别的网络功能和控制。
Ingress是Kubernetes中的一种资源对象,它定义了如何将外部流量路由到Kubernetes集群中的服务。Ingress YAML配置文件通常包含以下几个部分:
-
metadata:包含Ingress对象的名称、命名空间、标签等元数据信息。
-
spec:定义了Ingress的规则和配置。
-
rules:定义了Ingress的路由规则,包含了host、http、paths等配置。
-
tls:定义了Ingress的TLS配置,可以配置证书、私钥等信息。
-
backend:定义了Ingress的默认后端服务,当没有匹配到任何规则时,请求将被路由到该后端服务。
-
-
status:包含了Ingress对象的当前状态信息。
一个完整的Ingress YAML配置示例:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: example-ingressnamespace: defaultannotations:nginx.ingress.kubernetes.io/rewrite-target: /
spec:rules:- host: example.comhttp:paths:- path: /app1pathType: Prefixbackend:service:name: app1-serviceport:name: http- path: /app2pathType: Prefixbackend:service:name: app2-serviceport:name: httptls:- hosts:- example.comsecretName: example-tls
上述配置文件定义了一个名为example-ingress的Ingress对象,它包含了两个路由规则,每个规则都定义了一个host和多个路径。当请求的host和路径匹配到规则时,请求将被路由到相应的后端服务。此外,配置文件还定义了TLS配置,使用了名为example-tls的证书。
在Ingress中,host、http和paths是三个不同的配置块,它们的作用如下:
-
host:定义了Ingress的域名或IP地址,用于将请求路由到相应的服务。
-
http:定义了Ingress的HTTP配置,包括了路由规则和TLS配置等。
-
paths:定义了Ingress的路径规则,用于将请求路由到相应的服务。
具体而言,host配置用于指定Ingress的域名或IP地址,可以将不同的域名或IP地址映射到不同的服务上。例如,可以将example.com映射到一个服务,将api.example.com映射到另一个服务。
http配置用于定义Ingress的HTTP配置,包括了路由规则和TLS配置等。在http配置中,可以定义多个路由规则,每个路由规则可以指定一个或多个路径。当请求匹配到某个路由规则时,Ingress会将请求路由到相应的服务上。
paths配置用于定义Ingress的路径规则,用于将请求路由到相应的服务。在paths配置中,可以定义多个路径规则,每个路径规则可以指定一个路径和相应的服务。当请求的路径匹配到某个路径规则时,Ingress会将请求路由到相应的服务上。
总的来说,host用于指定Ingress的域名或IP地址,http用于定义Ingress的HTTP配置,包括了路由规则和TLS配置等,而paths用于定义Ingress的路径规则,用于将请求路由到相应的服务。
自测题
Kubernetes Service 对象的 selector 字段是必须指定的,它定义了 Service 所要选择的 Pod 的标签。如果没有指定 selector 字段,Service 就无法确定它所要代理的 Pod,因此无法工作。在创建 Service 对象时,必须指定 selector 字段,否则会出现错误。
相关文章:
07 Kubernetes 网络与服务管理
课件 Kubernetes Service是一个抽象层,用于定义一组Pod的访问方式和访问策略,其作用是将一组Pod封装成一个服务,提供一个稳定的虚拟IP地址和端口号,以便于其他应用程序或服务进行访问。 以下是Kubernetes Service YAML配置文件的…...
并发编程之Atomic原子操作类
基本类型:AtomicInteger、AtomicBoolean、AtomicLong 引用类型:AtomicReference、AtomicMarkableReference、AtomicStampedReference 数组类型:AtomicIntegerArray、AtomicLongArray、AtomicReferenceArray 对象属性原子修改器:…...
管家婆辉煌Ⅱ 13.32版安装方法
因管家婆辉煌版已经长期不更新,现已经出现蓝屏的问题,故此新开此贴,慢慢更新安装方法。 首先管家婆下载地址:http://www.grasp.com.cn/download.aspx?id116 先安装sql server 2008 下载后,运行安装,请注…...
常见的接口优化技巧思路
一、背景 针对老项目,去年做了许多降本增效的事情,其中发现最多的就是接口耗时过长的问题,就集中搞了一次接口性能优化。本文将给小伙伴们分享一下接口优化的通用方案。 二、接口优化方案总结 1.批处理 批量思想:批量操作数据…...
【Java EE】-使用Fiddler抓包以及HTTP的报文格式
作者:学Java的冬瓜 博客主页:☀冬瓜的主页🌙 专栏:【JavaEE】 分享: 在满园弥漫的沉静的光芒之前,一个人更容易看到时间,并看到自己的身影。——史铁生《我与地坛》 主要内容:使用FIddler抓包的…...
Java异步编程
Java异步编程 1、什么是java异步编程2、异步编程有什么作用3、异步编程常用于哪些业务4、异步编程的方式5、Async异步调用Async简介 1、什么是java异步编程 Java异步编程是一种处理并发问题的技术,它可以在执行耗时操作的同时,不阻塞主线程,…...
C++类与对象(二)——构造函数与析构函数
文章目录 一.类的默认6个成员函数二.构造函数1.引例2.构造函数的概念及特性 三.析构函数😋析构函数的特性 前言: 上篇文章初步认识了类以及类的相关知识,本篇将继续深入学习类与对象——类的默认6个成员函数: 一.类的默认6个成员函…...
c++标准模板(STL)(std::array)(四)
定义于头文件 <array> template< class T, std::size_t N > struct array;(C11 起) std::array 是封装固定大小数组的容器。 此容器是一个聚合类型,其语义等同于保有一个 C 风格数组 T[N] 作为其唯一非静态数据成员的结构体。不同于 C 风格数…...
vue3计算属性
计算属性 模板中的表达式虽然方便,但也只能用来做简单的操作。如果在模板中写太多逻辑,会让模板变得臃肿,难以维护。推荐使用计算属性来描述依赖响应式状态的复杂逻辑 基础示例 不够好的示例 模板中使用了表达式,不够直观&…...
Java 中的访问修饰符有哪些(九)
Java 中的访问修饰符用于限制类、接口、字段和方法的访问范围,它们分别表示不同的访问控制级别。Java 中共有四种访问修饰符:public、protected、default 和 private。 public public 是最开放的访问修饰符,用于指定公共访问级别。被 publi…...
HR员工管理的三重境界:管事、管人、管心
在一个公司里,员工来来往往是常态,虽说我们不能替他们决定,但是一定是与公司的管理者有一定的关系。马云曾经说过:“一个员工离职,不外乎两种原因,一是钱没给到位;二是心里委屈了”。一句话就是…...
延迟队列与SpringBoot实战
延迟队列与SpringBoot实战 概念 延时队列,队列内部是有序的,最重要的特性就体现在它的延时属性上,延时队列中的元素是希望在指定时间到了以后或之前取出和处理,简单来说,延时队列就是用来存放需要在指定时间被处理的元素的队列 …...
【算法】九键输入法
题目: 输入数字字符串, 输出这串字符对应的九键输入法有可能出现的所有情况 算法: 定义了一个全局变量 g_numStr,其中存储了每个数字对应的字母。定义了一个递归函数 str_combine,用于将每个数字对应的字母进行组合。str_combin…...
jvm之类加载器
写在前面 当我们通过javac命令将java源代码编译为Java字节码后,必须通过类加载器将其加载到jvm中才能运行,所以类加载器是jvm中非常重要的一个组成部分,本文我们就一起来看下吧! 1:类的生命周期 类的生命周期如下图…...
Chapter4:频率响应法(上)
第四章:频率响应法 Exercise4.1 已知微分网络和积分网络电路图如下图所示,求网络的频率特性。 解: 【图 ( a ) ({\rm a}) (a)微分网络】 由微分网络电路图可得:...
【6. 激光雷达接入ROS】
欢迎大家阅读2345VOR的博客【6. 激光雷达接入ROS】🥳🥳🥳 2345VOR鹏鹏主页: 已获得CSDN《嵌入式领域优质创作者》称号👻👻👻,座右铭:脚踏实地,仰望星空&#…...
Java 基础进阶篇(三)—— 面向对象的三大特征之二:继承
文章目录 一、继承概述二、内存运行原理 ★三、继承的特点四、继承后:成员变量和方法的访问特点五、继承后:方法重写六、继承后:子类构造器的特点七、继承后:子类构造器访问父类有参构造器八、this、super 总结 一、继承概述 Jav…...
[angstromctf 2023] 部分
这个比赛打了个开头就放弃了,最近放弃的比较多,国外的网太慢,国内的题太难。 Crypto ranch 这题直接给出密文这提示 rtkw{cf0bj_czbv_nvcc_y4mv_kf_kip_re0kyvi_uivjj1ex_5vw89s3r44901831} Caesar dressing is so 44 BC... 然后是加密程序…...
死信队列
死信队列 死信的概念 先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer 将消息投递到 broker 或者直接到queue 里了,consumer 从 queue 取出消息…...
基于YOLOv5的目标检测系统详解(附MATLAB GUI版代码)
摘要:本文重点介绍了基于YOLOv5目标检测系统的MATLAB实现,用于智能检测物体种类并记录和保存结果,对各种物体检测结果可视化,提高目标识别的便捷性和准确性。本文详细阐述了目标检测系统的原理,并给出MATLAB的实现代码…...
使用ChatGPT工具阅读文献的实战教程
大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…...
实训笔记1
实训笔记 第一天 1.安装tomcat或者其他大数据开发的路径不含中文及空格 2.和同开发 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FoApp1oX-1683039421826)(C:\Users\18249\AppData\Roaming\Typora\typora-user-images\image-20230422110823748…...
CCD视觉检测设备如何选择光源
CCD视觉检测设备的机器视觉系统对光源的要求很高,光源是决定图像质量的一个重要因素。那么,我们就来看看CCD图像加网设备和机器视觉系统光源的选择点——CCD图像加网设备。 CCD视觉检测设备机器视觉系统光源选择要点: 1. 对比度:…...
基于协同过滤的旅游推荐系统设计与实现(论文+源码)_kaic
1 绪论 1.1 研究背景及意义 1.2 国内外研究现状 1.3 研究目标与意义 1.4 主要研究工作 2 相关理论介绍 2.1HTML与JavaScript 2.2 MySQL数据库 2.3 协同过滤算法简介 3 系统分析与设计 3.1 系统需求分析 3.1.1 功能性需求 3.1.2 安全性需求 3.2 系统总体架构 3.3 功能模块设计 3…...
代码随想录补打卡 746 使用最小花费爬楼梯
代码如下 func minCostClimbingStairs(cost []int) int { dp : make([]int,len(cost)1) //思路:设置一个花费数组dp,dp数组的长度等于之前的cost在加上1(1为楼顶元素) dp[0] 0 dp[1] 0 for i : 2 ; i < len(c…...
有理函数的不定积分习题
前置知识:有理函数的不定积分 习题 计算 ∫ x 3 1 x 4 − 3 x 3 3 x 2 − x d x \int \dfrac{x^31}{x^4-3x^33x^2-x}dx ∫x4−3x33x2−xx31dx 解: \qquad 将被积函数的分母因式分解得 x 4 − 3 x 3 3 x 2 − x x ( x − 1 ) 3 x^4-3x^33x^2-xx…...
PS滤镜插件-Nik Collection介绍
PS滤镜插件-Nik Collection介绍 什么是Nik CollectionNik Collection都包含什么? 什么是Nik Collection Nik Collection是一款PS滤镜插件套装,其包含了八款PS插件,功能涵盖修图、调色、降噪、胶片滤镜等方面。Nik Collection 作为很多摄影师…...
力扣刷题2023-05-04-1——题目:2614. 对角线上的质数
题目: 给你一个下标从 0 开始的二维整数数组 nums 。 返回位于 nums 至少一条 对角线 上的最大 质数 。如果任一对角线上均不存在质数,返回 0 。 注意: 如果某个整数大于 1 ,且不存在除 1 和自身之外的正整数因子,…...
【Java笔试强训 2】
🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥排序子…...
术数基础背诵口诀整理
物象对应 五行方位天干神兽季节气候星宿生成数脏器木东甲乙青龙春风岁八肝火南丙丁朱雀夏热荧惑七心土中戊己?长夏湿镇五脾金西庚辛白虎秋燥太白九肺水北壬癸玄武冬寒辰六肾 口诀:东方甲乙青龙木,南方丙丁朱雀火,戊己勾陈腾蛇土&…...
有哪些图片设计网站有哪些问题/百度推广登录入口登录
目录PLL1和PLL1控制器PLL2和PLL2控制器CSL的使用本文主要介绍TMS320C6455的时钟相关的内容,参考文档为: SPRS276M - TMS320C6455 Fixed-Point Digital Signal ProcessorSPRUE56 - TMS320C645x DSP Software-Programmable Phase-Locked Loop (PLL) Contr…...
江苏最新疫情防控通告/厦门零基础学seo
React Native SDK诸葛io移动统计支持React Native插件,以下为集成方法。1. 环境准备1.1. iOS环境iOS 8.0代码支持iOS8.0的系统pod 1.0iOS系统的集成依赖于cocoaPod工具1.2. Android环境Android SDK 16代码支持Android 161.3. React Native环境react-native 0.50reac…...
如何做网站顶级域名/企业网络营销顾问
0、导读 2016年最新开发语言排行榜中,Python已经跃居第三,仅次于C、JAVA。掌握Python已经成为时下运维圈的共识,更让人期待的是,本次公开课分享的嘉宾自身就长期专注Python、Docker技术,非常值得期待。 1、活动总结 本…...
交易所网站开发实战/精准网络推广
快速搭建springboot项目 说明: 主要利用Intellij中的Spring Initializr工具,快速构建 1.开发环境和工具 WINDOWS IntelliJ IDEA 2018.1.1 JDK 1.8 MAVEN 3.39 2. 构建步骤 1. 打开IntelliJ IDEA , NEW Project 2. 选择Spring Initialzr , choose Initializr Service Url …...
云南网站建设优选平台/长沙seo关键词
1 .责任分配矩阵展示项目资源在各个()中的任务分配? A.工作包 B.项目活动 4 .在虚拟团队环境中,()规划变得日益重要? A.资源 B.沟通 参考答案 A B...
陕西煤化建设集团网站/高端网站建设案例
首先是虚拟光驱安装,传说demotools和WIN 7有点问题,放弃。这里推荐Virtual CloneDrive,完全免费的,下载地址:http://static.slysoft.com/SetupVirtualCloneDrive5425.exe接着安装VS 2008安装过程很顺利,而且…...