第二章:Docker及Kubernetes基础 重难点详解_《再也不踩坑的kubernetes实战指南》
第二章 Docker及Kubernetes基础 重难点详解
一、Docker基础核心知识点
1. Docker架构原理
- 关键点:
- 镜像分层存储:镜像由只读层叠加,容器运行时添加可写层
- 联合文件系统:AUFS/Overlay2实现文件系统分层
- 资源隔离:通过cgroups限制CPU/内存,namespaces隔离进程/网络
2. Dockerfile最佳实践
# 多阶段构建示例(减少镜像体积)
FROM maven:3.6-jdk-11 AS builder
WORKDIR /app
COPY . .
RUN mvn package -DskipTests
FROM openjdk:11-jre-slim
COPY --from=builder /app/target/*.jar /app.jar
CMD ["java", "-jar", "/app.jar"]
- 重点技巧:
- 使用
.dockerignore
排除无关文件 - 合并RUN指令减少镜像层数
- 固定基础镜像版本(避免使用latest)
- 使用
3. 容器生命周期管理
常用命令流程图
二、Kubernetes核心架构
1. Master节点组件交互
- 核心组件:
- API Server:唯一与etcd通信的组件
- Controller Manager:节点/副本/端点等控制器
- Scheduler:根据资源请求调度Pod
2. Node节点关键服务
三、核心资源对象详解
1. Pod生命周期
2. Deployment滚动更新机制
- 更新策略:
- RollingUpdate(默认):逐步替换旧Pod
- Recreate:先删除全部旧Pod再创建新
四、关键概念对比分析
1. Service类型对比
类型 | 访问方式 | 典型场景 |
---|---|---|
ClusterIP | 内部集群IP | 微服务间通信 |
NodePort | 节点IP+端口 | 开发测试环境 |
LoadBalancer | 云厂商LB | 生产环境公网暴露 |
ExternalName | CNAME记录 | 集成外部服务 |
2. ConfigMap vs Secret
五、常见问题排查思路
1. Pod启动故障排查流程
2. Service无法访问检查步骤
- 确认Endpoints是否正常生成
- 检查kube-proxy是否生成iptables规则
- 验证CoreDNS解析是否正常
- 测试直接访问Pod IP+Port
- 检查网络策略(NetworkPolicy)
通过结合架构图、流程图和对比表格,可以帮助深入理解Kubernetes的核心机制。建议在学习时:
- 使用
kubectl explain
命令查看字段定义 - 通过
--v=9
参数查看API调用详情 - 定期使用kube-bench进行安全检查
- 使用k9s等可视化工具观察资源状态
Docker及Kubernetes基础多选题
-
关于Dockerfile指令,以下哪些描述是正确的?
A. COPY指令可以复制宿主机目录到镜像中
B. ENV指令设置的变量只能在构建阶段使用
C. EXPOSE指令会实际发布容器的端口
D. RUN指令会在构建镜像时执行命令
E. CMD指令可以被docker run的参数覆盖 -
Kubernetes中关于Pod的描述,哪些是正确的?
A. Pod是Kubernetes中最小的部署单元
B. 一个Pod可以包含多个容器
C. Pod中的容器共享网络命名空间
D. Pod一旦创建就无法被更新
E. Pod的IP地址在生命周期内始终不变 -
关于Kubernetes的Label和Selector,正确的描述是?
A. Label用于资源分类
B. Selector用于过滤资源
C. 同一个资源只能有一个Label
D. MatchLabels要求所有标签精确匹配
E. Label的键最长不能超过32字符 -
哪些是Kubernetes支持的Service类型?
A. ClusterIP
B. NodePort
C. ExternalName
D. HostNetwork
E. LoadBalancer -
关于PersistentVolume(PV)的描述,正确的有:
A. PV是集群范围的资源
B. PV必须手动创建
C. StorageClass可以动态创建PV
D. PV只能通过NFS实现
E. PVC是命名空间级别的资源 -
Kubernetes中关于RBAC的组成,正确的选项是?
A. Role定义命名空间权限
B. ClusterRoleBinding用于集群范围授权
C. ServiceAccount需要绑定到Pod
D. RoleBinding可以跨命名空间授权
E. Secret用于存储认证信息 -
哪些是HPA(Horizontal Pod Autoscaler)支持的指标类型?
A. CPU使用率
B. 内存使用量
C. 网络吞吐量
D. 自定义指标
E. 磁盘IOPS -
关于Kubernetes Ingress控制器的正确描述是:
A. Ingress需要配合Service使用
B. Nginx Ingress支持金丝雀发布
C. Ingress可以替代Service
D. 默认需要安装第三方控制器
E. Ingress只能处理HTTP流量 -
哪些是StatefulSet的特性?
A. 稳定的网络标识
B. 自动滚动更新
C. 无序的部署顺序
D. 动态存储卷声明
E. 适用于无状态应用 -
关于CronJob的描述,正确的有:
A. 使用.spec.schedule定义时间
B. 每个Job必须成功才会创建下一个
C. concurrencyPolicy控制并发
D. 只能运行一次性的任务
E. 需要手动清理已完成的任务
答案与解析
-
ADE
解析:B错误,ENV设置的变量在容器运行时可用;C错误,EXPOSE只是声明端口,实际发布需要-p参数;A正确,COPY复制文件;D正确,RUN在构建时执行;E正确,CMD可被覆盖。 -
BC
解析:A错误,最小部署单元是ReplicaSet;D错误,Pod可以通过替换更新;E错误,Pod重启可能改变IP。 -
ABD
解析:C错误,资源可以有多个Label;E错误,Label键最长63字符。 -
ABCE
解析:D错误,HostNetwork是Pod网络模式,非Service类型。 -
ACE
解析:B错误,StorageClass可以自动创建PV;D错误,PV支持多种存储类型。 -
ABCE
解析:D错误,RoleBinding只在当前命名空间生效。 -
ABD
解析:HPA默认支持CPU/内存,自定义指标需要额外配置。 -
ABD
解析:C错误,Ingress需要Service;E错误,支持TCP/UDP。 -
ABD
解析:C错误,StatefulSet按顺序部署;E错误,适用于有状态应用。 -
AC
解析:B错误,失败也会创建新Job;D错误,CronJob是周期性任务;E错误,支持自动清理。