pod相关面试题总结(持续更新)
1:当一个Pod有多个容器时,如果连接到指定的容器?
#查看当前空间下的pod
[root@master210 pods]# kubectl get pods
NAME READY STATUS RESTARTS AGE
linux85-nginx-tomcat 2/2 Running 0 63s
[root@master210 pods]#
[root@master210 pods]# kubectl exec -it linux85-nginx-tomcat -- sh # 默认连接到第一个容器
Defaulted container "nginx" out of: nginx, tomcat
/ #
/ #
/ #
[root@master210 pods]# kubectl exec -it linux85-nginx-tomcat -c nginx -- sh # 连接nginx容器
/ #
[root@master210 pods]# kubectl exec -it linux85-nginx-tomcat -c tomcat -- sh # 连接tomcat容器
/usr/local/tomcat #
可通过-c 容器名指定
早期版本中,可能没有提示Pod容器的名称,可以采用以下三种方式查看容器名称。
cat 02-nginx-tomcat.yaml
kubectl describe pod linux85-nginx-tomcat
kubectl get pods linux85-nginx-tomcat -o yaml
2: 如果查看一个Pod最近20分钟的日志?
[root@master210 pods]# kubectl logs -c nginx -f --timestamps --since=20m linux85-nginx-tomcat -c:指定要查看的容器名称。-f:实时查看日志。--timestamps :显示时间戳相关信息。--since=20m 查看最近20分钟内的日志
3: 如何查看一个Pod上一个容器的日志,上一个挂掉的容器日志?
[root@master210 pods]# kubectl logs -c tomcat -f --timestamps -p linux85-nginx-tomcat
4: 使用kubectl logs无法查看日志是什么原因,如何让其能够查看呢?
使用"kubectl logs"查看的是容器的标准输出或错误输出日志,如果想要使用该方式查看,需要将日志重定向到/dev/stdout或者/dev/stderr。
5: 如何实现Pod的容器的文件和宿主机之间相互拷贝?
[root@master210 pods]# kubectl get pods
NAME READY STATUS RESTARTS AGE
linux85-game-014 1/1 Running 0 3m10s
[root@master210 pods]# kubectl cp linux85-game-014:/start.sh /tmp/1.sh # 拷贝文件
[root@master210 pods]# kubectl cp linux85-game-014:/etc /tmp/2222 # 拷贝目录
[root@master210 pods]# ll /tmp/
total 16
-rw-r--r-- 1 root root 3369 Apr 13 17:01 1.sh
drwxr-xr-x 20 root root 4096 Apr 13 17:02 2222- 将宿主机的文件拷贝到Pod的容器中
[root@master210 pods]# kubectl cp 01-nginx.yaml linux85-game-014:/
[root@master210 pods]#
[root@master210 pods]# kubectl cp /tmp/2222/ linux85-game-014:/
[root@master210 pods]#
[root@master210 pods]# kubectl exec linux85-game-014 -- ls -l /
total 24
-rw-r--r-- 1 root root 301 Apr 13 09:03 01-nginx.yaml
drwxr-xr-x 20 root root 4096 Apr 13 09:04 2222
6: 镜像下载策略有哪些?请分别说明?
在 Kubernetes 中,镜像下载策略(Image Pull Policy)用于决定在创建 Pod 时如何从镜像仓库中拉取容器镜像。Kubernetes 提供了三种主要的镜像下载策略,分别是:
Always
IfNotPresent
Never
- Always
说明: 每次启动 Pod 时,Kubernetes 总是从镜像仓库拉取最新版本的镜像,即使本地已经存在相同的镜像版本。
使用场景:
适用于开发和测试环境,确保容器每次启动时都使用最新的镜像。
适用于镜像标签为 latest 的场景,因为 latest 标签不固定,镜像内容可能会不断更新。
指定方式: 在 Pod 配置文件中设置 imagePullPolicy: Always。
默认行为: 当镜像标签为 latest 时,Kubernetes 默认使用 Always 策略。
例:
spec:containers:- name: my-containerimage: my-app:latestimagePullPolicy: Always
- IfNotPresent
说明: 如果本地已经存在指定的镜像,则不会从镜像仓库拉取镜像。只有在本地不存在镜像时,才会尝试从仓库中拉取。
使用场景:
适用于生产环境,确保只有在本地没有镜像的情况下才会下载镜像,从而减少镜像拉取时间和带宽消耗。
适用于明确版本标签的镜像(例如 my-app:v1.0.0),这种镜像的内容是固定的,通常不需要每次都拉取。
指定方式: 在 Pod 配置文件中设置 imagePullPolicy: IfNotPresent。
默认行为: 当镜像标签不是 latest 且没有指定 imagePullPolicy 时,默认使用 IfNotPresent 策略。
例:
spec:containers:- name: my-containerimage: my-app:v1.0.0imagePullPolicy: IfNotPresent
- Never
说明: Kubernetes 不会从镜像仓库拉取镜像,必须确保镜像已经存在于本地。如果本地不存在镜像,则会导致 Pod 启动失败。
使用场景:
适用于镜像已经手动预先下载到所有节点的场景。
在高安全性或离线环境中,可能需要完全避免从镜像仓库拉取镜像。
指定方式: 在 Pod 配置文件中设置 imagePullPolicy: Never。
注意: 使用该策略时,如果节点上没有镜像,Pod 会报错,无法启动。
例:
spec:containers:- name: my-containerimage: my-app:v1.0.0imagePullPolicy: Never
默认行为总结:
如果镜像标签为 latest,则 imagePullPolicy 默认为 Always。
如果指定了镜像标签并且不是 latest,则默认使用 IfNotPresent。
明确设置的 imagePullPolicy 将会覆盖默认行为。
使用场景总结:
Always: 当你需要每次启动容器时都拉取最新镜像,例如开发、测试或者 latest 标签场景。
IfNotPresent: 当你希望尽量使用本地已有镜像,减少拉取时间,通常适用于生产环境中的稳定版本镜像。
Never: 当你已经预先在节点上准备好镜像,并且不希望 Kubernetes 再次拉取镜像。
7: Pod的容器重启策略有哪些?请简要说明?
Kubernetes 中 Pod 的容器有三种重启策略:
Always:容器无论退出状态如何,始终会重启。这是默认设置。适用于需要持续运行的应用。
示例:
apiVersion: v1
kind: Pod
metadata:name: always-restart
spec:containers:- name: my-containerimage: my-imagerestartPolicy: Always
OnFailure:只有当容器以非零状态退出时,才会重启。适用于需要在失败时重新尝试的批处理任务。正常退出时不会重启容器,异常退出时,会重启容器。
示例:
apiVersion: v1
kind: Pod
metadata:name: on-failure-restart
spec:containers:- name: my-batch-jobimage: my-batch-imagerestartPolicy: OnFailure
Never:容器退出后不进行重启。适用于一次性任务,不希望重启的场景。
示例:
apiVersion: v1
kind: Pod
metadata:name: never-restart
spec:containers:- name: my-one-time-jobimage: my-job-imagerestartPolicy: Never
8: 如何向Pod的指定容器传递环境变量?有哪些方式,请简要说明?
直接在 Pod 定义中设置: 在 Pod 的 YAML 配置文件中,可以直接为容器定义环境变量
apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:containers:- name: my-containerimage: my-imageenv:- name: MY_ENV_VARvalue: "my_value"
从 ConfigMap 中获取: 可以将环境变量存储在 ConfigMap 中,然后在 Pod 中引用。
apiVersion: v1
kind: ConfigMap
metadata:name: my-config
data:MY_ENV_VAR: "my_value"---
apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:containers:- name: my-containerimage: my-imageenv:- name: MY_ENV_VARvalueFrom:configMapKeyRef:name: my-configkey: MY_ENV_VAR
从 Secret 中获取: 对于敏感信息(如密码),可以使用 Secret 存储,并在 Pod 中引用。
apiVersion: v1
kind: Secret
metadata:name: my-secret
type: Opaque
data:MY_SECRET_VAR: bXlfc2VjcmV0X3ZhbHVl # base64 编码---
apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:containers:- name: my-containerimage: my-imageenv:- name: MY_SECRET_VARvalueFrom:secretKeyRef:name: my-secretkey: MY_SECRET_VAR
从 Downward API 获取: 可以使用 Downward API 将 Pod 的元数据作为环境变量传递给容器。
apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:containers:- name: my-containerimage: my-imageenv:- name: POD_NAMEvalueFrom:fieldRef:fieldPath: metadata.name
9: 同一个Pod如何实现数据持久化?如何实现数据共享?跨节点的Pod如何实现数据共享呢?
- 使用 emptyDir 实现数据持久化和共享
emptyDir 是一种临时存储卷,Pod 在运行时会创建,并在 Pod 删除时删除。可以用于容器间的数据共享。
emptyDir 适合用于同一个 Pod 内的多个容器之间共享数据。
数据在 Pod 删除后会丢失。
apiVersion: v1
kind: Pod
metadata:name: linux85-volume-emptydir-001
spec:volumes:- name: data01emptyDir: {} # 创建一个空的临时存储卷containers:- name: webimage: nginx:1.20.1-alpinevolumeMounts:- name: data01mountPath: /usr/share/nginx/html # 挂载到指定路径- name: linuximage: alpine:lateststdin: truevolumeMounts:- name: data01mountPath: /edu-data # 共享同一个 emptyDir
- 使用 hostPath 实现数据持久化
hostPath 是一种将宿主机文件系统中的某个目录挂载到容器中的方式,适合快速存取宿主机的数据。
hostPath 可用于快速访问宿主机的数据。
注意,这种方式不适合在多个节点间共享数据。
apiVersion: v1
kind: Pod
metadata:name: linux85-volume-hostpath-001
spec:volumes:- name: data02hostPath:path: /edu-data # 宿主机路径containers:- name: webimage: nginx:1.20.1-alpinevolumeMounts:- name: data02mountPath: /usr/share/nginx/html # 挂载宿主机路径
- 使用 NFS 实现数据共享和持久化
NFS(网络文件系统)可以实现跨节点的数据共享,适合需要在多个 Pod 之间共享数据的场景。
部署 NFS 服务器,可以参考:
nfs文件服务器部署
apiVersion: v1
kind: Pod
metadata:name: linux85-volume-nfs-web
spec:nodeName: k8s232.oldboyedu.comvolumes:- name: datanfs:server: 192.168.29.110 # NFS 服务器地址path: /data/kubernetes/volume-nfs # NFS 导出路径containers:- name: webimage: nginx:1.20.1-alpinevolumeMounts:- name: datamountPath: /usr/share/nginx/html
10:如何对容器进行资源限制
对容器进行资源限制可以确保每个容器在运行时不会占用过多的 CPU 和内存,从而保护其他容器和系统的稳定性。Kubernetes 通过在 Pod 定义中使用 resources 字段来设置资源限制。以下是如何设置 CPU 和内存资源限制的示例:
apiVersion: v1
kind: Pod
metadata:name: linux85-stress-003
spec:containers:- name: stressimage: linux-tools:v0.1args:- "tail"- "-f"- "/etc/hosts"resources:requests:memory: "256Mi" # 请求的内存cpu: "500m" # 请求的 CPUlimits:memory: "512Mi" # 限制的内存cpu: "1" # 限制的 CPUresources:
requests: 指定容器启动时需要的资源量。Kubernetes 会根据请求的资源量来调度 Pod。如果没有足够的资源可用,Pod 将不会被调度。
memory: 指定请求的内存量(例如,256Mi)。
cpu: 指定请求的 CPU 核心数(例如,500m 表示 0.5 核心)。
limits: 指定容器能够使用的最大资源量。超过限制的部分将被限制或终止。
memory: 指定限制的内存量(例如,512Mi)。
cpu: 指定限制的 CPU 核心数(例如,1 表示 1 核心)
相关文章:
pod相关面试题总结(持续更新)
1:当一个Pod有多个容器时,如果连接到指定的容器? #查看当前空间下的pod [rootmaster210 pods]# kubectl get pods NAME READY STATUS RESTARTS AGE linux85-nginx-tomcat 2/2 Running 0 63s [rootmaster210 …...
Matlab学习03-符号的替换及运算(接上一篇)
在上一篇的学习中,我知道了符号变量的声明👇 Matlab学习02-matlab中的数据显示格式及符号变量-CSDN博客 接下来开始学习符号运算相关的内容,并学习最为核心的matlab程序设计。之前的学习都是为了程 序设计做铺垫,程序设计又是为了…...
Windows中API-磁盘管理笔记
硬盘是由一组堆积的盘片组成类似于圆柱体组成,每个盘片的数据都以电磁方式存储在同心圆或轨道中,轨道的最小可寻址单元是扇区;基本磁盘:最常用于windows的存储类型,指的是**包含分区的磁盘。**在基本磁盘上只能创建和删…...
010 操作符详解 上
写代码的实质是在写方法体 —— 刘铁猛 操作符概览 操作符本质 操作符的本质是函数的“简记法” 操作符 简写Add函数 34 等同Add(3,4)操作符不能脱离与它关联的数据类型可以说操作符就是与固定数据类型关联的一套算法的简记法 如下图所示算法的简记法 操作符的优先级 可以使…...
【贪心算法】(第十篇)
目录 加油站(medium) 题目解析 讲解算法原理 编写代码 单调递增的数字(medium) 题目解析 讲解算法原理 编写代码 加油站(medium) 题目解析 1.题目链接:. - 力扣(LeetCode&a…...
029.爬虫专用浏览器-抓取跨域#document下的内容
一、iframe下的#document是什么 #document 是一个特殊的 HTML 元素,表示 <iframe> 元素内部的文档对象。当你在 HTML 页面中嵌入一个 <iframe> 元素时,浏览器会创建一个新的文档对象来表示 <iframe> 内部的内容。这 个文档对象就是 #…...
SIP 业务举例之 Call Hold(呼叫保持)
目录 1. Call Hold(呼叫保持)简介 2. 信令流程 呼叫保持 呼叫恢复开始 恢复通话完成 3. 本例 Call Hold 建立了几个 Dialog? 博主wx:yuanlai45_csdn 博主qq:2777137742 想要 深入学习 5GC IMS 等通信知识(加入 51学通信),或者想要 cpp 方向修改简历,模拟面试,学习…...
eks节点的网络策略配置机制解析
参考链接 vpc-cni网络策略最佳实践,https://aws.github.io/aws-eks-best-practices/security/docs/network/#additional-resourcesvpc cni网络策略faq,https://github.com/aws/amazon-vpc-cni-k8s/blob/0703d03dec8afb8f83a7ff0c9d5eb5cc3363026e/docs/…...
【C】用c写贪吃蛇
1.输入正确的账号密码及其用户名,登录成功进入贪吃蛇游戏界面, 2.随机生成蛇头★、食物▲的位置(x,y),并使用□打印地图 3.使用w s a d按键,完成蛇头的上下左右移动 4.蛇头碰撞到食物后,吃下食物变成蛇身的一部分●…...
qt QLineEdit详解
一、概述 QLineEdit 是 Qt 框架中用于创建单行文本输入框的类。它非常适合用于接收用户输入,例如用户名、密码或其他简单的文本信息。它提供了许多有用的编辑功能,支持多种输入模式和文本限制,并支持撤销、重做、剪切、粘贴以及拖放等功能。…...
DevEco Studio的使用 习题答案<HarmonyOS第一课>
一、判断题 1. 如果代码中涉及到一些网络、数据库、传感器等功能的开发,均可使用预览器进行预览。 正确(True)错误(False) 错误(False)回答正确 2. module.json5文件中的deviceTypes字段中,配置了phone,tablet,2in1等多种设备类型,才能进行多设备预览。 正确(True)…...
鸿蒙网络编程系列36-固定包头可变包体解决TCP粘包问题
1. TCP数据传输粘包简介 在本系列的第6篇文章《鸿蒙网络编程系列6-TCP数据粘包表现及原因分析》中,我们演示了TCP数据粘包的表现,如图所示: 随后解释了粘包背后的可能原因,并给出了解决TCP传输粘包问题的两种思路,第一…...
【华为路由】OSPF多区域配置
网络拓扑 设备接口地址 设备 端口 IP地址 RTA Loopback 0 1.1.1.1/32 G0/0/0 10.1.1.1/24 RTB Loopback 0 2.2.2.2/32 G0/0/0 10.1.1.2/24 G0/0/1 10.1.2.1/24 RTC Loopback 0 3.3.3.3/32 G0/0/0 10.1.2.2/24 G0/0/1 10.1.3.1/24 RTD Loopback 0 4.4.4…...
【C++初阶】一文讲通C++内存管理
文章目录 1. C/C内存分布2. C语言中动态内存管理方式3. C内存管理方式3. 1 new/delete操作内置类型3. 2 new和delete操作自定义类型 4. new与delete的原理4. 1 operator new与operator delete函数4. 2 内置类型4. 3 自定义类型 5. 定位new表达式(placement-new)6. malloc/free和…...
Vue学习笔记(九、简易计算器)
在这个案例中,我们使用v-model分别双向绑定了n1、n2操作数,op操作选项和result计算结果,同时用绑定了等号按钮事件。 由于是双向绑定,当input和select通过外部输入内容时,vm内部的数值也会改变,所以calcula…...
Maven 不同环境灵活构建
需求: 使用 Maven根据不同的构建环境(如开发、测试、生产)来定义不同的配置,实现灵活的构建管理。 需要Demo项目的可以参考:我的demo项目 一、项目分层 一般的初创项目不会有特别多的配置文件,所以使用 spring.profile…...
第三十篇:TCP连接断开过程,从底层说明白,TCP系列五
上一篇《第二十九篇:图解TCP三次握手,看过不会忘,从底层说清楚,TCP系列四》说了TCP的三次握手,接下来我将讲解TCP四次挥手。 既然有连接就有断开,谈到这里,有的同学可能会想,不就是…...
代码随想录算法训练营第七天| 哈希表理论基础 454.四数相加II 383.赎金信 15.三数之和 18.四数之和
454. 四数相加 II 题目 给定四个包含整数的数组 A, B, C, D,计算有多少个元组 (i, j, k, l) 使得 A[i] B[j] C[k] D[l] 0。 解题思路 先计算数组 A 和 B 的所有组合和,并存入哈希表 map 中,键为组合和,值为该和出现的次数…...
搜维尔科技:Manus新品发布Metagloves Pro专业版,专为高精度需求的客户打造,尤其是人形机器人产业与人机工效研究使用
manus新品发布Metagloves Pro专业版,专为高精度需求的客户打造,尤其是人形机器人产业与人机工效研究使用 搜维尔科技:manus新品发布Metagloves Pro专业版,专为高精度需求的客户打造,尤其是人形机器人产业与人机工效研究…...
Spring Boot实现的动态化酒店住宿管理系统
1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理酒店客房管理系统的相关信息成为必然。开发…...
数字IC后端实现Innovus |给各种IP子模块添加port buffer和antenna diode万能脚本
我们之前分享过在hierarchical flow后端实现中为了确保顶层flatten时timing signoff和physical signoff看到的情况和模块级看到的情况一致,我们会在模块io port添加io port buffer(主要是timing,antenna一致性)。实际上在芯片级我…...
反向代理服务器---NGINX
1.NGINX NGINX(发音为“engine-x”)是一个开源的高性能HTTP服务器和反向代理服务器。它被广泛用于互联网应用程序的加速、负载均衡和高可用性的配置。NGINX具有低内存消耗、高并发能力和卓越的性能,能够处理大量并发连接和高流量的网络流量。…...
unity3d————场景管理类SceneManager
常用API SceneManager.LoadScene(string sceneName) 加载名为 sceneName 的场景。SceneManager.LoadScene(int sceneBuildIndex) 根据场景在Build设置中的索引加载场景。SceneManager.GetActiveScene() 获取当前活动的场景。SceneManager.GetSceneByName(string name) 根据名称…...
鹅厂面试官:Transformer 为何需要位置编码?
最近这一两周看到不少互联网公司都已经开始秋招发放Offer。 不同以往的是,当前职场环境已不再是那个双向奔赴时代了。求职者在变多,HC 在变少,岗位要求还更高了。 最近,我们又陆续整理了很多大厂的面试题,帮助一些球…...
MySQL数据库学习指南
一、数据库的库操作 1、创建数据库 2、删除数据库 3、查看数据库 4、选择数据库 5、修改数据库 6、数据库备份与恢复 7、数据库的权限管理 二、数据库的表操作 1、创建表 2、删除表 3、修改表 4、查看表的结构 5、查看表的数据 6、创建索引 7、删除索引 8、约束…...
算法刷题-小猫爬山
本题来源165. 小猫爬山 - AcWing题库 翰翰和达达饲养了 NN 只小猫,这天,小猫们要去爬山。 经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<)。 翰翰和达达只好花…...
Maven项目管理工具-初始+环境配置
1. Maven的概念 1.1. 什么是Maven Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。 理想的项目构建:高度自动化,跨平台,可重用的组件,标准化的流程 maven能够自动下载依…...
【JavaEE初阶】网络编程TCP协议实现回显服务器以及如何处理多个客户端的响应
前言 🌟🌟本期讲解关于TCP/UDP协议的原理理解~~~ 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 🔥 你的点赞就是小编不断更新的最大动力 🎆那么废话不多说…...
Android 中的串口开发
一:背景 本文着重讲安卓下的串口。 由于开源的Android在各种智能设备上的使用越来越多,如车载系统等。在我们的认识中,Android OS的物理接口一般只有usb host接口和耳机接口,但其实安卓支持各种各样的工业接口,如HDM…...
TensorRt OP
在TensorRT中,OP(Operations,操作)是指网络中的基本计算单元,类似于数学中的运算符。每个OP执行一个特定的计算任务,例如卷积、矩阵乘法、激活函数等。TensorRT通过识别和优化这些OP来提高深度学习模型的推…...
企业网站制作规划/app下载注册推广平台
一,摘要 圣殿骑士首先向大家说声对不起,由于最近身体不适,同时也因为这些天一直在研究微软的云计算平台Windows Azure(公司项目需要),所以暂停了更新WPF 基础到企业应用系列索引,不过经过这几天…...
做平台网站怎么做的/建站abc
实现以下的add()的方法 output()时打印前面的参数之和 add(1,2).add(3).add(4).output()function add(...args){return [...args] } Array.prototype.add function(...args){this.push(...args)return this } Array.prototype.output function(){return this.reduce((a,b)&g…...
哪里有做网站公司/seo怎么学
爱情没有如果很多人喜欢给爱情做假设。 他说,如果你可以温柔点,我可以更爱你,不会轻易放弃你。 她说,如果你可以体贴点,我可以更珍惜你,我也不会离开你。 但,终究在一个时间的定格中交错走开。 …...
网站后台如何做文件下载连接/网络seo是什么
本文以python3.6版本演示如何配置环境变量,其他版本的方法与之类似。 在下载列表中,以“Windows x86-64”开头的链接才是 64 位的 Python 安装程序;以“Windows x86”开头的链接是 32 位的 Python 安装程序。 python学习网,大量的…...
做娱乐网站少10个页面/友情链接交易平台源码
有了我在这里找到的所有可能的解决方案以及其他答复,我将为我的解决方案做出贡献。您需要使用包含“ ip”或“ mac”的字符串来指定参数,具体取决于您要检查的内容。如果计算机没有接口,则它将返回一个包含null的字符串,否则将返回…...
php动态网站开发教程/优化师是一份怎样的工作
1.strcpy函数原型:strcpy(str1,str2);功能:将字符串str2复制到字符串str1中,并覆盖str1原始字符串,可以用来为字符串变量赋值返回:str1注意:1)字符串str2会覆盖str1中的全部字符,2)字符串str2的…...