【Kubernetes】常见面试题汇总(三十一)
目录
83.简述你知道的 K8s 中几种 Controller 控制器并详述其工作原理。简述 ingress-controller 的工作机制。
特别说明:
题目 1-68 属于【Kubernetes】的常规概念题,即 “ 汇总(一)~(二十二)” 。
题目 69-113 属于【Kubernetes】的生产应用题。
83.简述你知道的 K8s 中几种 Controller 控制器并详述其工作原理。简述 ingress-controller 的工作机制。
(一)deployment(适合无状态的服务部署):
(1)适合部署无状态的应用服务,用来管理 pod 和 replicaset,具有上线部署、副本设定、滚动更新、回滚等功能,还可提供声明式更新,例如只更新一个新的 Image。
(2)编写 yaml 文件,并创建 nginx 服务 pod 资源。
[root@master test] # vim nginx-deployment.yam
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name:nginx1
image: nginx:1.15.4
ports:
- containerPort: 80
(3)查看控制器参数:可以使用 describe 或者 edit 两种方式。
① describe 方式:[root@master test] # kubectl describe deploy nginx-deployment
② edit 方 式 :[root@master test] # kubectl edit deploy nginx-deployment/
(二)Statefulset(适合有状态的服务部署):
(1)特点:
① 适合部署有状态应用;
② 解决 Pod 的独立生命周期,保持 Pod 启动顺序和唯一性;
③ 稳定,唯一的网络标识符,持久存储(例如:etcd 配置文件,节点地址发生变化,将无法使用);
④ 有序,优雅的部署和扩展、删除和终止(例如:mysql 主从关系,先启动主,再启动从);
⑤ 有序,滚动更新。
(2)应用场景:例如数据库
(3)无状态服务的特点:
① deployment 认为所有的 pod 都是一样的;
② 不用考虑顺序的要求;
③ 不用考虑在哪个 node 节点上运行;
④ 可以随意扩容和缩容。
(4)有状态服务的特点:
① 实例之间有差别,每个实例都有自己的独特性,元数据不同,例如 etcd,zookeeper;
② 实例之间不对等的关系,以及依靠外部存储的应用;
(5)常规的 service 服务和无头服务的区别:
① service:一组 Pod 访问策略,提供 cluster-IP 群集之间通讯,还提供负载均衡和服务发现。
② Headless service 无头服务,不需要 cluster-IP,直接绑定具体的 Pod 的 IP,无头服务经常用于 statefulset 的有状态部署。
③ 创建无头服务的 service 资源和 dns 资源:由于有状态服务的 IP 地址是动态的,所以使用无头服务的时候要绑定 dns服务。
(三)Daemonset(一次部署):
(1)一次部署,所有的 node 节点都会部署,例如一些典型的应用场景:
① 运行集群存储 daemon,例如在每个Node 上运行 glusterd、ceph;
② 在每个 Node 上运行日志收集 daemon,例如 fluentd、logstash;
③ 在每个Node 上运行监控 daemon,例如 Prometheus Node Exporter;
④ 在每一个 Node 上运行一个 Pod;
⑤ 新加入的 Node 也同样会自动运行一个 Pod。
(2)应用场景:
监控,分布式存储,日志收集等。
(四)Job(一次性的执行任务):
一次性执行任务,类似 Linux 中的 job。
应用场景:如离线数据处理,视频解码等业务。
(五)Cronjob(周期性的执行任务):
周期性任务,像 Linux 的 Crontab 一样。
应用场景:如通知,备份等。
使用 cronjob 要慎重,用完之后要删掉,不然会占用很多资源。
(六)ingress-controller 的工作机制:
(1)诞生:
- 通常情况下,service 和 pod 的 IP 仅可在集群内部访问。
- k8s 提供了 service 方式:NodePort 来提供对外的服务,外部的服务可以通过访问 Node 节点 ip+NodePort 端口来访问集群内部的资源,外部的请求先到达 service 所选中的节点上,然后负载均衡到每一个节点上。
- NodePort 虽然提供了对外的方式但也有很大弊端:
① 由于 service 的实现方式:user_space 、iptebles、3ipvs、方式这三种方式只支持在 4 层协议通信,不支持 7 层协议,因此 NodePort 不能代理 https服务;
② NodePort 需要暴露 service 所属每个 node 节点上端口,当需求越来越多,端口数量过多,导致维护成本过高,并且集群不好管理。
(2)原理:
- Ingress 也是 Kubernetes APl 的标准资源类型之一,它其实就是一组基于 DNS 名称(host)或 URL 路径把请求转发到指定的 Service 资源的规则。用于将集群外部的请求流量转发到集群内部完成的服务发布。
- 我们需要明白的是,Ingress 资源自身不能进行 “ 流量穿透 ”,仅仅是一组规则的集合,这些集合规则还需要其他功能的辅助,比如监听某套接字,然后根据这些规则的匹配进行路由转发,这些能够为 Ingress 资源监听套接字并将流量转发的组件就是 IngressController。
- Ingress 控制器不同于 Deployment 等 pod 控制器的是,Ingress 控制器不直接运行为 kube-controller-manager 的一部分,它仅仅是 Kubernetes 集群的一个附件,类似于 CoreDNS,需要在集群上单独部署。
- ingress controller 通过监视 api server 获取相关 ingress、service、endpoint、secret、node、configmap 对象,并在程序内部不断循环监视相关 service 是否有新的 endpoints 变化,一旦发生变化则自动更新 nginx.conf 模板配置并产生新的配置文件进行 reload。
“【Kubernetes】常见面试题汇总” 系列文章,可点击链接查看专栏详情:K8s 面试题汇总
相关文章:
【Kubernetes】常见面试题汇总(三十一)
目录 83.简述你知道的 K8s 中几种 Controller 控制器并详述其工作原理。简述 ingress-controller 的工作机制。 特别说明: 题目 1-68 属于【Kubernetes】的常规概念题,即 “ 汇总(一)~(二十二)” 。 …...
在 Windows 上安装和配置 NVIDIA 驱动程序、CUDA、cuDNN 和 TensorRT
在 Windows 上安装和配置 NVIDIA 驱动程序、CUDA、cuDNN 和 TensorRT 1. 安装 NVIDIA 图形驱动程序2. 安装 CUDA Toolkit3. 安装 cuDNN4.安装 TensorRT5. 常见问题1. 安装 NVIDIA 图形驱动程序 首先需要安装兼容 CUDA 的 NVIDIA 驱动程序。 下载最新驱动: 访问 NVIDIA 官网,…...
京准电钟:NTP网络校时服务器助力校园体育场馆
京准电钟:NTP网络校时服务器助力校园体育场馆 京准电钟:NTP网络校时服务器助力校园体育场馆 体育场馆数字时钟系统可为观众及工作人员提供标准时间信息,为计算机及其他系统提供标准时间源,为协调场馆各业务系统与各部门的工作提供…...
9.25度小满一面
1.map的底层 2.unorder_map哈希表有自己实现过吗?哈希冲突 3.poll和epoll和select的优缺点、 4.线程同步机制是用来做什么的? 5.五子棋项目问题-- 算法题: 6.LeetCode.重排链表 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0…...
mysql批量修改表前缀
现有表前缀xh,批量修改为fax_需要怎么做 SELECTCONCAT(ALTER TABLE ,table_name, RENAME TO fax_,substring(table_name, 3),;) FROMinformation_schema. TABLES WHEREtable_name LIKE xh_%; 运行之后可以但是生成了一批修改表明的命令 此时批量复制执行就可实现批量修改表前…...
算法复杂度
1. 数据结构前⾔ 1.1数据结构 数据结构是计算机存储数据,组织数据的方式,指相互之间存在⼀种或多种特定关系的数 据元素的集合。常见的数据结构有线性表,树,图,哈希等。 1.2 算法 算法是一种计算过程,输…...
vue到出excel
安装 npm install exceljs npm install file-saver<template><button click"dade66">导出 66</button> </template><script> import ExcelJS from exceljs; import { saveAs } from file-saver;export default {data() {return {data…...
【延时队列的实现方式】
文章目录 延时队列JDK自带的延时队列实现Redis实现延迟队列RabbitMQ 延时队列 延时队列 延时队列是一种特殊类型的队列,它允许元素在特定时间间隔后才能被处理。这种队列在处理具有延迟需求的任务时非常有用,例如定时任务、事件驱动系统等 延时队列在项…...
Fyne ( go跨平台GUI )中文文档- 扩展Fyne (七)
本文档注意参考官网(developer.fyne.io/) 编写, 只保留基本用法 go代码展示为Go 1.16 及更高版本, ide为goland2021.2 这是一个系列文章: Fyne ( go跨平台GUI )中文文档-入门(一)-CSDN博客 Fyne ( go跨平台GUI )中文文档-Fyne总览(二)-CSDN博客 Fyne ( go跨平台GUI…...
Qt (19)【Qt 线程安全 | 互斥锁QMutex QMutexLocker | 条件变量 | 信号量】
阅读导航 引言一、互斥锁1. QMutex(1)基本概念(2)使用示例基本需求⭕thread.h⭕thread.cpp⭕widget.h⭕widget.cpp 2. QMutexLocker(1)基本概念(2)使用示例 3. QReadWriteLocker、QR…...
Java语法-类和对象(上)
1. 面向对象的初步认识 1.1 什么是面向对象 概念: Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。 1.2 面向对象VS面向过程 如:洗衣服 面向过程: 注重的是洗衣服的过程,少了一个环节也不…...
Presto如何配置资源队列或资源组
Presto的任务队列配置主要涉及到查询队列和资源组的配置,这些配置通常用于管理Presto集群中的查询执行和资源分配。但是注意这两个东西是共存,互补的关系,并不需要纠结那种配置方式更加出色 一、查询队列配置 Presto的查询队列配置主要通过…...
828华为云征文|使用Flexus X实例集成ES搜索引擎
目录 一、应用场景 1.1 Flexus X实例概述 1.2 ES搜索引擎 二、安装相关服务 2.1 安装Elasticsearch7.17.0 2.2 安装kibana7.17.0 三、开通安全组规则 四、整体感受 4.1 Flexus X实例 4.2 使用感觉 一、应用场景 1.1 Flexus X实例概述 Flexus X实例是华为云推出的一款…...
【设计模式-访问者模式】
定义 访问者模式(Visitor Pattern)是一种行为型设计模式,允许你在不修改已有类的情况下向这些类添加新的功能或行为。它通过将操作的执行逻辑从对象的类中分离出来,使得你可以在保持类的封闭性(符合开闭原则ÿ…...
一元运算符(自增自减)
一、一元运算符 一元运算符,只需要一个操作数 1. 正号 正号不会对数字产生任何影响 2.-负号 负号可以对数字进行负号的取反 对于非Number的值,会将先转换为Number,在进行运算: 可以对一个其他的数据类型使用,来将其转换为n…...
gitlab/极狐-离线包下载地址
如果想要使用Gitlab/极狐进行数据的恢复,只能使用相同版本或者相近版本的安装包,因此有时候需要到它的官网上下载对应版本的安装包,以下是我收集到的对应地址的下载路径: Gitlab Gitlab离线库, https://packages.gitl…...
C++——输入三个整数,按照由小到大的顺序输出。用指针方法处理。
没注释的源代码 #include <iostream> using namespace std; void swap(int *m,int *n); int main() { int a,b,c; int *p1,*p2,*p3; cout<<"请输入三个整数:"<<endl; cin>>a>>b>>c; p1&a;p2&b;p3&c;…...
【Java8 重要特性】Lambda 表达式
文章目录 Lambda函数式接口Lambda 规则规范简化过程改写 Arrays.setAll()改写 Arrays.sort() forEach循环 list 集合循环 list 集合并输出对象信息循环 Map 集合 方法引用和构造器引用方法引用构造器引用 Lambda Lambda是一个匿名函数,我们可以将Lambda表达式理解为…...
word2vec--CBOW与Skip-Gram 两种模型
Word2Vec 是一种流行的用于生成词嵌入(Word Embeddings)的无监督学习模型,它由 Google 的一个团队在 2013 年提出。它的主要目的是将单词映射到一个连续的向量空间,使得语义相似的单词在这个空间中靠得更近。 Word2Vec 有两种主要…...
iOS六大设计原则设计模式
六大设计原则: 一、单一职责原则 一个类或者模块只负责完成一个职责或者功能。 类似于:UIView 和 CALayer 二、开放封闭原则 对扩展开放,对修改封闭。 我们要尽量通过扩展软件实体来解决需求变化,而不是通过修改已有的代码来…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...
【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...
适应性Java用于现代 API:REST、GraphQL 和事件驱动
在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...
阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)
cd /home 进入home盘 安装虚拟环境: 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境: virtualenv myenv 3、激活虚拟环境(激活环境可以在当前环境下安装包) source myenv/bin/activate 此时,终端…...
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南 背景介绍完整操作步骤1. 创建Docker容器环境2. 验证GUI显示功能3. 安装ROS Noetic4. 配置环境变量5. 创建ROS节点(小球运动模拟)6. 配置RVIZ默认视图7. 创建启动脚本8. 运行可视化系统效果展示与交互技术解析ROS节点通…...
Java后端检查空条件查询
通过抛出运行异常:throw new RuntimeException("请输入查询条件!");BranchWarehouseServiceImpl.java // 查询试剂交易(入库/出库)记录Overridepublic List<BranchWarehouseTransactions> queryForReagent(Branch…...
