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

K8S篇之K8S详解

一、K8S简介

k8s全称kubernetes,是为容器服务而生的一个可移植容器的编排管理工具。k8s目前已经主导了云业务流程,推动了微服务架构等热门技术的普及和落地。
k8s是自动化容器操作的开源平台。这些容器操作包括:部署、调度和节点集群间扩展。
具体功能:
1、自动化容器部署和复制
2、实时弹性收缩容器规模
3、容器编排成组,并提供容器间的负载均衡
调度:容器在哪个机器上运行。

二、k8s组成

1、kubectl:客户端命令行工具,作为整个系统的操作入口。
2、kube-apiserver:以REST API 服务形式提供接口,作为整个系统的控制入口。
3、kube-controller-manager:执行整个系统的后台任务,包括节点状况状态、Pod个数、Pods和Service的关联等
4、kube-scheduler:负责节点资源管理,接受来自kube-apiserver创建Pods任务,并分配到某个节点。
5、etcd:负责节点间的服务发现和配置共享。
6、kube-proxy:运行在每个计算节点上,负责Pod网络代理。定时从etcd获取到service信息来做相应的策略。
7、kubelet:运行在每个计算节点上,作为agent,接收分配该节点的Pods任务及管理容器,周期性获取容器状态,反馈给kube-apiserver。
8、DNS:一个可选的DNS服务,用于为每个Service对象创建DNS记录,这样所有的Pod就可以通过DNS访问服务了。

三、两地三中心

两地三中心包括本地生产中心、本地灾备中心、异地灾备中心
两地三中心要解决的一个重要问题就是数据一致性问题。K8s使用etcd组件作为一个高可用、强一致性的服务发现存储仓库。用于配置共享和服务发现。
它作为一个受到Zookeeper和doozer启发而催生的项目。除了拥有他们的功能之外,还拥有以下4个特点:
1、简单:基于http+json的api让你用curl命令就可以轻松使用。
2、安全:可选SSL客户认证机制。
3、快速:每个实例每秒支持一千次写操作。
4、可信:使用Raft算法充分实现了分布式。

四、四层服务发现

k8s提供了两种方式进行服务发现:
环境变量:当创建一个Pod的时候,kubelet会在该Pod中注入集群内所有的Service的相关环境变量、要注意的是,要想一个Pod中注入某个Service的环境变量,则必须Service先要比该Pod创建。这一点,几乎使得这种方法进行服务发现不可用。
比如,一个ServiceName为redis-master的Service,对应的ClusterIP:Port为10.0.0.11:6379,则对应的环境变量为:
在这里插入图片描述
DNS:可以通过cluster add-on的方式轻松的创建KubeDNS来对集群内的Service进行服务发现。
以上两种方式,一个是基于tcp,众所周知,DNS是基于UDP的,它们都建立在四层协议之上。

五、五种Pod共享资源

Pod是K8s最基本的操作单元,包含一个或多个紧密相关的容器,一个POD可以被一个容器化的环境看作应用层的“逻辑宿主机”;一个POD中的多个容器应用通常是紧密耦合的,Pod在Node上被创建、启动或者销毁;每个Pod里运行着一个特殊的被称之为Volume挂载卷,因此他们之间通信和数据交换更为高效,在设计时我们可以利用这一特性将一组密切相关的服务放入同一个Pod中。
在这里插入图片描述
同一个Pod里的容器之间仅需通过localhost就能互相通信。
一个Pod里的应用容器共享五种资源:
PID命名空间:Pod中的不同应用程序可以看到其他应用程序的进程ID。
网络命名空间:Pod中的多个容器能够访问同一个IP和端口范围。
IPC命名空间:Pod中的多个容器能够使用SystemV IPC或POSIX消息队列进行通信。
UTS命名空间:Pod中的多个容器共享一个主机名。
Volumes(共享存储卷):Pod中的各个容器可以访问在Pod级别定义的Volumes。
Pod的生命周期通过Replication Controller来管理;通过模板进行定义,然后分配到一个Node上运行,在Pod所包含容器运行结束后,Pod结束。
Kubernetes为Pod设计了一套独特的网络配置,包括:为每个Pod分配一个IP地址,使用Pod名作为容器间通信的主机名等。

六、六个CNI常用插件

CNI(Container Network Interface)容器网络接口,是Linux容器网络配置的一组标准和库,用户需要根据这些标准和库来开发自己的容器网络插件。CNI只专注解决容器连接和容器销毁时的资源释放,提供一套框架,所以CNI可以支持大量不通的网络模式,并且容器实现。
下图表示六个CNI常用插件:
在这里插入图片描述

七、七层负载均衡

提负载均衡就不得不先提服务器之间的通信
IDC(Internet Data Center),也可称数据中心、机房,用来放置服务器。IDC网络是服务器间通信的桥梁。
在这里插入图片描述

具体作用:
路由器、交换机、MGW/NAT都是网络设备,按照性能、内外网划分不通的角色。
内网接入交换机:也称为TOR(top of rack),是服务器接入网络的设备。每台内网接入交换机下联40-48台服务器,使用一个掩码/24的网段作为服务器内网网段。
内网核心交换机:负责IDC内各内网接入交换机的流量转发及跨IDC流量转发。
MGW/NAT:MGW即LVS用来做负载均衡,NAT用于内网设置访问外网时做地址转换。
外网核心路由器:通过静态互联运营商或BGP互联美团统一外网平台。

先说说各层负载均衡:
二层负载均衡:基于MAC地址的二层负载均衡。
三层负载均衡:基于IP地址的负载均衡。
四层负载均衡:基于IP+端口的负载均衡。
七层负载均衡:基于URL等应用层信息的负载均衡。
在这里插入图片描述
上面四层服务发现讲的主要是k8s原生的kube-proxy方式。
K8s关于服务的暴露方式主要是通过NodePort方式,通过绑定minion主机的某个端口,然后进行pod的请求转发和负载均衡。

  • Service可能有很多个,如果每个都绑定一个node主机端口的话,主机需要开放外围的端口进行服务调用,管理混乱。
  • 无法应用很多公司要求的防火墙规则。
    理想的方式是通过一个外部的负载均衡器,绑定固定的端口,比如80,然后根据域名或者服务名向后面的Service ip转发,Nginx很好的解决了这个需求,Nginx很好的解决了这个需求,但问题是如果有新的服务加入,如何去修改nginx的配置,并且加载这些配置呢?
    Kubernetes给出的解决方案是Ingress。这是一个基于7层的方案。

八、九个网络模型原则

K8s网络模型要符合4个基础原则,3个网络要求原则,1个架构原则,1个IP原则。
每个Pod都拥有一个独立的IP地址,而且假定所有Pod都在一个可以直接连通的、扁平的网络空间中,不管是否运行在同一Node上都可以通过Pod的IP来访问。
K8s中的Pod的IP是最小粒度IP。同一个Pod内所有的容器共享一个网络堆栈,该模型成为IP-per-Pod模型。

  • Pod由docker0实际分配的IP
  • Pod内部看到IP地址和端口与外部保持一致
  • 同一个Pod内的不同容器共享网络,可以通过localhost来访问对方的端口,类似同一个VM内不同的进程。
    IP-per-Pod模型从端口分配、域名解析、服务发现、负载均衡、应用配置等角度看,Pod可以看作是一台独立的VM或物理机。
  • 所有容器都可以不同NAT的方式与别的容器通信
  • 所有节点都可以在不同NAT方式下同所有容器通信,反之亦然。
  • 容器的地址和别人看到的地址是同一个地址

要符合下面的架构:
在这里插入图片描述
由上图架构引申出来IP概念从集群外部到集群内部
在这里插入图片描述

相关文章:

K8S篇之K8S详解

一、K8S简介 k8s全称kubernetes,是为容器服务而生的一个可移植容器的编排管理工具。k8s目前已经主导了云业务流程,推动了微服务架构等热门技术的普及和落地。 k8s是自动化容器操作的开源平台。这些容器操作包括:部署、调度和节点集群间扩展。…...

进博会再现上亿大单 EZZ携手HIC海橙嗨选签署2024年度合作备忘录

正在举行的第六届中国国际进口博览会上,再现上亿大单。11月6日,在澳大利亚新南威尔士州政府代表的见证下,澳交所基因组龙头上市公司EZZ生命科学和中国跨境社交电商龙头HIC海橙嗨选签署2024合作备忘录,在未来的一年,EZZ…...

深度学习基于python+TensorFlow+Django的花朵识别系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 花朵识别系统,基于Python实现,深度学习卷积神经网络,通过TensorFlow搭建卷积神经…...

Azure 机器学习 - 机器学习中的企业安全和治理

目录 限制对资源和操作的访问网络安全性和隔离数据加密数据渗透防护漏洞扫描审核和管理合规性 在本文中,你将了解可用于 Azure 机器学习的安全和治理功能。 如果管理员、DevOps 和 MLOps 想要创建符合公司策略的安全配置,那么这些功能对其十分有用。 通过…...

Unity - 各向异性 - 丝绸材质

文章目录 目的环境主观美术效果的[假]丝绸基于物理的方式ProjectPBR filament web captureReferences 目的 拾遗,备份 环境 Unity : 2020.3.37f1 Pipeline : Builtin Rendering Pipeline 主观美术效果的[假]丝绸 非常简单 : half specualr pow(1 - NdotV, _Edg…...

MySQL中UUID主键的优化

UUID(Universally Unique IDentifier 通用唯一标识符),是一种常用的唯一标识符,在MySQL中,可以利用函数uuid()来生产UUID。因为UUID可以唯一标识记录,因此有些场景可能会用来作为表的主键,但直接…...

Python实现WOA智能鲸鱼优化算法优化BP神经网络分类模型(BP神经网络分类算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 鲸鱼优化算法 (whale optimization algorithm,WOA)是 2016 年由澳大利亚格里菲斯大学的Mirjalili 等提…...

Rust语言代码示例

安装Rust语言,然后创建一个新的Rust项目。接下来,你需要安装一个名为"requests"的Rust包,这个包可以帮助你发送请求。然后,你需要安装一个名为"rust-crawler"的Rust包,这个包可以帮助你编写爬虫程…...

【SpringBoot3+Vue3】一【基础篇】

目录 一、Spring Boot概述 1、Spring Boot 特性 1.1 起步依赖 1.2 自动配置 1.3 其他特性 1.3.1 内嵌的Tomcat、Jetty (无需部署WAR文件) 1.3.2 外部化配置 1.3.3 不需要XML配置(properties/yml) 二、Spring Boot入门 1、一个入门程序需求 2、步骤 2.1 创建Maven工…...

麒麟信安登录央视,深度展现为中国信息安全铸“魂”之路

麒麟信安登录央视,深度展现为中国信息安全铸“魂”之路 近日,麒麟信安登录央视频道,《麒麟信安——为中国信息安全铸“魂”》在CCTV-4中文国际频道、CCTV-7国防军事频道、CCTV-10 科教频道、CCTV-12社会与法频道、CCTV-17农业农村频道&#x…...

Flutter的专属Skia引擎解析+用法原理

Skia是一款跨平台的2D图形库,是Google公司开发的,可以用于开发各种应用程序,如浏览器、游戏、移动应用程序等。Skia引擎的主要特点是速度快、可移植性强、占用的内存少、稳定性佳,适用于多种硬件平台。 Skia的目标是提供快速、高…...

python poetry的教程

Poetry Python世界中,Poetry是一个近年来备受瞩目的工具,它为开发者提供了一个灵活且强大的依赖管理解决方案。Poetry可以帮助开发者管理项目的依赖关系,同时提供了一系列的工具和功能,使开发者能够更轻松地创建和管理复杂的项目。…...

jq里的ajax超详细参数讲解

目录 1、url:要发送请求的URL地址。 2、type:请求的类型,可选参数,包括GET、POST、PUT、DELETE等,默认为GET。 3、data:要发送到服务器的数据,可以是一个字符串、数组或对象。默认为null。 4…...

郑州大学2020级信息安全专业——保研小结

最终上岸 夏令营: 夏令营开始的时间一般比较早,在期末考试之前就已经开始了,需要提前联系导师,有的学校是弱com,导师愿意要你入营的概率和优营的概率就会比较大,因此要提前联系导师,复习好项目…...

【系统架构设计】架构核心知识: 3.6 负载均衡和Session

目录 一 负载均衡 1 应用层负载均衡 2 传输层负载均衡 二 Session 1 Session共享机制...

python pip安装特定包,网络慢的问题

文件requirements.txt httpx0.24.0 Pillow9.5.0 playwright1.33.0 tenacity8.2.2 tornado6.3.2 PyExecJS1.5.1 opencv-python4.7.0.72 tortoise-orm[asyncmy]0.19.3 aerich0.7.2 numpy~1.24.4 redis~4.6.0 Pydantic1.7将文件放入任意一个目录下 cd 到该目录下执行 while read…...

CMT2300A超低功耗127-1020MHz Sub-1GHz全频段SUB-1G 射频收发芯片

CMT2300A超低功耗127-1020MHz Sub-1GHz全频段SUB-1G 射频收发芯片 Sub-1GHz,是指小于1GHz频率的统称。Sub-1GHz无线电频段应用的主要特点:(1)频率较低波长较长,传输距离远,穿透性强;&#xff0…...

设计模式之工厂模式 ( Factory Pattern )(1)

其他设计模式也会后续更新… 设计模式其实需要有一定开发经验才好理解,对代码有一定的设计要求,工作中融入才是最好的 工厂模式 ( Factory Pattern ) 工厂模式(Factory Pattern)提供了一种创建对象的最佳方式 工厂模式在创建对…...

OpenCV入门11:轮廓提取和形状识别

轮廓分析主要用于轮廓提取和形状识别等任务。在OpenCV中,轮廓提取和形状识别是图像处理和计算机视觉中常见的任务。下面是关于这两个知识点的一些基本内容: 轮廓提取: 轮廓提取是指从图像中提取出物体轮廓的过程。在OpenCV中,可…...

竞赛选题 深度学习疲劳检测 驾驶行为检测 - python opencv cnn

文章目录 0 前言1 课题背景2 相关技术2.1 Dlib人脸识别库2.2 疲劳检测算法2.3 YOLOV5算法 3 效果展示3.1 眨眼3.2 打哈欠3.3 使用手机检测3.4 抽烟检测3.5 喝水检测 4 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习加…...

RWKV7-1.5B-g1a开源大模型入门指南:低显存(3.8GB)轻量文本生成实操

RWKV7-1.5B-g1a开源大模型入门指南:低显存(3.8GB)轻量文本生成实操 1. 模型简介 rwkv7-1.5B-g1a 是一款基于RWKV-7架构的开源文本生成模型,专为轻量级应用场景设计。这个1.5B参数的模型在多语言文本生成任务上表现出色&#xff…...

SecGPT-14B模型微调:OpenClaw自动化准备标注数据与训练脚本

SecGPT-14B模型微调:OpenClaw自动化准备标注数据与训练脚本 1. 为什么需要自动化微调流程 当我第一次尝试微调SecGPT-14B模型时,最让我头疼的不是模型本身,而是那些繁琐的前期准备工作。作为安全领域的从业者,我深知专业数据的价…...

nli-distilroberta-base生产环境:低延迟NLI服务在搜索Query改写中应用

nli-distilroberta-base生产环境:低延迟NLI服务在搜索Query改写中应用 1. 项目概述 在搜索引擎优化和智能问答系统中,Query改写是一个关键环节。nli-distilroberta-base是一个基于DistilRoBERTa模型的轻量级自然语言推理(NLI)服务,专门为生…...

学术党福音:OpenClaw+Qwen3-32B自动生成LaTeX论文图表

学术党福音:OpenClawQwen3-32B自动生成LaTeX论文图表 1. 为什么需要自动化论文图表生成 作为长期与LaTeX搏斗的科研狗,我经历过无数次这样的深夜:在Python里调完matplotlib参数,手动导出PNG,再在LaTeX里反复调整\inc…...

SAP ABAP老系统也能玩转REST API?手把手教你用SICF和IF_HTTP_EXTENSION打通接口

SAP ABAP老系统也能玩转REST API?手把手教你用SICF和IF_HTTP_EXTENSION打通接口 在数字化转型浪潮中,许多企业仍运行着历史悠久的SAP ABAP系统。这些系统承载着核心业务逻辑,却常因技术栈陈旧而难以与现代应用生态对接。本文将揭示如何利用AB…...

终极指南:如何为Conform.nvim贡献代码并成为开源英雄

终极指南:如何为Conform.nvim贡献代码并成为开源英雄 【免费下载链接】conform.nvim Lightweight yet powerful formatter plugin for Neovim 项目地址: https://gitcode.com/gh_mirrors/co/conform.nvim Conform.nvim是一款轻量级但功能强大的Neovim格式化插…...

网站 SEO 推广代运营需要多长时间才能见效_什么是网站 SEO 推广代运营

什么是网站 SEO 推广代运营 在当前竞争激烈的互联网市场中,网站 SEO 推广代运营(Search Engine Optimization,SEO)已经成为提升网站流量和品牌知名度的重要手段。SEO 推广代运营是指通过一系列优化策略,提升网站在搜索…...

OpenClaw故障模拟:gemma-3-12b-it在断网环境下的降级处理方案

OpenClaw故障模拟:gemma-3-12b-it在断网环境下的降级处理方案 1. 为什么需要关注断网场景下的容灾设计 上周我在调试一个基于OpenClaw的自动化日报生成系统时,遇到了一个意外情况:网络突然中断导致整个流程卡死。这让我意识到,在…...

计算机毕业设计:Python居民出行规律可视化分析系统 Django框架 可视化 数据分析 PyEcharts 交通 深度学习(建议收藏)✅

博主介绍:✌全网粉丝50W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战8年之久,选择我们就是选择放心、选择安心毕业✌ > 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与…...

C/C++变量初始化实践与内存管理技巧

1. 变量初始化的核心价值与常见误区在C/C开发中,变量初始化是每个程序员每天都要面对的基础操作,但很多人对其理解停留在表面。我曾参与过多个大型嵌入式项目,亲眼见过因为初始化不当导致的系统崩溃案例。比如在某工业控制器项目中&#xff0…...