当前位置: 首页 > news >正文

第二章:Docker及Kubernetes基础 重难点详解_《再也不踩坑的kubernetes实战指南》

第二章 Docker及Kubernetes基础 重难点详解


一、Docker基础核心知识点
1. Docker架构原理
容器运行时
cgroups
namespaces
资源限制
容器实例
隔离环境
宿主机
Docker Daemon
镜像仓库
网络/存储
  • 关键点
    • 镜像分层存储:镜像由只读层叠加,容器运行时添加可写层
    • 联合文件系统: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. 容器生命周期管理

常用命令流程图

docker pull
docker run
docker exec
docker logs
docker stop
docker rm

二、Kubernetes核心架构
1. Master节点组件交互
User API Server etcd Controller Manager Scheduler Node kubectl命令 存储集群状态 触发控制循环 调度新Pod 绑定节点 通过kubelet管理Pod User API Server etcd Controller Manager Scheduler Node
  • 核心组件
    • API Server:唯一与etcd通信的组件
    • Controller Manager:节点/副本/端点等控制器
    • Scheduler:根据资源请求调度Pod
2. Node节点关键服务
CRI
CNI
CSI
iptables/IPVS
kubelet
Docker
网络插件
存储插件
Kube-Proxy
Service流量转发

三、核心资源对象详解
1. Pod生命周期
调度成功
容器退出
容器异常
调度失败
Pending
Running
Succeeded
Failed
Unknown
2. Deployment滚动更新机制
Deployment
ReplicaSet v1
ReplicaSet v2
Pod1-v1
Pod2-v1
Pod1-v2
Pod2-v2
  • 更新策略
    • RollingUpdate(默认):逐步替换旧Pod
    • Recreate:先删除全部旧Pod再创建新

四、关键概念对比分析
1. Service类型对比
类型访问方式典型场景
ClusterIP内部集群IP微服务间通信
NodePort节点IP+端口开发测试环境
LoadBalancer云厂商LB生产环境公网暴露
ExternalNameCNAME记录集成外部服务
2. ConfigMap vs Secret

在这里插入图片描述


五、常见问题排查思路
1. Pod启动故障排查流程
ImagePullBackOff
CrashLoopBackOff
Pending
ContainerCreating
Pod状态异常
查看Events
检查镜像名称/权限
查看容器日志
检查资源配额
检查存储卷挂载
2. Service无法访问检查步骤
  1. 确认Endpoints是否正常生成
  2. 检查kube-proxy是否生成iptables规则
  3. 验证CoreDNS解析是否正常
  4. 测试直接访问Pod IP+Port
  5. 检查网络策略(NetworkPolicy)

通过结合架构图、流程图和对比表格,可以帮助深入理解Kubernetes的核心机制。建议在学习时:

  1. 使用kubectl explain命令查看字段定义
  2. 通过--v=9参数查看API调用详情
  3. 定期使用kube-bench进行安全检查
  4. 使用k9s等可视化工具观察资源状态

Docker及Kubernetes基础多选题


  1. 关于Dockerfile指令,以下哪些描述是正确的?
    A. COPY指令可以复制宿主机目录到镜像中
    B. ENV指令设置的变量只能在构建阶段使用
    C. EXPOSE指令会实际发布容器的端口
    D. RUN指令会在构建镜像时执行命令
    E. CMD指令可以被docker run的参数覆盖

  2. Kubernetes中关于Pod的描述,哪些是正确的?
    A. Pod是Kubernetes中最小的部署单元
    B. 一个Pod可以包含多个容器
    C. Pod中的容器共享网络命名空间
    D. Pod一旦创建就无法被更新
    E. Pod的IP地址在生命周期内始终不变

  3. 关于Kubernetes的Label和Selector,正确的描述是?
    A. Label用于资源分类
    B. Selector用于过滤资源
    C. 同一个资源只能有一个Label
    D. MatchLabels要求所有标签精确匹配
    E. Label的键最长不能超过32字符

  4. 哪些是Kubernetes支持的Service类型?
    A. ClusterIP
    B. NodePort
    C. ExternalName
    D. HostNetwork
    E. LoadBalancer

  5. 关于PersistentVolume(PV)的描述,正确的有:
    A. PV是集群范围的资源
    B. PV必须手动创建
    C. StorageClass可以动态创建PV
    D. PV只能通过NFS实现
    E. PVC是命名空间级别的资源

  6. Kubernetes中关于RBAC的组成,正确的选项是?
    A. Role定义命名空间权限
    B. ClusterRoleBinding用于集群范围授权
    C. ServiceAccount需要绑定到Pod
    D. RoleBinding可以跨命名空间授权
    E. Secret用于存储认证信息

  7. 哪些是HPA(Horizontal Pod Autoscaler)支持的指标类型?
    A. CPU使用率
    B. 内存使用量
    C. 网络吞吐量
    D. 自定义指标
    E. 磁盘IOPS

  8. 关于Kubernetes Ingress控制器的正确描述是:
    A. Ingress需要配合Service使用
    B. Nginx Ingress支持金丝雀发布
    C. Ingress可以替代Service
    D. 默认需要安装第三方控制器
    E. Ingress只能处理HTTP流量

  9. 哪些是StatefulSet的特性?
    A. 稳定的网络标识
    B. 自动滚动更新
    C. 无序的部署顺序
    D. 动态存储卷声明
    E. 适用于无状态应用

  10. 关于CronJob的描述,正确的有:
    A. 使用.spec.schedule定义时间
    B. 每个Job必须成功才会创建下一个
    C. concurrencyPolicy控制并发
    D. 只能运行一次性的任务
    E. 需要手动清理已完成的任务


答案与解析

  1. ADE
    解析:B错误,ENV设置的变量在容器运行时可用;C错误,EXPOSE只是声明端口,实际发布需要-p参数;A正确,COPY复制文件;D正确,RUN在构建时执行;E正确,CMD可被覆盖。

  2. BC
    解析:A错误,最小部署单元是ReplicaSet;D错误,Pod可以通过替换更新;E错误,Pod重启可能改变IP。

  3. ABD
    解析:C错误,资源可以有多个Label;E错误,Label键最长63字符。

  4. ABCE
    解析:D错误,HostNetwork是Pod网络模式,非Service类型。

  5. ACE
    解析:B错误,StorageClass可以自动创建PV;D错误,PV支持多种存储类型。

  6. ABCE
    解析:D错误,RoleBinding只在当前命名空间生效。

  7. ABD
    解析:HPA默认支持CPU/内存,自定义指标需要额外配置。

  8. ABD
    解析:C错误,Ingress需要Service;E错误,支持TCP/UDP。

  9. ABD
    解析:C错误,StatefulSet按顺序部署;E错误,适用于有状态应用。

  10. AC
    解析:B错误,失败也会创建新Job;D错误,CronJob是周期性任务;E错误,支持自动清理。

相关文章:

  • Simulink中Signal Builder在新版中找不到怎么办
  • leetcode12.整数转罗马数字
  • 从入门到进阶:React 图片轮播 Carousel 的奇妙世界!
  • linux查询inode使用率
  • Spring MVC 视图解析器(JSP、Thymeleaf、Freemarker、 JSON/HTML、Bean)详解
  • XML语法指南——从入门到精通
  • C#里使用WPF的MaterialDesignThemes
  • 回归预测 | Matlab实现RIME-CNN-GRU-Attention霜冰优化卷积门控循环单元注意力机制多变量回归预测
  • UM621系列模块安装校准及注意事项
  • 逍遥模拟器ARM过检测技术全解析
  • 使用mybatisplus-join自带的分页方法进行分页查询,不依靠pagehelper
  • 表 vs 物化视图:核心区别与选型指南
  • Asynchronous Advantage Actor-Critic(A3C)
  • Xcode为不同环境配置不同的环境变量
  • docker部署certimateSSL证书管理自动续签
  • SAP 一个屏幕多ALV 例子
  • RabbitMQ惰性队列的工作原理、消息持久化机制、同步刷盘的概念、延迟插件的使用方法
  • HBuilder运行uni-app程序报错【Error: listen EACCES: permission denied 0.0.0.0:5173】
  • 华为数字芯片机考2025合集5已校正
  • 性能 测试
  • 马鞍山网站建设制作/网络推广是做什么的
  • 做网站使用什么语言写/百度网盘搜索引擎入口官网
  • 西宁网站建设建站/磁力搜索引擎torrentkitty
  • 网站后台更新怎么做/中山排名推广
  • 昆明做网站建设找谁/google搜索引擎入口 镜像
  • 淄博网站开发选网泰/百度关键词排名代发