• 20K+ SRE面试题分享


    今天群里有位老哥面试20K+的SRE顺手拍了3张面试题,和大家分享一下.第三张实在太模糊就没放了.
    请添加图片描述
    请添加图片描述
    第三张实在拍的太模糊

    1. 选择题

    没发

    2. 填空题(共20题,每题2分,总分40分,请在括号里填入最合适的答案)

    1. 某文件的权限为drw-r–r–用数值形式表示该权限,则该8进制数位为(644),该文件的属性为(目录)
    2. 在超级用户下显示linux系统中正在运行的全部进程,应使用的命令和参数是(ps -aux)
    3. 在linux系统中,查看可用内存的命令是(free -m,top)
    4. 在linux系统中,可以通过(parted -s /dev/sdb mkpart primary 0% 100%&&mkfs.xfs /dev/sdb1 )命令格式化一块8T的新硬盘
    5. 在linux 系统中,可以通过(lsof -i :8080)命今查看8080端口号被哪个进程号占用
    6. 说明下列 Raid技术至少需要几块硬盘
      Raid0 2快
      Raid1 2块
      Raid5 3块
      Raid6 4块
      Raid10 4块 Raid01一样
    7. 如果nginxpid的目录在/usr/nginx/logs/nginx.pid 下,那么平滑重启的命令为(kill -HUP $(cat usr/nginx/logs/nginx.pid))
    8. 保存当前磁盘分区的分区表的命令是(sfdisk -d /dev/sdb /etc/sdbpar.bak)
    9. 统计出nginx的accesslog中访问量最多的5个IP,可以通过命令(awk ‘{print $1}’ /var/log/nginx/accesslog.log |sort|uniq -c|sort -nr|head -5)
    10. 已知一主机的IP地址是203.123.1.135,子网掩码是255255255.192。求该子网可分配的IP地址(203.123.1.129-203.123.1.190)
    11. docker容器的底层技术包括namespace和(Cgroup)
    12. 通过docker启动一个nginx容器,并限制其CPU和内存资源上限的命令是( docker run -d --name nginx -p 80:80 --cpus 2 --memory 2 nginx)
    13. 可以通过(docker inspect nginx)命令来查看docker容器的详细信息
    14. K8S的pod类型可以分为普通pod和(静态Pod)
    15. 将nginx的deployment扩容副本数为3的命令是(kubectl scale --replicas=3 deployment nginx)
    16. 生成一个deployment yam文件保存到/opt/deploy.yaml 的命令是(kubectl get deployment nginx -o wide > /opt/deploy.yaml )
    17. 如果想让K8S的master节点可以被调度任务,可以通过(kubectl uncordon master)来实现
    18. 在K8S中,可以通过(kubectl describe pod nginx或者 kubectl get pods nginx -o wide )命今查看pod的具体属性信息
    19. 请列出任意一个PHP的加速器(eAccelerator,XCache,APC)
    20. 在LNMP环境中,502、504错误状态码的含义分别是
      500 内部服务错误,可能是权限问题造成
      501 服务器不具备完成请求的功能
      502 Bad Gateway错误
      503 服务器目前无法使用.超载或停机
      504 Bad Gateway timeout 网关超时
      505 http协议版本不支持

    3. 简答题(共6题,每题5分,总分30分)

    3.1 在Linux的LVM分区格式下,请简述给根分区磁盘扩容的步骤?

    这个分3种
    第一种方法:

    growpart /dev/vda 1
    resize2fs /dev/vda1    
    
    • 1
    • 2

    第二种方法:

    partpeobe /dev/sda
    resize2fs /dev/vda1    
    
    • 1
    • 2

    第三种方法:

    fdisk /dev/sdb   # n p 1 1 回车 回车 t 8e w
    pvcreate /dev/sdb1
    vgextend datavg /dev/sdb1
    lvextend -r -L +100%free /dev/mapper/datavg-lv01
    
    • 1
    • 2
    • 3
    • 4

    3.2 请简述OSI七层网络模型有哪些层及各自的含义?

    物理层:底层数据传输,比如网线、网卡标准
    数据链路层:定义数据的基本格式,如何传输,如何标识。比如网卡MAC地址
    网络层:定义IP编码,定义路由功能,比如不同设备的数据转发
    传输层:端到端传输数据的基本功能,比如TCP、UDP
    会话层:控制应用程序之间会话能力,比如不同软件数据分发给不停软件
    表示层:数据格式标识,基本压缩加密功能。
    应用层:各种应用软件,包括 Web 应用。

    3.3 pod资源控制器类型有哪些?

    Deployments
    Deployment为Pod和ReplicaSet提供声明式的更新能力。
    ReplicaSet
    ReplicaSet的目的是维护一组在任何时候都处于运行状态的Pod副本的稳定集合。因此,它通常用来保证给定数量的、完全相同的Pod的可用性。
    StatefulSets
    和Deployment类似,StatefulSet管理基于相同容器规约的一组Pod。但和Deployment不同的是,StatefulSet为它们的每个Pod维护了一个有粘性的ID。这些Pod是基于相同的规约来创建的,但是不能相互替换:无论怎么调度,每个Pod都有一个永久不变的ID。
    DaemonSet
    DaemonSet确保全部(或者某些)节点上运行一个Pod的副本。当有节点加入集群时,也会为他们新增一个Pod。当有节点从集群移除时,这些Pod也会被回收。删除DaemonSet将会删除它创建的所有Pod。
    Jobs
    Job会创建一个或者多个Pod,并将继续重试Pod的执行,直到指定数量的Pod成功终止。随着Pod成功结束,Job跟踪记录成功完成的Pod个数。当数量达到指定的成功个数阈值时,任务(即Job)结束。删除Job的操作会清除所创建的全部Pod。挂起Job的操作会删除Job的所有活跃Pod,直到Job被再次恢复执行。
    Automatic Clean-up for Finished Jobs
    TTL-after-finished控制器提供了一种TTL机制来限制已完成执行的资源对象的生命周期。TTL控制器目前只处理Job。
    CronJob
    一个CronJob对象就像crontab(crontable)文件中的一行。它用Cron格式进行编写,并周期性地在给定的调度时间执行Job。
    ReplicationController
    ReplicationController确保在任何时候都有特定数量的Pod副本处于运行状态。换句话说,ReplicationController确保一个Pod或一组同类的Pod总是可用的。

    3.4 k8s的扩容步骤(这部分没拍到)

    3.4.1 扩Master

    1. 分发ca,kubernetes,aggregator-proxy证书
    2. 分发master服务的service文件
    3. 分发二进制文件
    4. 分发配置文件
    5. 分发证书
    6. 启动kube-apiserver
    7. 启动kube-controller-manager
    8. 启动kube-proxy
    9. 启动kube-scheduler
    10. 启动kubelet

    3.4.2 扩node节点

    1. 分发二进制文件
    2. 分发配置文件
    3. 分发service文件
    4. 分发证书
    5. 启动kubelet
    6. 启动kube-proxy

    kubeadm:

    # 生成master token
    kubeadm token create --print-join-command 
    
    kubeadm join 192.168.31.141:6443 --token fnpa0m.z3cliojcv5u6xmj7 \
        --discovery-token-ca-cert-hash sha256:86f42f7deed4cf786c1d1745b487d62b681bdc0b91bffbfde55f430bf4bfc36a3
    # node节点
    kubeadm join 192.168.31.141:6443 --token fnpa0m.z3cliojcv5u6xmj7 \
        --discovery-token-ca-cert-hash sha256:86f42f7deed4cf786c1d1745b487d62b681bdc0b91bffbfde55f430bf4bfc36a3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    kubeaz:

    ./ezctl add-node intra-k8s-01 192.168.31.113
    
    • 1

    3.5 php编译步骤(这部分没拍到)

    1. 安装必要的依赖包
    2. 下载解压安装包
    3. 编译安装
      mkdir /app/php -p
      ./configure -prefix=/app/php
      make -j 4
      make install
  • 相关阅读:
    Java项目:家政服务系统(java+JSP+jquery+Servlet+Mysql)
    学会使用MySQL的Explain执行计划,SQL性能调优从此不再困难
    JMeter笔记5 |Badboy使用和录制
    ADS微带单枝短截线匹配电路的仿真
    项目管理工具ConceptDraw PROJECT mac中文版自定义列功能
    第六章 音视频-FFmpeg实现播放器解码和对应数据处理
    tomcat为什么要自定义类加载器?
    第二增长曲线 | 企业创新突破停滞困境的驱动指南
    极客日报:网易回应旗下游戏集体崩溃:用干冰修好了服务器;GitHub更换CEO,由产品主管接手;Nginx 1.21.4发布
    Android Kotlin(五)数据流StateFlow和LiveData
  • 原文地址:https://blog.csdn.net/qq_29974229/article/details/127899727