云平台管理部署知识点——问题+答案

发布于:2025-05-13 ⋅ 阅读:(19) ⋅ 点赞:(0)

1、在k8s 中定义副本数量的关键字是那个?处于那个模块下?

关键字:replicas

模块:spec下

2、在k8s中,有状态应用和无状态应用的区别?创建有状态和无状态应用分别使用哪种资源对象类型?

(1)区别:

有状态应用:需要持久化存储,保持唯一标识和稳定网络标识(如数据库)

无状态应用:不需要持久化存储,各实例可互换(如web前端)

(2)资源对象类型:

有状态:StatefulSet

无状态:Deployment

3、使用deployment 更新时,使用那个参数方便后续的回滚更新?

--record=true(记录历史版本)

4、查看deployment回滚的指令是?

kubectl rollout history deployment/<deployment-name>

5、deployment 指定回滚版本的命令是?

kubectl rollout undo deployment/<deployment-name> --to-revision=<revision-number>

6、deployment  任务,扩缩容可以通过哪些方式实现?

命令方式:kubectl scale deployment/<name> --replicas=<number>

修改yaml文件后apply

自动扩缩容:Horizontal Pod Autoscaler (HPA)

7、哪种services 不会产生集群ip(clusterip)?

Headless Service (ClusterIP设置为None)

8、查看statefulset 的指令是?

kubectl get statefulset

或查看详细信息:kubectl describe statefulset/<name>

9、deployment 和statefulset 创建pod 时,那个是有序创建的?

StatefulSet(按顺序创建,从0开始编号)

10、statefulset 级联删除和非级联删除的区别?

级联删除(默认):删除StatefulSet时同时删除所有Pod

非级联删除:kubectl delete statefulset/<name> --cascade=false,只删除StatefulSet对象,保留Pod

11、daemonset  的作用?

确保集群中每个节点(或符合选择器的节点)都运行一个Pod副本(常用于日志收集、监控等系统级应用)

12、k8s中,定义节点,pod 标签的方法,查询标签的方法,使用标签的方法,删除标签的方法?

(1)定义/添加标签:

节点:kubectl label nodes <node-name> <label-key>=<label-value>

Pod:在metadata.labels中定义或kubectl label pods <pod-name> <label-key>=<label-value>

(2)查询标签:

kubectl get <resource> --show-labels

或筛选:kubectl get <resource> -l <label-key>=<label-value>

(3)使用标签:通过selector字段在Service/Deployment等资源中匹配

(4)删除标签:

kubectl label <resource> <resource-name> <label-key>-

13、k8s 定义的yaml 文件中,筛选节点标签和筛选pod标签使用的关键字是什么?

筛选节点标签:nodeSelector

筛选Pod标签:selector.matchLabels

14、简述污点,容忍度,亲和性的作用;

污点(Taint):是节点上设置的属性,用于阻止某些Pod被调度到该节点上。它相当于节点的"排斥标签",确保只有特定的Pod才能在该节点上运行。

容忍度(Toleration):是Pod的属性,允许Pod被调度到带有匹配污点的节点上。它相当于Pod的"抗排斥能力"。

亲和性(Affinity):是Pod的属性,用于控制Pod应该被调度到哪些节点上(节点亲和性)或与其他Pod如何共同调度(Pod间亲和性/反亲和性)。它使调度更符合用户期望的拓扑结构。

15、污点的模式有几种,分别是什么,实现什么功能?

污点有三种模式:

(1)NoSchedule:除非Pod具有匹配的容忍度,否则不会被调度到该节点(新Pod不会调度过来)

(2)PreferNoSchedule:调度器尽量避免将Pod调度到该节点,但不是强制要求(软性限制)

(3)NoExecute:不仅影响调度,还会影响已运行的Pod。如果节点上已有Pod不能容忍该污点,则会被驱逐(已运行的Pod也可能被驱逐)

16、怎么查看节点是否设置有污点;

kubectl describe node <节点名称> | grep Taints

17、亲和力分成那几种类型?

亲和力主要分为两种类型:

(1)节点亲和性(Node Affinity):定义Pod希望被调度到哪些节点上

(2)Pod间亲和性/反亲和性(Pod Affinity/Anti-affinity):

Pod亲和性:定义Pod希望与哪些其他Pod在同一节点或同一拓扑域

Pod反亲和性:定义Pod不希望与哪些其他Pod在同一节点或同一拓扑域

18、软亲和力和硬亲和力的区别?

主要区别在于强制性与非强制性,以及调度失败时的处理方式。

(1)硬亲和力(requiredDuringSchedulingIgnoredDuringExecution):

是强制性要求,调度器必须满足这些条件才能调度Pod

如果没有节点满足条件,Pod将保持未调度状态

适用于严格的调度要求

(2)软亲和力(preferredDuringSchedulingIgnoredDuringExecution):

是偏好性要求,调度器会尽量满足但不强制

即使没有节点满足条件,Pod仍可能被调度

适用于优化调度但不影响最终结果的场景

19、简述pod 创建流程;

1)用户提交请求:通过 kubectl apply/create 或 API 提交 Pod 的 YAML/JSON 文件。

2)写入存储:APIServer 将 Pod 配置写入 etcd。

3)调度:Scheduler 根据资源、节点选择规则等,将 Pod 绑定到合适节点,并更新 etcd。

4)节点创建:目标节点的 kubelet 监听到新 Pod,调用容器运行时(如 Docker)创建容器。

5)状态上报:kubelet 监控 Pod 状态,并持续同步给 APIServer。

20、通过那个指令 可以查看定义 pod 可以用到的参数;

kubectl explain pod

21、简述常见的pod状态有哪些?

Pending:调度中或镜像下载中。

Running:至少一个容器在运行。

Succeeded:所有容器成功退出(一次性任务)。

Failed:至少一个容器异常退出(非零状态)。

CrashLoopBackOff:容器崩溃后等待重启。

Unknown:节点失联,状态无法上报。

22、pod 镜像拉取策略分别是什么,并说明;

Always:总是拉取最新镜像(默认策略,当标签为 latest 或未指定时)。

IfNotPresent:本地不存在时才拉取(节省资源)。

Never:仅使用本地镜像(需提前手动拉取)。

23、pod 创建时,定义的yaml 有问题,导致启动容器失败,但是失败后,容器并没有重启,请问该容器的重启策略是那个?

该容器的重启策略是Never

Pod 的重启策略(restartPolicy)有三种:

Always(失败必重启,默认策略)。

OnFailure(非零退出才重启)。

Never(永不重启,题目描述符合此情况)。

24、pod探针分为那几种?

Startup Probe:检测应用是否启动完成(适合慢启动应用)。

Liveness Probe:检查容器是否存活(失败会重启容器)。

Readiness Probe:检查是否就绪(失败会从 Service 流量中剔除)。

25、pod 生命周期的流程是什么?请简述

(1)初始化阶段(如果有 Init 容器):按顺序运行初始化任务,全部成功才进主容器。

(2)启动阶段:

主容器启动,执行 postStart 钩子(如果有)。

探针开始检测(如 startupProbe 确认启动完成)。

(3)运行阶段:

通过 readinessProbe 接收流量,livenessProbe 防止死锁。

(4)终止阶段:

收到删除命令后,执行 preStop 钩子(如果有)。

发送 SIGTERM 信号,等待优雅终止(超时则强制 SIGKILL)。


网站公告

今日签到

点亮在社区的每一天
去签到