K8S集群管理(2)

目录

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 流量,保护后端服务。

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

相关推荐
遇见火星1 小时前
Docker入门:快速部署你的第一个Web应用
前端·docker·容器
阿里云云原生2 小时前
移动端性能监控探索:iOS RUM SDK 技术架构与实践
云原生
阿里云云原生2 小时前
Nacos 3.1.0 正式发布,支持 A2A 注册中心与 MCP 注册协议增强
微服务·云原生
阿里云云原生3 小时前
Qoder 上线提示词增强功能,将开发者从“提示词”的负担中解放出来
云原生
suknna3 小时前
通过命令模拟pod创建
kubernetes
维诺菌3 小时前
k8s java应用pod内存占用过高问题排查
java·jvm·云原生·容器·性能优化·kubernetes
回忆是昨天里的海3 小时前
k8s安装-kubeadm join,将工作节点加入k8s集群
java·服务器·kubernetes
浪飘3 小时前
k8s device plugin
java·docker·kubernetes
冬夜戏雪3 小时前
milvus容器restart不成功,但docker仍在running问题排查
docker·容器·milvus
m0_579146654 小时前
docker desktop的容器间通信
docker·容器·php