K8S集群管理(2)

发布于:2025-09-11 ⋅ 阅读:(23) ⋅ 点赞:(0)

目录

1.什么是Pod的根容器?

2.解释Pod的生命周期。

3.Init类型容器有什么特点,主要用途?

4.Sidecar类型容器和Init容器的区别在哪?

5.什么是静态Pod?

6.说明K8s控制器的作用?

7.什么是ReplicaSet,说明它的主要用途。

8.Deployment控制器是如何工作的,举例说明其常见用途。

9.解释DaemonSet,列举其使用场景。

10.什么是StatefulSet,其主要作用是什么?

11.说明Job与CronJob的功能。

12.Kubernetes如何在集群的Pod之间提供网络服务?

13.解释iptables和IPVS代理模式Service的区别。

14.举例说明ClusterIP类型Service的用法。

15.举例说明NodePort类型Service的用法。

16.举例说明Headless类型Service的用法。

17.详细说明Ingress的实现原理和它所实现的功能。

1.什么是Pod的根容器?

Pod 的根容器指的是 Pause 容器,它是每个 Pod 的基础容器,由 Kubernetes 自动创建。

2.解释Pod的生命周期。

Pod的生命周期包括以下阶段:

Pending:Pod 已被创建但未被调度到节点,可能等待资源分配或镜像下载。

Running:Pod 已调度到节点,所有 Init 容器成功完成,至少一个主容器正在运行。

Succeeded:所有容器正常终止,不再重启。

Failed:至少一个容器以非零状态终止,且无法通过重启策略恢复。

Unknown:Kubernetes 无法获取 Pod 的状态(通常因节点通信失败)。

3.Init类型容器有什么特点,主要用途?

特点:

执行顺序:在主容器启动前按顺序执行,必须全部成功。

不可重启性:若 Init 容器失败,Pod 会进入 Failed 状态(除非restartPolicy为Always)。

轻量级工具:通常包含主镜像中没有的工具(如wget、nslookup)。

主要用途:

依赖检查:例如等待数据库服务就绪。

环境准备:生成配置文件、初始化数据库 schema。

安全隔离:通过独立镜像避免将敏感工具包含在主镜像中。

4.Sidecar类型容器和Init容器的区别在哪?

特性

Init 容器

Sidecar 容器

执行时机

主容器启动前按顺序执行完毕

与主容器并行运行,直至 Pod 终止

功能

初始化任务(如依赖检查、数据准备)

辅助功能(如日志收集、代理)

探针支持

不支持livenessProbe、readinessProbe

支持所有探针类型

生命周期

一次性执行,不与主容器共享运行时

与主容器共享网络和存储,持续协作

5.什么是静态Pod?

静态 Pod 是由kubelet直接管理的 Pod,无需通过 Kubernetes API Server。

6.说明K8s控制器的作用?

控制器通过控制回路(Control Loop) 确保集群状态与用户定义的期望状态一致。其核心功能包括:

自动修复:替换故障 Pod,保持副本数稳定。

弹性伸缩:根据负载自动调整 Pod 数量。

版本管理:支持滚动更新和回滚。

资源调度:将 Pod 分配到合适的节点。

7.什么是ReplicaSet,说明它的主要用途。

ReplicaSet 是 Kubernetes 的基础控制器,用于维护指定数量的 Pod 副本。其核心用途包括:

高可用性:当节点故障或 Pod 崩溃时,自动创建新副本。

水平扩展:通过调整replicas字段增加或减少 Pod 数量。

标签选择器:通过selector匹配 Pod 标签,实现精准管理。

8.Deployment控制器是如何工作的,举例说明其常见用途。

Deployment 通过创建和管理 ReplicaSet 来实现 Pod 的滚动更新。更新时,它会逐步替换旧 Pod 为新 Pod,确保服务不中断。关键步骤包括:

创建新的 ReplicaSet,指定新版本镜像。

按比例逐步增加新 Pod,同时减少旧 Pod。

监控更新过程,若出现问题自动回滚。

常见用途:

应用发布:例如将 Web 应用从 v1 升级到 v2。

回滚管理:快速回退到上一稳定版本。

9.解释DaemonSet,列举其使用场景。

DaemonSet 确保每个节点(或匹配标签的节点)运行一个 Pod 副本。典型场景包括:

日志收集:在每个节点部署 Fluentd,收集本地日志。

监控代理:运行 Prometheus Node Exporter,采集节点指标。

网络插件:部署 Calico 或 Flannel 的网络代理,实现 Pod 间通信。

安全代理:运行节点级防火墙或入侵检测系统。

10.什么是StatefulSet,其主要作用是什么?

StatefulSet 用于管理有状态应用,如数据库和分布式系统。其核心作用包括:

稳定标识:为每个 Pod 分配唯一且固定的 DNS 名称(如web-0.web)。

持久化存储:通过 PersistentVolumeClaim 为每个 Pod 提供独立存储。

顺序管理:Pod 按顺序启动、扩展和终止,确保数据一致性。

滚动更新:支持按顺序更新 Pod,避免脑裂等问题。

11.说明Job与CronJob的功能。

Job:用于执行一次性任务,例如批量数据处理或备份。

CronJob:定时执行 Job,例如每日报表生成。

12.Kubernetes如何在集群的Pod之间提供网络服务?

Kubernetes 通过以下机制实现 Pod 间通信:

Pod 网络模型:每个 Pod 拥有独立 IP,集群内 Pod 可直接通过 IP 通信(需 CNI 插件支持,如 Calico、Flannel)。

Service 抽象:通过 ClusterIP、NodePort 等类型的 Service,为 Pod 提供稳定的访问入口。

DNS 服务:CoreDNS 自动为 Service 和 Pod 生成 DNS 记录,支持my-service.my-namespace.svc.cluster.local格式的域名解析。

13.解释iptables和IPVS代理模式Service的区别。

特性

iptables

IPVS

原理

基于 Linux 内核的 Netfilter 规则匹配

基于 IPVS(IP Virtual Server)框架

性能

低吞吐量,高延迟(规则匹配逐包处理)

高吞吐量,低延迟(基于哈希表转发)

功能

支持基本负载均衡和端口映射

支持更复杂的调度算法(如轮询、加权最小连接)

适用场景

小型集群或简单负载均衡需求

大型集群或高流量场景

14.举例说明ClusterIP类型Service的用法。

ClusterIP 为 Service 分配一个集群内部 IP,仅在集群内可见。典型用法:

内部服务通信:微服务架构中,前端应用通过 ClusterIP 访问后端 API 服务。

无头服务:结合 Headless Service(clusterIP: None)直接访问 Pod IP。

15.举例说明NodePort类型Service的用法。

NodePort 在每个节点的指定端口(默认 30000-32767)暴露服务,允许外部访问。典型用法:

临时测试:在开发环境中通过节点 IP 和端口直接访问服务。

无负载均衡器时:作为公有云负载均衡器的替代方案。

16.举例说明Headless类型Service的用法。

Headless Service(clusterIP: None)不分配 ClusterIP,直接返回后端 Pod 的 IP 列表。典型用法:

有状态应用:StatefulSet 通过 Headless Service 为每个 Pod 分配唯一 DNS 名称(如web-0.web)。

服务发现:客户端需要直接访问特定 Pod(如数据库主从节点)。

17.详细说明Ingress的实现原理和它所实现的功能。

实现原理:

Ingress 通过负载均衡器(如 Nginx、Traefik)将外部流量路由到集群内的 Service。其核心组件包括:

Ingress Controller:运行在集群节点上,监听 Ingress 规则并配置负载均衡器。

Ingress 资源:定义路由规则,如基于域名、路径的转发策略。

功能:

域名路由:支持example.com和api.example.com分别映射到不同 Service。

路径路由:/app路径转发到 App Service,/admin路径转发到 Admin Service。

TLS 终止:在 Ingress 层解密 HTTPS 流量,保护后端服务。

负载均衡:支持轮询、最少连接数等调度算法。


网站公告

今日签到

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