Kubernetes的endpoint

简介

Kubernetes的endpoint(终结点)是用于将服务绑定到集群中其他组件的网络地址。Endpoint为服务提供了一个稳定的虚拟IP地址,它会负责将流量从Service路由到后端Pod。

下面是使用Kubernetes的endpoint的详细步骤:

  1. 创建一个Service资源定义,该Service将绑定到一组Pod:
apiVersion: v1
kind: Service
metadata:name: my-service
spec:selector:app: backendports:- protocol: TCPport: 8080targetPort: 80

该示例创建了一个名为my-service的Service,它将选择带有"app=backend"标签的Pod,并将流量路由到Pod的80端口。

  1. Kubernetes将在集群中的每个节点上创建一个虚拟IP(ClusterIP),用于表示Service。

  2. 创建一个Endpoint资源定义,将Service绑定到后端Pod的IP地址和端口:

apiVersion: v1
kind: Endpoints
metadata:name: my-service
subsets:- addresses:- ip: 10.0.0.1- ip: 10.0.0.2ports:- port: 80

该示例创建了一个名为my-service的Endpoint,该Endpoint将流量路由到两个IP地址为10.0.0.1和10.0.0.2的Pod的80端口。

  1. Kubernetes会自动将创建的Endpoint与Service进行关联,使得Service可以通过Endpoint来发现后端Pod,并进行负载均衡。

当使用该Service进行通信时,Kubernetes会将流量路由到该Service的虚拟IP地址,然后通过Endpoint将流量转发到后端Pod的实际IP地址和端口。

举个例子,假设我们有一个运行两个Pod的应用程序,并且这些Pod具有"app=backend"的标签。我们创建了一个Service来暴露这两个Pod,并使用Endpoint将它们绑定到Service。现在,我们可以使用Service的虚拟IP地址来与后端Pod进行通信,而不必关心具体的后端Pod IP地址。

请注意,Endpoint是由Kubernetes自动管理的,并且通常不需要直接进行手动操作。它主要用于内部流量路由和服务发现。

注意的地方

Endpoint是可被访问的服务端点,即一个状态为running的pod,它是service的访问的落点,只有service关联的pod才可能成为endpoint。

Endpoint、service和pod的关系:
在这里插入图片描述
Endpoints表示一个Service对应的所有pod副本的访问地址。

Node上的Kube-proxy进程获取每个Service的Endpoints,实现service的负载均衡功能。

在这里插入图片描述

Endpoints Controller

Endpoints Controller就是负责生成和维护所有Endpoints对象的控制器,它负责监听Service和对应的Pod副本的变化。

如果检测到Service被删除,则删除和该Service同名的Endpoints对象。

如果检测到新的Service被创建或者修改则根据该Service信息获得相关的Pod列表,然后创建或者更新Service对应的Endpoints对象。

外部服务与endpoints

手动创建endpoints,添加外部服务的endpoint,可以将外部服务作为kubernetes的service使用。
etcd有3节点部署在外部,为其创建service: etcd-k8s,不指定podSelector:

apiVersion: v1
kind: Service
metadata:name: etcd-k8snamespace: kube-system
spec:type: ClusterIPports:- name: portport: 2379protocol: TCP

创建同名的endpoints资源: etcd-k8s,将etcd节点的ip+port填进去:

apiVersion: v1
kind: Endpoints
metadata:name: etcd-k8snamespace: kube-system
subsets:
- addresses:- ip: 178.104.163.38nodeName: etc-master1- ip: 178.104.163.187nodeName: etc-master2- ip: 178.104.163.243nodeName: etc-master3ports:- name: portport: 2379protocol: TCP

这样,通过serviceName.namespace:port就可以在kubernetes集群内访问外部的etcd服务:

etcd-k8s.kube-system:2379

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

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

相关文章

【ES6】箭头函数和普通函数的区别

它们之间的区别: (1)箭头函数没有自己的this。 (2)不可以当作构造函数,不可以对箭头函数使用new命令,否则抛出错误。 (3)不可以使用arguments对象,该对象在函…

Linux Mint 21.3 计划于 2023 年圣诞节发布

导读Linux Mint 项目近日公布了基于 Ubuntu 的 Linux Mint 发行版下一个重要版本的一些初步细节,以及备受期待的基于 Debian 的 LMDE 6(Linux Mint Debian Edition)版本。 近日,Linux Mint 项目负责人克莱门特-勒菲弗(…

CSS中的position属性有哪些值,并分别描述它们的作用。

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ static⭐ relative⭐ absolute⭐ fixed⭐ sticky⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那…

暴力模拟入门+简单:零件组装、塔子的签到题、塔子哥考试、平均像素值、换座位

暴力模拟入门 P1038 小红书-2022.9.23-零件组装 #include <bits/stdc.h> #include <cstdint> using namespace std;typedef long long LL; const int N 100001; int num[4]; LL d; vector<vector<LL>> v(4, vector<LL>(N));int main() {for(in…

python基础5——正则、数据库操作

文章目录 一、数据库编程1.1 connect()函数1.2 命令参数1.3 常用语句 二、正则表达式2.1 匹配方式2.2 字符匹配2.3 数量匹配2.4 边界匹配2.5 分组匹配2.6 贪婪模式&非贪婪模式2.7 标志位 一、数据库编程 可以使用python脚本对数据库进行操作&#xff0c;比如获取数据库数据…

RequestRespons

文章目录 Request&Respons1 Request和Response的概述2 Request对象2.1 Request继承体系2.2 Request获取请求数据2.2.1 获取请求行数据2.2.2 获取请求头数据2.2.3 获取请求体数据2.2.4 获取请求参数的通用方式 2.3 IDEA快速创建Servlet2.4 请求参数中文乱码问题2.4.1 POST请…

Python标准库-追踪异常,定位问题-traceback

在日常的编程过程中&#xff0c;我们经常会遇到各种错误和异常。而当程序发生异常时&#xff0c;了解如何有效地追踪异常信息并定位问题&#xff0c;是每个开发者必备的技能之一。 Python 提供了一个强大的工具&#xff0c;称为 Traceback&#xff0c;它可以帮助我们跟踪异常的…

Python自动化实战之使用Selenium进行Web自动化详解

概要 为了完成一项重复的任务&#xff0c;你需要在网站上进行大量的点击和操作&#xff0c;每次都要浪费大量的时间和精力。Python的Selenium库就可以自动化完成这些任务。 在本篇文章中&#xff0c;我们将会介绍如何使用Python的Selenium库进行Web自动化&#xff0c;以及如何…

《游戏编程模式》学习笔记(七)状态模式 State Pattern

状态模式的定义 允许对象在当内部状态改变时改变其行为&#xff0c;就好像此对象改变了自己的类一样。 举个例子 在书的示例里要求你写一个人物控制器&#xff0c;实现跳跃功能 直觉上来说&#xff0c;我们代码会这么写&#xff1a; void Heroine::handleInput(Input input…

PHP-MD5注入

0x00 前言 有些零散的知识未曾关注过&#xff0c;偶然捡起反而更加欢喜。 0x01 md5 注入绕过 md5函数有两个参数&#xff0c;第一个参数是要进行md5的值&#xff0c;第二个值默认为false&#xff0c;如果为true则返回16位原始二进制格式的字符串。意思就是会将md5后的结果当…

.NET Core6.0使用NPOI导入导出Excel

一、使用NPOI导出Excel //引入NPOI包 HTML <input type"button" class"layui-btn layui-btn-blue2 layui-btn-sm" id"ExportExcel" onclick"ExportExcel()" value"导出" />JS //导出Excelfunction ExportExcel() {…

Jenkins 监控dist.zip文件内容发生变化 触发自动部署

为Jenkins添加plugin http://xx:xx/manage 创建一个任务 构建触发器 每3分钟扫描一次&#xff0c;发现指定文件build.zip文件的MD5发生变化后 触发任务