7. Kubernetes核心资源之Service服务实战
- **service分类 : **
-
**ClusterIP : **
-
默认类型,自动分配一个【仅集群内部】可以访问的虚拟IP
-
**NodePort : **
-
对外访问应用使用,在ClusterIP基础上为Service在每台机器上绑定一个端口,就可以通过: ip+NodePort来访问该服务
-
**LoadBalancer : **
-
使在NodePort的基础上,借助公有云创建一个外部负载均衡器,并将请求转发到NodePort
-
可以实现集群外部访问服务的另外一种解决方案,不过并不是所有的k8s集群都会支持,大多是在公有云托管集群中会支持该类型
-
**ExternalName : **
-
把集群外部的服务引入到集群内部来,在集群内部直接使用。没有任何类型代理被创建,这只有 Kubernetes 1.7或更高版本的kube-dns才支持。
-
- **service和pod之间是通过 selector.app进行关联的 : **
spec: # 描述selector: # 标签选择器,确定当前service代理控制哪些podapp: xdclass-nginx
- **yml模板文件 : **
apiVersion: v1
kind: Service
metadata:creationTimestamp: nullname: xdclass-svc
spec:ports:- port: 80 # service服务端口protocol: TCPtargetPort: 80 # pod端口,常规和容器内部端口一致selector:app: xdclass-nginx-pod
status:loadBalancer: {}
- **关于K8S中端口的概念区分 : **
- **port **
- 是service端口,即k8s中服务之间的访问端口 ,clusterIP:port 是提供给集群内部客户访问service的入口
- **nodePort **
- 容器所在node节点的端口,通过nodeport类型的service暴露给集群节点,外部可以访问的端口
- **targetPort **
- 是pod的端口 ,从port和nodePort来的流量经过kube-proxy流到后端pod的targetPort上,进入容器。
- **containerPort **
- 是pod内部容器的端口,targetPort映射到containerPort。

- 4种端口作用不一样,port和nodePort都是service的端口
- port暴露给集群内客户访问服务,nodePort暴露给集群外客户访问服务
- 这两个端口到来的数据都需要经过反向代理kube-proxy流入后端pod的targetPod,从而到达pod中的容器
apiVersion: v1
kind: Pod
metadata:name: nginxnamespace: devlabels:app: nginx
spec:containers:- name: nginximage: nginx:1.20imagePullPolicy: IfNotPresentports:- containerPort: 80 #容器端口
---
apiVersion: v1
kind: Service
metadata:name: nginx
spec:type: NodePort # 有配置NodePort,外部可访问k8s中的服务 ,ports:- name: nginxport: 80 # 服务service的访问端口protocol: TCPtargetPort: 80 # pod端口,映射到容器端口nodePort: 30015 # NodePort,通过nodeport类型的service暴露给集群外部访问selector:app: nginx
**操作 : **
# 创建Deployment
kubectl apply -f deploy-nginx-pod.yaml# 查看deployment和pod (service的缩写是svc)
kubectl get deployment,pod,svc -n dev -o wide# 暴露服务 clusterIP 类型
kubectl expose deploy xdclass-deploy --name=svc-nginx1 --type=ClusterIP --port=80 --target-port=80 -n dev# 查看服务(多了个类型是ClusterIP的,通过curl clusterIp+port可以访问)
kubectl get deployment,pod,svc -n dev -o wide# 查看服务详情
kubectl describe svc svc-nginx1 -n dev
- **NodePort : **
# 创建NodePort类型服务 (网络安全组记得开放32451端口)
kubectl expose deploy xdclass-deploy --name=svc-nodeport-nginx1 --type=NodePort --port=80 --target-port=80 -n dev


# 查看服务详情
kubectl describe svc svc-nodeport-nginx1 -n dev

Endpoint(缩写是ep)
- 是k8s中的一个资源对象,存储在etcd中,记录service对应的所有pod的访问地址
- 里面有个Endpoints列表,就是当前service可以负载到的pod服务入口
- service和pod之间的通信是通过endpoint实现的
# 查看endpoint列表
kubectl get ep svc-nodeport-nginx1 -n dev -o wide
- service如何决定分发请求到后端的Pod?

kubernetes提供了两种负载均衡策略
- 默认,kube-proxy的策略,如随机、轮询
- 使用会话保持模式,即同个客户端的请求固定到某个pod,在spec中添加sessionAffinity:ClientIP即可
**操作 : **
#查看全部pod和ip
kubectl get pods -n dev -o wide#修改pod里面容器nginx的默认静态页面,内容为Pod所在的ip
kubectl exec -it xdclass-deploy-64967f6b67-p66wh -n dev /bin/shecho "xdclass.net 5" > /usr/share/nginx/html/index.html# curl访问ip+port 或 浏览器直接访问
相关文章:
7. Kubernetes核心资源之Service服务实战
**service分类 : ** **ClusterIP : ** 默认类型,自动分配一个【仅集群内部】可以访问的虚拟IP **NodePort : ** 对外访问应用使用,在ClusterIP基础上为Service在每台机器上绑定一个端口,就可以通过: ipNodePort来访问该服务 **LoadBalanc…...
《向量数据库指南》——企业采用非结构化数据的场景及其深远影响
引言 在当今数字化转型的浪潮中,企业数据的种类与规模正以前所未有的速度增长,其中非结构化数据作为信息时代的重要组成部分,其价值日益凸显。Lynn提出的关于企业最先采用非结构化数据的观察,引发了我们对这一领域深入探索的兴趣。Charles的见解则为我们揭示了非结构化数据…...
Linux内核编程(十二)热插拔
本文目录 一、知识点1. 热插拔概念2. 热插拔机制3. Netlink机制 二、内核发送uevent事件到用户空间1. kobject发送uevent事件2. udevadm命令查看★示例代码:★优化:完善kset_uevent_ops(热插拔事件结构体) 三、用户空间使用Netlin…...
七夕警示:探索社工库与网络搜索下的个人隐私泄露与保护策略
随着七夕节的脚步日益临近,空气中弥漫着浪漫与温馨的气息。这个充满爱意的节日,我们沉浸在与心爱之人共享甜蜜时光的同时,不应忽视网络安全和个人隐私保护的重要性。在数字化时代,个人信息泄露的风险无处不在,如何在享…...
Redis-哨兵监控(sentinel)
是什么 Docs 吹哨人巡查监控后台master主机是否故障,如果故障了根据投票数自动将某一个从库转换为新主库,继续对外服务 作用:无人值守运维 能干嘛 1.主从监控 监控主从redis的库是否运行正常 2.消息通知 哨兵可以将故障转移的结果发送给客户端 3.…...
RISC-V反汇编调试记录分享
RISC-V反汇编调试记录分享 本文记录一次使用反汇编进行调试分析。 最近在 rtthread 下适配 MilkV Duo 的硬件定时器驱动时遇到了一些问题,demo 运行时报以下错误: Unhandled Exception 2:Illegal Instruction scause:0x0x0000000000000002,stval:0x0x…...
python上下文管理器 with的使用
python上下文管理器 with是从Python一个语法糖,它是一种上下文管理协议,目的在于把我们之前常见一个开发 try,except 和finally 关键字和一些文件开关闭合资源分配释放等问题都简化。 总结起来使用python 提供的with主要的作用是: 实现自动…...
24/8/8算法笔记 决策树构建鸢尾花
决策树是一种由算法自动设计的模型。在机器学习中,构建决策树的过程通常遵循以下步骤: 特征选择:算法会评估每个特征,并选择一个特征作为节点分裂的依据。这个选择基于某种准则,如信息增益(ID3算法…...
数据库扩展新篇章:主流分库分表中间件全解析
摘要: 随着企业数据量的激增,传统的单体数据库架构已经无法满足日益增长的性能需求和数据管理复杂性。分库分表技术作为解决这一问题的有效手段,通过将数据水平或垂直地分散到多个数据库中,提高了系统的扩展性和处理能力。本文将详…...
python看图片猜价格游戏,frame 和PhotoImage的使用
import tkinter.messagebox import tkinter import randomwindow tkinter.Tk()window.geometry(800x400)window.title(猜数字游戏)good_price random.randint(10, 100) input_price random.randint(1, 100)def sumit():global good_priceif entry.get() "" or en…...
未来展望:等保测评在网络安全领域的持续创新与发展
在数字化浪潮席卷全球的今天,网络安全已成为维护国家安全、社会稳定和经济发展的关键基石。作为网络安全保障体系的核心组成部分,等级保护测评(简称“等保测评”)在应对日益复杂多变的网络威胁中发挥着不可替代的作用。展望未来&a…...
构建深度学习驱动的多目标检测系统:YOLO模型及应用
随着计算机视觉技术的飞速发展,多目标检测在各种实际应用中发挥着越来越重要的作用。本文将j简单介绍如何构建一个基于深度学习的多目标检测系统,包括数据准备、模型训练、UI界面开发和部署的完整流程。如有部署的想法,想要(UI界面…...
算法刷题笔记 染色法判定二分图(染色法例题 C++实现)
文章目录 题目描述二分图介绍和基本思路实现代码(C) 题目描述 给定一个n个点m条边的无向图,图中可能存在重边和自环。请你判断这个图是否是二分图。 输入格式 第一行包含两个整数n和m。接下来m行,每行包含两个整数u和v…...
在Ubuntu上安装OpenBLAS和Eigen
安装 openblas 直接使用 apt-get 命令即可安装: sudo apt-get install libopenblas-dev检查是否安装成功,可以用下面的示例代码 example.cpp: #include <stdio.h> #include <stdlib.h> #include "cblas.h"int main(…...
Vue前端面试基础(一)
Vue面试题目详解可以涵盖多个方面,从基础知识到高级特性,再到实际应用和性能优化等。以下是一些常见的Vue面试题目及其详解: 1. Vue双向绑定原理 详解: Vue的双向绑定原理是通过数据劫持结合发布者-订阅者模式实现的。Vue在内部…...
使用Gitlab实现monorepo多项目CICD
CI/CD是什么 CI/CD(Continuous Intergration/Continuous Delpoy),即持续集成/持续部署,或称为持续集成/持续交付,作为一套面向开发和运维团队的解决方案,CI/CD 主要解决集成新代码和向用户频繁交付应用的问…...
设计模式实战:银行账户管理系统的设计与实现
问题描述 设计一个银行账户管理系统,支持不同类型的账户(如储蓄账户、支票账户)进行存取款操作,并能够在账户余额发生变化时通知相关观察者(如用户、银行系统)。系统需要确保账户操作的灵活性和可扩展性。 设计分析 策略模式 策略模式定义了一系列算法,并将每个算法…...
⭕️【论文阅读】《Interactive Class-Agnostic Object Counting》
[2309.05277] Interactive Class-Agnostic Object Counting (arxiv.org) code: cvlab-stonybrook/ICACount: [ICCV23] Official Pytorch Implementation of Interactive Class-Agnostic Object Counting (github.com) 目录 Abstract Abstract 我们提出了一个新…...
高效的编程学习方法和技巧
编程小白如何成为大神?大学新生的最佳入门攻略 编程已成为当代大学生的必备技能,但面对众多编程语言和学习资源,新生们常常感到迷茫。如何选择适合自己的编程语言?如何制定有效的学习计划?如何避免常见的学习陷阱&…...
sublime text插件开发
手工开发了一些ST的py插件,记录过程中遇到的一些问题。 ST3/ST4 begin_edit问题 报错: begin_edit() missing 2 required positional arguments: edit_token and cmdST3时已经不能直接调view.begin_edit方法了,需要通过runCommandTextComm…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...
计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...
【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
