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

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

  1. Always
    说明: 每次启动 Pod 时,Kubernetes 总是从镜像仓库拉取最新版本的镜像,即使本地已经存在相同的镜像版本。
    使用场景:
    适用于开发和测试环境,确保容器每次启动时都使用最新的镜像。
    适用于镜像标签为 latest 的场景,因为 latest 标签不固定,镜像内容可能会不断更新。
    指定方式: 在 Pod 配置文件中设置 imagePullPolicy: Always。
    默认行为: 当镜像标签为 latest 时,Kubernetes 默认使用 Always 策略。
    例:
spec:containers:- name: my-containerimage: my-app:latestimagePullPolicy: Always
  1. IfNotPresent
    说明: 如果本地已经存在指定的镜像,则不会从镜像仓库拉取镜像。只有在本地不存在镜像时,才会尝试从仓库中拉取。
    使用场景:
    适用于生产环境,确保只有在本地没有镜像的情况下才会下载镜像,从而减少镜像拉取时间和带宽消耗。
    适用于明确版本标签的镜像(例如 my-app:v1.0.0),这种镜像的内容是固定的,通常不需要每次都拉取。
    指定方式: 在 Pod 配置文件中设置 imagePullPolicy: IfNotPresent。
    默认行为: 当镜像标签不是 latest 且没有指定 imagePullPolicy 时,默认使用 IfNotPresent 策略。
    例:
spec:containers:- name: my-containerimage: my-app:v1.0.0imagePullPolicy: IfNotPresent
  1. 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如何实现数据共享呢?

  1. 使用 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
  1. 使用 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  # 挂载宿主机路径
  1. 使用 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 元素&#xff0c;表示 <iframe> 元素内部的文档对象。当你在 HTML 页面中嵌入一个 <iframe> 元素时&#xff0c;浏览器会创建一个新的文档对象来表示 <iframe> 内部的内容。这 个文档对象就是 #…...

SIP 业务举例之 Call Hold(呼叫保持)

目录 1. Call Hold(呼叫保持)简介 2. 信令流程 呼叫保持 呼叫恢复开始 恢复通话完成 3. 本例 Call Hold 建立了几个 Dialog? 博主wx:yuanlai45_csdn 博主qq:2777137742 想要 深入学习 5GC IMS 等通信知识(加入 51学通信),或者想要 cpp 方向修改简历,模拟面试,学习…...

eks节点的网络策略配置机制解析

参考链接 vpc-cni网络策略最佳实践&#xff0c;https://aws.github.io/aws-eks-best-practices/security/docs/network/#additional-resourcesvpc cni网络策略faq&#xff0c;https://github.com/aws/amazon-vpc-cni-k8s/blob/0703d03dec8afb8f83a7ff0c9d5eb5cc3363026e/docs/…...

【C】用c写贪吃蛇

1.输入正确的账号密码及其用户名&#xff0c;登录成功进入贪吃蛇游戏界面&#xff0c; 2.随机生成蛇头★、食物▲的位置(x,y)&#xff0c;并使用□打印地图 3.使用w s a d按键&#xff0c;完成蛇头的上下左右移动 4.蛇头碰撞到食物后&#xff0c;吃下食物变成蛇身的一部分●…...

qt QLineEdit详解

一、概述 QLineEdit 是 Qt 框架中用于创建单行文本输入框的类。它非常适合用于接收用户输入&#xff0c;例如用户名、密码或其他简单的文本信息。它提供了许多有用的编辑功能&#xff0c;支持多种输入模式和文本限制&#xff0c;并支持撤销、重做、剪切、粘贴以及拖放等功能。…...

DevEco Studio的使用 习题答案<HarmonyOS第一课>

一、判断题 1. 如果代码中涉及到一些网络、数据库、传感器等功能的开发,均可使用预览器进行预览。 正确(True)错误(False) 错误(False)回答正确 2. module.json5文件中的deviceTypes字段中,配置了phone,tablet,2in1等多种设备类型,才能进行多设备预览。 正确(True)…...

鸿蒙网络编程系列36-固定包头可变包体解决TCP粘包问题

1. TCP数据传输粘包简介 在本系列的第6篇文章《鸿蒙网络编程系列6-TCP数据粘包表现及原因分析》中&#xff0c;我们演示了TCP数据粘包的表现&#xff0c;如图所示&#xff1a; 随后解释了粘包背后的可能原因&#xff0c;并给出了解决TCP传输粘包问题的两种思路&#xff0c;第一…...

【华为路由】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学习笔记(九、简易计算器)

在这个案例中&#xff0c;我们使用v-model分别双向绑定了n1、n2操作数&#xff0c;op操作选项和result计算结果&#xff0c;同时用绑定了等号按钮事件。 由于是双向绑定&#xff0c;当input和select通过外部输入内容时&#xff0c;vm内部的数值也会改变&#xff0c;所以calcula…...

Maven 不同环境灵活构建

需求: 使用 Maven根据不同的构建环境&#xff08;如开发、测试、生产&#xff09;来定义不同的配置&#xff0c;实现灵活的构建管理。 需要Demo项目的可以参考&#xff1a;我的demo项目 一、项目分层 一般的初创项目不会有特别多的配置文件&#xff0c;所以使用 spring.profile…...

第三十篇:TCP连接断开过程,从底层说明白,TCP系列五

上一篇《第二十九篇&#xff1a;图解TCP三次握手&#xff0c;看过不会忘&#xff0c;从底层说清楚&#xff0c;TCP系列四》说了TCP的三次握手&#xff0c;接下来我将讲解TCP四次挥手。 既然有连接就有断开&#xff0c;谈到这里&#xff0c;有的同学可能会想&#xff0c;不就是…...

代码随想录算法训练营第七天| 哈希表理论基础 454.四数相加II 383.赎金信 15.三数之和 18.四数之和

454. 四数相加 II 题目 给定四个包含整数的数组 A, B, C, D&#xff0c;计算有多少个元组 (i, j, k, l) 使得 A[i] B[j] C[k] D[l] 0。 解题思路 先计算数组 A 和 B 的所有组合和&#xff0c;并存入哈希表 map 中&#xff0c;键为组合和&#xff0c;值为该和出现的次数…...

搜维尔科技:Manus新品发布Metagloves Pro专业版,专为高精度需求的客户打造,尤其是人形机器人产业与人机工效研究使用

manus新品发布Metagloves Pro专业版&#xff0c;专为高精度需求的客户打造&#xff0c;尤其是人形机器人产业与人机工效研究使用 搜维尔科技&#xff1a;manus新品发布Metagloves Pro专业版&#xff0c;专为高精度需求的客户打造&#xff0c;尤其是人形机器人产业与人机工效研究…...

Spring Boot实现的动态化酒店住宿管理系统

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理酒店客房管理系统的相关信息成为必然。开发…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...