zl程序教程

您现在的位置是:首页 >  其他

当前栏目

20K+ SRE面试题分享

面试题 分享 20K SRE
2023-09-14 09:02:05 时间

今天群里有位老哥面试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    

第二种方法:

partpeobe /dev/sda
resize2fs /dev/vda1    

第三种方法:

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

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

kubeaz:

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

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

  1. 安装必要的依赖包
  2. 下载解压安装包
  3. 编译安装
    mkdir /app/php -p
    ./configure -prefix=/app/php
    make -j 4
    make install