docker、k8s 面试总结
发布网友
发布时间:2024-10-06 19:16
我来回答
共1个回答
热心网友
时间:2024-10-06 20:01
Docker是一个基于容器技术实现的生态系统,利用Linux Container(LXC)技术,通过内核提供的Namespace和Cgroup机制实现应用程序隔离及物理资源分配。它将容器视为打包格式,将所需依赖库、运行时环境等集合在一起,实现一次构建,到处运行。Docker将开发与运维融合,让开发人员能轻松构建、打包、推送和运行应用程序,模块化发布降低运维管理难度。
镜像是一个包含操作系统、程序、库、资源和配置文件的模板文件,提供容器运行时所需的所有内容,并包含配置参数如匿名卷、环境变量、用户等。镜像分层,便于复用不同粒度的镜像文件。
容器是镜像的运行实例,通过镜像构建块搭建隔离、拥有完整包的应用程序。每个容器标准化,确保在不同机器上具有相同行为。
Docker对数据持久化采用数据卷,数据不随容器结束丢失,通过宿主机目录挂载实现。
Docker底层技术包括Namespace(资源隔离)、CGroups(资源限制)、UnionFS(联合文件系统)。
容器与虚拟机提供环境隔离,不同之处在于容器共享操作系统内核,而虚拟机完全独立操作系统。
Docker常用命令涉及容器生命周期管理、容器操作、镜像仓库和本地镜像管理。
k8s是容器管理平台,负责编排、管理、调度容器,支持故障转移/重启、自动扩缩容、服务发现/负载均衡、配置管理等功能,实现从打包到监控的自动化流程。
Pod由一个或多个容器组成,共享PID、IPC、Network和UTS namespace,是Kubernetes调度的基本单位。
Node是Pod运行的主机,可以是物理机或虚拟机,每个节点运行container runtime、kubelet和kube-proxy服务。
Namespace对一组资源和对象进行抽象集合,用于项目组或用户组划分。
Service为应用提供负载均衡和服务发现,自动分配cluster IP和DNS名,简化容器间及外部访问。
k8s通过两种探针进行Pod健康检测。
镜像下载策略分为Always、IfNotPresent。
Pod状态包括Pending、Running、Succeeded、Failed、Unknown。
k8s创建Pod流程包括客户端提交配置、Apiserver存储、Controller-manager创建资源、Kube-scheduler调度、Kubelet运行。
删除Pod流程有30秒优雅退出等待,超过后Pod状态变为Terminating,kubelet开始关闭。
Service为Pod提供固定入口,Endpoint列表绑定相同配置Pod,通过负载均衡方式分配请求。
Pod启动加载Service信息,方便不同Pod间通信。
持久化方式包括EmptyDir、Hostpath、PersistentVolume。
常用Docker和k8s命令供参考。