kubernetes(K8s)学习笔记:第七期核心知识点自测与详解

kubernetes(K8s)学习笔记:第七期核心知识点自测与详解 kubernetesK8s学习笔记第七期核心知识点自测与详解本自测解析针对 Kubernetes 系列第七期网络与服务暴露——Service kube-proxy Ingress的核心内容。共 10 题每题包含题目回顾、考查知识点、详细解答与分析帮助读者巩固 Kubernetes 网络与服务暴露的核心技能。文章索引kubernetesK8s学习笔记第七期网络与服务暴露更多自我检测系列欢迎浏览每日知识点小问答题目一Service 的核心作用与 Endpoints 机制题目Kubernetes 中 Service 的核心作用是什么Service 与 Endpoints 之间是什么关系当后端 Pod 发生变动时Endpoints 会自动更新吗考查知识点Service 概述与基本管理 —— 第七期 §1Service 与 Endpoints 的关系详细解答Service 的核心作用固定 IP 和 DNS 名称无论后端 Pod 如何变化Service 的 IP 和 DNS 保持不变负载均衡将流量分发到多个后端 Pod服务发现通过 DNS 或环境变量让应用自动发现服务Service 与 Endpoints 的关系Service 通过标签选择器selector匹配后端 Pod被匹配的 Pod IP 和端口会记录在Endpoints对象中Endpoints 是 Service 和 Pod 之间的桥梁——Service 不直接连接 Pod而是通过 Endpoints 获取所有匹配 Pod 的地址列表自动更新机制✅ 当后端 Pod 发生变动创建/删除/重启时Endpoints会自动更新Service 无需任何配置变更即可感知新 Pod这一机制是 Kubernetes 服务发现的核心基础验证命令kubectl get endpoints kubectl describe svc web题目二Service 的三种发现方式题目Kubernetes 中 Pod 发现 Service 有哪三种方式各有什么优缺点生产环境推荐使用哪种考查知识点Service 发现 —— 第七期 §2详细解答发现方式说明优点缺点IP 访问直接使用 Service 的 ClusterIP简单直接IP 可能变化硬编码不推荐环境变量Pod 启动时自动注入 Service 信息自动注入使用方便依赖创建顺序Service 必须在 Pod 之前创建DNS 访问通过 CoreDNS 解析 Service 名称灵活、动态、无需依赖顺序需要 CoreDNS 组件生产环境推荐DNS 访问方式原因不依赖创建顺序支持跨命名空间访问service.namespace.svc.cluster.local同命名空间可直接使用 Service 名称动态更新Pod 重启后无需修改配置DNS 记录格式service-name.namespace.svc.cluster.local验证命令kubectl runtest--rm-it--imagebusybox --nslookupweb题目三五种 Service 类型的区别题目Kubernetes Service 支持哪五种类型请分别说明其特点和适用场景。NodePort 的三个端口nodePort / port / targetPort分别是什么含义考查知识点Service 类型 —— 第七期 §3详细解答类型说明访问范围适用场景ClusterIP默认集群内部 IP仅集群内内部服务通信NodePort节点端口映射集群内外节点 IP端口简单外部暴露、测试环境LoadBalancer外部负载均衡器 IP集群内外LB IP生产环境外部暴露ExternalNameDNS CNAME 映射集群内DNS 级别外部服务别名HeadlessClusterIPNone集群内直接访问 Pod IPStatefulSet 直接访问 PodNodePort 三个端口的含义端口含义示例nodePort节点上监听的端口用户访问入口31917portClusterIP 上监听的端口8080targetPortPod 监听的端口80访问方式# 通过任意节点 IP nodePort 访问curlhttp://10.1.8.30:31917curlhttp://10.1.8.31:31917题目四会话保持sessionAffinity题目如何让来自同一客户端的请求始终访问同一个后端 Pod请写出配置命令并说明原理。考查知识点Service 高级特性 —— 第七期 §4.1会话保持详细解答配置方法# 启用会话保持基于客户端 IPkubectl patch svc web-p{spec:{sessionAffinity:ClientIP}}YAML 配置apiVersion:v1kind:Servicemetadata:name:webspec:sessionAffinity:ClientIPsessionAffinityConfig:clientIP:timeoutSeconds:7200# 2 小时selector:app:webports:-port:80工作原理Service 记录客户端 IP 和 Pod 的对应关系同一客户端的后续请求继续转发给同一个 Pod默认超时时间为 10800 秒3 小时验证# 启用前请求轮询分发foriin{1..20};docurl-s10.111.90.183;done|sort|uniq-c10web-6db76cb4fc-5gbx210web-6db76cb4fc-b8f7l# 启用后所有请求发往同一个 Podkubectl patch svc web-p{spec:{sessionAffinity:ClientIP}}foriin{1..20};docurl-s10.111.90.183;done|sort|uniq-c20web-6db76cb4fc-5gbx2与 IPVS 的关系Service 配置sessionAffinity: ClientIP→ kube-proxy 自动使用 IPVS 的SH源地址哈希算法题目五金丝雀发布的流量控制原理题目如何利用 Service 的标签选择器实现金丝雀发布请说明核心原理并写出关键命令。考查知识点Service 高级特性 —— 第七期 §4.2金丝雀发布详细解答核心原理同一个 Service 匹配多个 Deployment它们有相同的app和tier标签但track不同通过调整不同 Deployment 的副本数来控制流量比例新版本金丝雀与旧版本稳定版同时运行共享同一个 Service关键步骤# 1. 准备 ConfigMap不同版本的页面内容echohello nginx 1.28web/index28.htmlechohello nginx 1.29web/index29.html kubectl create configmap web --from-file./web# 2. 部署稳定版track: stablekubectl apply-fwebapp-1.28.yaml# 3. 部署金丝雀版track: canarykubectl apply-fwebapp-1.29.yaml# 4. 创建 Service匹配 app: web, tier: frontendkubectl apply-fwebapp-svc.yaml# 5. 调整副本数控制流量比例kubectl scale deployment web-28--replicas8# 稳定版 8 个副本kubectl scale deployment web-29--replicas2# 金丝雀版 2 个副本# 6. 验证流量比例foriin{1..50};docurl-s10.98.235.36;done|sort|uniq-c39hello nginx1.2811hello nginx1.29题目六kube-proxy 的 iptables 模式工作原理题目请简述 kube-proxy 在 iptables 模式下的工作原理并画出流量转发链路。该模式存在什么缺点考查知识点kube-proxy 原理 —— 第七期 §5.2iptables 模式详细解答iptables 模式工作原理kube-proxy 监听 Service 和 Endpoint 变化在宿主机内核中动态生成 iptables 规则链流量进入时通过 netfilter 框架逐条匹配规则实现 DNAT目标地址转换和负载均衡流量转发链路客户端访问 ClusterIP ↓ PREROUTING 链 (nat 表) ↓ KUBE-SERVICES服务总入口链 ↓ 匹配目的 IP ClusterIP KUBE-SVC-XXXService 专属调度链 ├── SNAT 标记非 Pod 网段流量 ├── 概率 1/3 → KUBE-SEP-A → DNAT → Pod 1 ├── 概率 1/3 → KUBE-SEP-B → DNAT → Pod 2 └── 概率 1/3 → KUBE-SEP-C → DNAT → Pod 3缺点每增加一个 Service 或 Endpoint都会新增/修改 iptables 规则服务数超过 1000 时规则链膨胀CPU 占用飙升规则查找是O(n) 线性复杂度iptables 模式适合小规模集群服务数 1000题目七kube-proxy 的 IPVS 模式题目IPVS 模式相比 iptables 模式有哪些优势如何将 kube-proxy 从 iptables 模式切换到 IPVS 模式IPVS 支持哪些调度算法考查知识点kube-proxy 原理 —— 第七期 §5.3IPVS 模式详细解答IPVS 模式优势对比项iptablesIPVS规则查找O(n) 线性O(1) 哈希服务数上限~1000100000规则同步延迟随规则数增加恒定调度算法仅随机概率8 种算法切换步骤# 1. 修改 kube-proxy ConfigMapkubectl edit configmap-nkube-system kube-proxy# 将 mode: 改为 mode: ipvs# 2. 重启 kube-proxykubectl rollout restart daemonset-nkube-system kube-proxy# 3. 验证模式kubectl logs-nkube-system kube-proxy-72b7j|grepUsing ipvsIPVS 支持的调度算法算法说明rr轮询默认wrr加权轮询lc最少连接sh源地址哈希sed最短预期延迟nq最少队列验证 IPVS 规则ipvsadm-Lnt10.103.143.120:80题目八Ingress 与 Service 的关系题目Ingress 和 Service 有什么区别为什么要使用 Ingress 而不是直接用 NodePort 或 LoadBalancer考查知识点Ingress 概述 —— 第七期 §6.1Ingress vs Service详细解答Ingress vs Service对比项ServiceNodePort/LoadBalancerIngress协议TCP/UDPHTTP/HTTPS7 层路由能力仅端口映射域名、路径、SSL 等成本每个服务一个 LB IP多个服务共享一个 LB IP为什么使用 Ingress降低成本多个服务共享一个负载均衡器 IP而不是每个服务单独一个 LB7 层路由支持基于域名和路径的细粒度路由SSL/TLS 终止统一管理证书高级功能支持限流、重写、跨域等Ingress 架构客户端 → Ingress Controller (Nginx) → Service → PodIngress 资源定义路由规则YAMLIngress Controller负责执行路由规则如 ingress-nginx题目九Ingress 路径重写rewrite-target题目前端访问/webapp01/api/hello但后端只识别/api/hello需要剥离/webapp01前缀。请写出对应的 Ingress YAML 配置。考查知识点Ingress 规则实践 —— 第七期 §7.2路径重写详细解答apiVersion:networking.k8s.io/v1kind:Ingressmetadata:name:rewrite-ingressannotations:nginx.ingress.kubernetes.io/use-regex:truenginx.ingress.kubernetes.io/rewrite-target:/$1spec:ingressClassName:nginxrules:-host:www.whisky.cloudhttp:paths:-path:/webapp01/(.*)pathType:ImplementationSpecificbackend:service:name:webapp01port:number:80关键注解说明注解值作用use-regextrue启用正则表达式匹配rewrite-target/$1将正则表达式中第一个括号匹配的内容作为新路径效果请求/webapp01/api/hello→ 重写为/api/hello转发给后端题目十Ingress 生产级注解实践题目在生产环境中Ingress 常用的安全与防护配置有哪些请写出以下配置的 YAML 注解① 强制 HTTPS 跳转 ② 单 IP 限流20 RPS③ IP 白名单。考查知识点Ingress 规则实践 —— 第七期 §7.2-7.3生产级注解详细解答完整 YAML 示例apiVersion:networking.k8s.io/v1kind:Ingressmetadata:name:production-ingressannotations:# ① 强制 HTTPS 跳转nginx.ingress.kubernetes.io/ssl-redirect:truenginx.ingress.kubernetes.io/force-ssl-redirect:true# ② 单 IP 限流20 RPS50 并发连接nginx.ingress.kubernetes.io/limit-rps:20nginx.ingress.kubernetes.io/limit-connections:50# ③ IP 白名单nginx.ingress.kubernetes.io/whitelist-source-range:10.1.8.0/24,127.0.0.1/32# ④ 自定义超时可选nginx.ingress.kubernetes.io/proxy-read-timeout:60nginx.ingress.kubernetes.io/proxy-connect-timeout:10spec:ingressClassName:nginxtls:-hosts:-www.whisky.cloudsecretName:www-tlsrules:-host:www.whisky.cloudhttp:paths:-path:/pathType:Prefixbackend:service:name:webapp01port:number:80生产常用注解速查表注解作用示例值ssl-redirect80 端口强制跳转 HTTPStruelimit-rps单 IP 每秒请求数限制20limit-connections单 IP 最大并发连接数50whitelist-source-rangeIP 白名单10.1.8.0/24,127.0.0.1/32enable-cors启用跨域trueproxy-read-timeout读取超时60附知识点对应总表题号主要考查知识点对应笔记章节1第七期 §1 Service 概述与 Endpoints2第七期 §2 Service 发现IP/环境变量/DNS3第七期 §3 Service 五种类型与 NodePort4第七期 §4.1 会话保持sessionAffinity5第七期 §4.2 金丝雀发布6第七期 §5.2 kube-proxy iptables 模式7第七期 §5.3 kube-proxy IPVS 模式8第七期 §6.1 Ingress vs Service9第七期 §7.2 路径重写rewrite-target10第七期 §7.3 生产高频注解速查表学习建议对于答错的题目请回看第七期对应章节并动手在集群环境中执行相关命令。Service 和 Ingress 是 Kubernetes 对外提供服务的关键组件熟练掌握其配置是生产运维的基本要求。— Compiled and Authored by Whisky — July 1 st, 2026