面试总结二

HAProxy

1.简述HAProxy的特性?

HAProxy是可提供高可用性,负载均衡以及基于TCP,HTTP应用的代理,是免费,快速并且可靠的一种解决方案。HAProxy非常适用于并发大的web站点,这些站点通常需要保持会话或者七层处理。

主要特性:可靠性和稳定性非常好,支持多大8种负载均衡算法,同时也支持会话保持。支持虚拟主机功能,从而实现web负载均衡更加灵活。拥有强大的ACL支持,用于访问控制。独特的二叉树数据结构,支持客户端的keepalive功能,减少客户端与haproxy的多次握手导致资源浪费,让多个请求在一个TCP连接中完成。基于命令行的管理接口。

2.HAProxy常见的负载均衡策略?

roundrobin表示简单的轮询,static-rr权重,leastconn表示最少连接优先处理,source,根据请求的源ip,类似nginx的ip_hash机制。 ri 表示根据请求的URL,

3.负载均衡四层和七层的区别?

四层负载均衡器也称为4层交换机,主要通过分析ip层及TCP/UDP层的流量实现基于IP加端口的负载均衡,如常见的LVS,F5等。七层负载均衡器也称为7层交换机,位于OSI的最高处,及应用层,此负载均衡器支持多种协议,如HTTP,FTP,SMTP等。如常见的HAPRoxy,Nginx.

4.简述LVS,Nginx,HAProxy有什么区别?

LVS 基于linux操作系统实现软负载均衡,而HAProxy和Nginx是基于第三方应用实现的软负载均衡。  LVS是可实现4层的IP负载均衡技术,无法实现基于目录,URL的转发。而HAProxy和Nginx都可以实现4层和7层技术,HAProxy可提供TCP和HTTP应用的负载均衡综合解决方案。Nginx主要用于Web服务器或缓存服务器。HAProxy功能强大,但整体性能低于4层模式的LVS负载均衡。LVS,ISO的第四层,状态检测功能单一。

二docker面试部分

基础概念
Q1: Docker是什么?
A1: Docker是一个开源的应用容器化平台,它允许开发者将应用及其依赖包进一个轻量级、可移植的容器中,实现跨环境的一致性部署和运行。

Q2: Docker与虚拟机有何区别?
A2: Docker容器共享主机的操作系统内核,不需要每个容器都包含一个完整的操作系统,因此启动速度快、资源占用少。而虚拟机(VM)则是通过虚拟化技术模拟出一套完整的硬件环境,包括操作系统,资源消耗大,启动慢。

Docker命令与操作
Q3: 请列举一些常用的Docker命令及其用途。
A3:docker run: 创建并启动一个容器。
docker ps: 列出正在运行的容器。
docker images: 查看本地镜像列表。
docker build: 根据Dockerfile构建镜像。
docker pull: 从Docker Hub拉取镜像。
docker stop/start: 停止/启动容器。
docker rm: 删除容器。
docker rmi: 删除镜像。
Docker网络
Q4: Docker有哪些网络模式?
A4: Docker支持桥接网络(bridge)、主机网络(host)、容器网络(container)、无网络(none)和自定义网络(user-defined networks)。其中,桥接网络是默认网络模式,为每个容器分配独立的IP地址,容器间通过网络桥接进行通信。

Q5: Dockerfile的作用是什么?
A5: Dockerfile是一个文本文件,包含了用户可以调用Docker命令来构建镜像的所有指令。它使得构建过程可复现,便于维护和版本控制。

安全与性能
Q6: 如何确保Docker的安全性?
A6: 通过使用安全的镜像来源、限制容器的资源使用、使用SELinux或AppArmor等安全模块、仅开放必要的端口、定期更新镜像和系统、使用安全的网络策略等手段来加强Docker的安全性。

Q7: Docker如何进行性能优化?
A7: 优化Docker性能的方法包括合理使用内存和CPU资源限制、避免不必要的服务和进程、使用高效的存储驱动、优化Dockerfile以减小镜像大小、使用缓存机制、优化网络配置等。

高级话题
Q8: Docker Compose的作用是什么?
A8: Docker Compose是一个用于定义和运行多容器Docker应用的工具,通过YAML文件定义服务、网络和卷等,实现应用的快速部署和配置。

Q9: Swarm和Kubernetes的区别是什么?
A9: Docker Swarm是Docker原生的容器编排工具,易于安装和使用,适用于较小规模的集群。而Kubernetes(K8s)是一个更为强大的容器编排平台,由Google开源,支持复杂的部署模式,适合大规模部署和管理容器化应用。

三K8S常问问题?

基础概念
Q1: 什么是Kubernetes(K8s)?
A1: Kubernetes是一个开源的容器编排平台,设计用于自动化容器化应用的部署、扩展和管理。它源自Google的Borg项目,支持跨多个主机集群上的容器部署。

Q2: K8s的核心组件有哪些?
A2: 主要组件包括:Master节点:管理集群,负责调度和分配工作负载。
etcd:持久化存储集群配置数据。
kube-apiserver:提供API接口,是各组件间通信的中心。
kube-controller-manager:管理控制器,如ReplicationController,确保集群状态符合预期。
kube-scheduler:决定将Pod放在哪个Node上运行。
Worker节点:运行容器应用。
kubelet:管理Pods和容器在节点上的生命周期。
kube-proxy:实现服务(Service)的网络代理。
容器运行时环境(如Docker或containerd)。


Q3: 什么是Pod?
A3: Pod是Kubernetes中的最小部署单元,可以包含一个或多个紧密相关的容器,共享存储和网络命名空间,设计为一起调度和管理。

Q4: 服务(Service)在K8s中的作用是什么?
A4: Service定义了一种访问一组具有相同特性的Pod的方式,如负载均衡。它提供了一个稳定的抽象层,即便后端Pod动态变化,外部访问方式不变。

Q5: 什么是K8s的副本集(ReplicaSet)和部署(Deployment)?
A5:ReplicaSet:确保任何时刻都有指定数量的Pod副本在运行,是Pod的扩缩容基础。
Deployment:更高层次的抽象,用于管理ReplicaSet和Pod的声明式更新,支持滚动更新、回滚等功能。


Q6: K8s是如何进行健康检查的?
A6: K8s使用探针(Probe)进行健康检查,分为:Liveness Probe:判断容器是否存活,如果不响应则重启。
Readiness Probe:判断容器是否准备好服务请求,未就绪时不接收流量。
Startup Probe:容器启动时的特殊探针,替代Liveness和Readiness直到容器成功启动。

实践与故障排查
Q7: 如何排查K8s集群中的问题?
A7: 使用kubectl logs查看容器日志,kubectl describe获取资源详情,kubectl get events查看事件,kubectl exec进入容器交互,以及利用kubectl debug和监控工具如Prometheus和Grafana。

Q8: 如何在K8s中实现持久化存储?
A8: 使用Volume,Kubernetes支持多种存储类型,如本地存储、NFS、GlusterFS、Ceph RBD、AWS EBS等,通过PersistentVolume(PV)和PersistentVolumeClaim(PVC)机制进行动态或静态分配存储资源.

K8S 有那些组件,都是干什么用的
master:kube-apiserver:API 服务器为 REST 操作提供服务,公开 Kubernetes API,负责处理接受请求的工作。 并为集群的共享状态提供前端, 所有其他组件都通过该前端进行交互。
kube-controller-manager:负责运行控制器进程,负责集群内的Node 、Pod 副本、服务端点( Endpoint )、命名空间(Namespace )、服务账号( ServiceAccount )、资源定额( ResourceQuota )的管理,当某个 Node 意外宕机时, Controller Manager 会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态。
kube-scheduler: 负责监视新创建的、未指定运行节点(node)的 Pods, 并选择节点来让 Pod 在上面运行。
etcd:一致且高可用的键值存储,用作 Kubernetes 所有集群数据的后台数据库。
node:

kubelet:它保证容器(containers)都运行在 Pod 中。向 master 汇报 node 节点的状态信息;接受指令并在 Pod 中创建 docker 容器;准备 Pod 所需的数据卷;返回 pod 的运行状态;在 node 节点执行容器健康检查
kube-proxy:集群中每个节点(node)上所运行的网络代理, 实现 Kubernetes 服务(Service) 概念的一部分。
容器运行时(Container Runtime):容器运行环境是负责运行容器的软件。

K8S 创建一个pod的流程
准备好对应的yaml文件,通过kubectl发送到Api Server中;
Api Server接收到客户端的请求将请求内容保存到etcd中;
Scheduler会监测etcd,发现没有分配节点的pod对象通过过滤和打分筛选出最适合的节点运行pod;
节点会通过conteiner runntime 运行对应pod的容器以及创建对应的副本数;
节点上的kubelet会对自己节点上的容器进行管理;
controler会监测集群中的每个节点,发现期望状态和实际状态不符合的话,就会通知对应的节点;
节点收到通知,会通过container runtime来对pod内的容器进行收缩或者扩张

  • 14
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值