kubernetes培训

news2024/12/27 9:17:11

基本概念

Node

节点可以是物理机或虚拟机,每个节点上都运行着容器运行时环境;

Pod

在这里插入图片描述

Pod是k8s中的最小调度单元,一个Pod可以包含一个或多个容器,同一Pod内的容器共享存储卷和网络空间。容器则是轻量级、可移植的执行单元,包含了应用及其依赖的文件系统;

Namespace

default:默认创建的命名空间;
kube-node-lease:保存有关心跳信息的节点数,每个节点都有自己的租约对象,决定其可用性;
kube-public:包含对外可公开的数据,里边包含可访问的集群信息、验证信息等;
kube-system:k8s组件自身使用的命名空间;

Clusterip


ClusterIP类型的service创建时,k8s通过etcd从可分配的ip池中分配一个全局唯一、不可修改的虚拟ip地址,只能在集群内部访问。所有访问该ip的请求,都会被iptables转发到后端的endpoints中;

Nodeport类型service

通过service可以为一组具有相同功能的容器应用提供一个统一的、不变的入口地址,并且将请求进行负载分发到后端的各个容器应用上。客户端不需要知道每个单独的提供服务的Pod的地址,这样,这些Pod就可以在集群中随时被创建、调度和移除。service从设计上看是一个虚拟概念,逻辑上代理后端的Pod;
通过每个node上暴露的ip和port路由到ClusterIP服务,所以可从外部访问。在具有ClusterIP服务的前提下,同一个服务在每个worker 节点的同一个端口上公开,用户可以在任何:NodePort 地址上访问服务。

Ingress

LoadBalancer类型service只为提供三四层负载均衡,而Ingress只需要一个公网IP就能为许多服务提供访问(七层)。当客户端向Ingress发送Http请求时,Ingress会根据请求的主机名和路径决定请求转发到哪个服务上;
在这里插入图片描述ingress controller:将新加入的ingress转化成nginx的配置文件并使之生效;
ingress服务:nginx配置文件的抽象,每添加一个新的服务只需写一个新的yaml文件即可;

域名

得益于kube-dns插件,通过修改容器的/etc/resolv.conf配置,可以通过域名的方式访问service;
在这里插入图片描述
k8s将service的名称当做域名注册到kube-dns中,pod查询DNS是通过ServiceName.Namespace子域名来查询的。当service的默认namespace为default时,域名可以通过ServiceName成功查询。

常用资源类型

Deployment

Deployment用来声明式地更新应用的实例,支持滚动更新和回滚,一个 Deployment 可以控制一个ReplicaSet;

Service

Service 定义了一种抽象方法来访问一组Pod,供了一个稳定的入口地址;

ReplicaSet

ReplicaSet确保任何时候都有指定数量的Pod副本在运行,用于横向扩展,一个 ReplicaSet 可以控制多个Pod;

Persistent volume

存储卷为Pod提供持久化的数据存储;

ConfigMap和Secret

ConfigMap用于存储非机密的数据、Secret 用于存储敏感信息,如密码和证书;

StatefulSet

StatefulSet为有状态的应用提供了管理机制,保证每个 Pod 都有一个唯一的网络标识和持久化存储;

DaemonSet

DaemonSet 确保所有或部分节点上都运行着一个 Pod 的副本,常用于运行监控或日志代理等应用;

组件及作用

master节点

在这里插入图片描述

API Server

提供了集群管理的Rest API接口,包括认证授权、数据校验以及集群状态变更,是资源配额控制的入口,是整个系统的数据总线;

Controller Manager

作为集群内部的管理控制中心,负责集群内的Node、Pod副本、endpoint、namespace、service account、资源配额的管理;

Scheduler

根据特定的调度算法把Pod调度到指定的worker上,该过程叫做绑定Bind;

Etcd

key-value分布式存储数据库,主要用途是保存集群状态数据、共享配置、服务发现;

worker节点

在这里插入图片描述

kubelet

Master节点在worke节点上的代理,向master汇报node的状态信息,pod全生命周期管理:在pod中创建容器、创建pv、返回pod的运行状态、执行容器健康检查等;

kube-proxy

在worker节点上实现 Pod网络代理,实现Service通信,维护网络规则、四层负载均衡工作;

通信过程

在这里插入图片描述

k8s通过watch的机制进行每个组件的协作。

1、用户使用kubectl create或apply yaml文件创建pod,请求发送到apiseerver,apiserver将yaml中的属性信息(metadata)写入etcd;
2、apiserver触发watch机制准备创建pod,转发给scheduler,使用调度算法选择worker节点,返回绑定的node信息给apiserver写入etcd;
3、apiserver又通过watch机制调用kubelet,按照pod信息触发docker run命令创建容器;
4、pod创建完成之后经由kubelet将pod的信息发送给apiserver,最后写入etcd(kubectl get pods命令调用etcd的信息);

特性

自动伸缩Auto Scaling

水平自动伸缩 (HPA): 根据CPU使用率、内存使用情况或其他自定义度量指标自动调整Pod的数量;
垂直自动伸缩 (VPA): 自动调整Pod的资源请求和限制,以优化资源使用;

滚动更新Rolling Updates

通过控制更新的速度来最小化对用户的影响,并确保在任何时刻都有足够的应用实例可用;

服务网格Service Mesh

Istio提供服务间的通信管理和监控,包括负载均衡、服务发现、加密、故障注入等;

网络策略Network Policies

控制Pod之间的四层网络流量,提高安全性;

资源配额Resource Quotas

限制命名空间内的资源使用,比如Pod数量、CPU和内存用量等,帮助组织管理集群资源分配;

亲和性和反亲和性Affinity and Anti-Affinity)

控制Pod在节点上的调度,确保Pod按照特定规则运行在同一节点上或者不在同一节点上;

Job 和 CronJob

Job确保一个或多个Pod成功完成至少一次其指定的任务、CronJob创建基于时间周期的Job;

常用命令

官方
简版

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

四、LogicFlow 自定义左侧菜单Menu

目录 前文LogicFlow 介绍实现基础界面框架实现左侧菜单组件将左侧菜单引入到demo组件中最后 前文 这篇相对来讲就稍微平凡了一点,只要有前端的一些基础就能够轻松完成上图中左侧的菜单,但是为了能够让前后文章能够连贯起来,所以还是要厚着脸…

一文彻底搞懂ZooKeeper选举机制

原文阅读:【巨人肩膀社区博客分享】一文彻底搞懂ZooKeeper选举机制 1. ZooKeeper 集群 ZooKeeper 是一个高性能分布式的开源协调服务,用于构建分布式应用程序和服务。 一个 ZooKeeper 集群通常由多个 ZooKeeper 服务器组成,这些服务器分布在…

C语言基础(二十三)

在C语言中,修改链表中的数据涉及遍历链表以找到要修改的元素,然后更新该元素的值。链表是一种动态数据结构,它由一系列节点组成,每个节点包含数据部分和指向列表中下一个节点的指针(双向链表,还会有指向前一…

<Rust>egui学习之小部件(四):如何在窗口中添加滑动条部件?

前言 本专栏是关于Rust的GUI库egui的部件讲解及应用实例分析,主要讲解egui的源代码、部件属性、如何应用。 环境配置 系统:windows 平台:visual studio code 语言:rust 库:egui、eframe 概述 本文是本专栏的第四篇博…

Ubuntu 24.04 安装 intel 编译器

目录 1.采用用户界面 GUI 安装英特尔基本工具包 Intel oneAPI Base Toolkit 1.1 下载离线英特尔基本工具包 1.2 安装英特尔基本工具包 1.3 英特尔基本工具包 Intel oneAPI Base Toolkit 环境设置 2.安装英特尔基本工具包 Intel HPC Toolkit 2.1 下载离线英特尔高性能计算…

智能座舱高通8155摄像头方案

高通汽车开发平台 (ADP)基于8155的多媒体硬件框图如下所示:有4个4路CSI摄像头处理通路,2个4路DSI屏幕处理通路,1个DisplayPort。 基于摄像头的详细方案如下:可以处理4路MAX9296解串后信号。 再深入细化基于…

Java10 集合

集合 集合集合接口等级:Collection:单例集合接口,将数据一个一个存储,存储的是值。ArrayList类:泛型集合Linkedlist集合:Vector集合:Stack集合:Vetor的子类 Set接口:存储是无序的&am…

【使用 Python 进行截图的两种方法】

在 Python 中,可以使用 pyautogui 和 Pillow 进行截图 使用 pyautogui 进行截图时,其提供了方便的函数。例如,使用 pyautogui.screenshot() 函数可以获取整个屏幕的截图,该函数返回一个包含屏幕截图的图像对象。如果不想截取整个…

最大噪音值甚至受法规限制,如何基于LBM算法有效控制风扇气动噪音

风扇的气动噪声 在工业设备行业,最大噪音值受法规限制。在很多使用风扇冷却的设备上,风扇噪声通常是这些设备工作噪声的最大贡献量。而在家电民用行业,例如空调、空气净化器、油烟机等,其噪音大小直接关系到用户的体验感受&#x…

从零开始掌握容器技术:Docker的奇妙世界

容器技术在当今的云计算和软件开发领域中扮演着越来越重要的角色。如果你是一名计算机专业的学生或从事IT行业的从业者,可能已经听说过Docker这个词。它在软件开发、部署、运维等环节中大放异彩,但对于刚接触这个概念的朋友来说,可能还是有些…

【乐企】有关乐企能力测试接口对接(详细)

1、申请密钥 2、验证本地服务器与乐企服务器的连通性 乐企服务器生产和测试域名均为:https://lqpt.chinatax.gov.cn:8443。开发者可以在“能力中心”查看基础公用能力详情,按照能力接入和开发指引完成接口对接,验证服务器连通性和证书配置正确…

给一个web网站,如何开展测试?

前言 Web测试是指针对Web应用程序(网站或基于Web的系统)进行的测试活动,以确保其质量、性能、安全性、可用性和兼容性等方面符合预期标准。Web测试涵盖了从前端用户界面(UI)到后端逻辑和数据库的各个方面,确保Web应用程序在不同环境和条件下都能正常运行…

参会投稿 | 第三届先进传感与智能制造国际学术会议(ASIM 2024)

第三届先进传感与智能制造国际会议(The 3rd International Conference on Advanced Sensing, Intelligent Manufacturing),由江汉大学、西安交通大学和山东大学主办,由江西省机械工程学会、东华理工大学机械与电子工程学院等联合协…

Hibernate 批量插入速度慢的原因和解决方法

由于业务需要一次性连续写入超过10k条以上的新数据,当对象超过10个成员变量以后,整个写入过程居然需要长达35秒,这个速度是不能接受的,故此研究了一下怎么开启Hibernate批量写入的功能。 我这边使用的是Hibernate 5.6.15 在网上…

推动光模块技术发展:从400G、800G到1.6T

随着数据通信领域的持续发展,对于更快、更高传输速率的需求也在不断增长。作为现代数据传输的基石,光模块技术不断进步以满足这一需求。其中一项重大进展是网络速率从400G提升到800G,并将向1.6T继续发展。让我们深入探讨这些技术的演变&#…

Java语言程序设计基础篇_编程练习题***17.9 (地址簿)

目录 题目:***17.9 (地址簿) 习题思路 代码示例 结果展示 题目:***17.9 (地址簿) 编写程序用于存储、返回、增加,以及更新如图 17-20 所示的地址薄。使用固定长度的字符串来存储地址中的每个属性。使用随机访问文件来读取和写人一个地址…

刚刚认证!网络主播成为国家新职业,易播易赚打造打造职业入门全新模式

近期,人力资源和社会保障部会同国家市场监督管理总局、国家统计局日前增设网络主播为国家新职业,这标志着网络主播的职业身份在“国家确定职业分类”上首次得以确立。 据人社部此前印发的《关于加强新职业培训工作的通知》表示,新职业从业者可…

代码随想录算法训练营第二十三天| 39. 组合总和 40.组合总和II 131.分割回文串

目录 一、LeetCode 39. 组合总和思路:C代码 二、LeetCode 40.组合总和II思路C代码 三、LeetCode 131.分割回文串思路C代码 总结 一、LeetCode 39. 组合总和 题目链接:LeetCode 39. 组合总和 文章讲解:代码随想录 视频讲解:带你学…

直播平台直播API集成之快手篇

前言: 本篇我们来介绍如何使用快手 的直播API创建直播。 准备工作: 1、你首先得有个快手账号; 2、创建快手应用,填写应用审核信息,等待应用创建审核通过,应用成功创建后在开发与上线前还要提前做好API权限申请,如果你只需要获取用户基本信息,以及得到直播API的访问权限…

Python | Leetcode Python题解之第377题组合总和IV

题目&#xff1a; 题解&#xff1a; class Solution:def combinationSum4(self, nums: List[int], target: int) -> int:dp [1] [0] * targetfor i in range(1, target 1):for num in nums:if num < i:dp[i] dp[i - num]return dp[target]