运维面试笔记(持续补充版)
1.DNS解析流程
先查本地hosts及缓存,后查本地DNS服务器(递归解析),递归服务器先后向根服务器、顶级域名服务器、权威域名服务器迭代查询,最后得到域名对应IP并返回。
2.SSH无法登陆
首先检查自己的登陆信息是否正确
检查SSH服务是否正常
检查22端口是否正常,防火墙是否开放端口
检查网络是否正常
查看日志
3.关系型数据库和非关系型数据库的区别
方面 | 关系型数据库 | 非关系型数据库 |
---|---|---|
存储结构 | 表格,行/列,严格模式 | 键值、文档、列族、图等多样 |
查询语言 | SQL | 各自定义(如MongoDB的查询、Redis命令) |
事务支持 | 强事务ACID | 通常弱事务,CAP理论为基础 |
扩展方式 | 垂直扩展为主(扩主机) | 水平扩展为主(分布式集群) |
数据一致性 | 强一致性 | 最终一致性或可配置一致性 |
应用场景 | 金融、电商、管理类系统等 | 大数据、缓存、日志、物联网等 |
4.什么是网络抖动,丢包和链路中断
(1)网络抖动(Network Jitter)
-
现象:数据包到达目的地之间的延迟波动大,有时快有时慢,不是一个稳定的延迟值。
-
影响:抖动高时会导致协议重传、超时、延迟大,不利于主从复制、音视频会议等实时业务。
(2)丢包(Packet Loss)
-
现象:网络传输中有些数据包丢失、根本到不了目的地。
-
影响:数据库主从复制会重新传输丢失的数据包,频繁丢包会导致复制极慢甚至无法继续。
(3)链路中断(Link Down/Disconnect)
-
现象:主从间的网络链路完全断开,通信彻底中断,所有数据都无法传输。
-
影响:主从复制直接中断;有些数据库可能能自动恢复,有些要人工手动处理追binlog等。
5.开机自检过程
[开机] --> [BIOS/UEFI自检] --> [GRUB] --> [Linux内核] --> [init/systemd] --> [启动服务] --> [登录界面]
6.如何修改web服务器主页
像nginx和apache之类的文件,要修改主页文件,可以先在配置文件里面确定主页文件目录,然后去修改
7.nginx配置文件
nginx详解:https://zhuanlan.zhihu.com/p/101961241
########### 每个指令必须有分号结束。#################
#user administrator administrators; #配置用户或者组,默认为nobody nobody。
#worker_processes 2; #允许生成的进程数,默认为1
#pid /nginx/pid/nginx.pid; #指定nginx进程运行文件存放地址
error_log log/error.log debug; #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg
events {accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为onmulti_accept on; #设置一个进程是否同时接受多个网络连接,默认为off#use epoll; #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventportworker_connections 1024; #最大连接数,默认为512
}
http {include mime.types; #文件扩展名与文件类型映射表default_type application/octet-stream; #默认文件类型,默认为text/plain#access_log off; #取消服务日志 log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义格式access_log log/access.log myFormat; #combined为日志格式的默认值sendfile on; #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。sendfile_max_chunk 100k; #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。keepalive_timeout 65; #连接超时时间,默认为75s,可以在http,server,location块。upstream mysvr { server 127.0.0.1:7878;server 192.168.10.121:3333 backup; #热备}error_page 404 https://www.baidu.com; #错误页server {keepalive_requests 120; #单连接请求上限次数。listen 4545; #监听端口server_name 127.0.0.1; #监听地址 location ~*^.+$ { #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。#root path; #根目录#index vv.txt; #设置默认页proxy_pass http://mysvr; #请求转向mysvr 定义的服务器列表deny 127.0.0.1; #拒绝的ipallow 172.18.5.54; #允许的ip } }
}
8.怎么查看系统环境变量
命令 | 作用 |
---|---|
env | 显示所有环境变量(最常用) |
set | 显示所有shell变量、环境变量和函数(最全) |
export | 显示已导出的环境变量(用户变量和属性) |
9.抓包工具
tcpdump
指定网卡 -i
显示详细信息 -v
10.查找系统中已删除但仍被进程占用的文件
lsof | grep deleted
11.时间格式
date +%Y:%m:%d-%H:%M:%S
“+”号根后面时间格式
12.常用网络命令
ip/ifconfig
查看和配置网络接口
ping
检测连通性
traceroute/mtr
追踪路由
ss/netstat
查看连接
netstat -tunlp t
(TCP) + u
(UDP) + n
(数字显示) + l
(监听状态) + p
(进程)
nslookup/dig
查询DNS
nslookup/dig 域名
tcpdump
抓包
curl/wget
测试HTTP请求
iptables
管理防火墙
nmap
扫描端口
13.namespaces和cgroup的区别
namespaces是对资源的隔离,cgroup是对是对资源的使用限制
14.有状态和无状态的区别
有状态是指系统会保存和依赖历史交互信息,无状态则每次请求都是独立、互不依赖的
statefulset。持久化存储,基于pv 、pvc实现;持久的网络标识,基于无头 服务实现;有序部署回收或启停
15.pod的创建流程
用户发起创建请求到 API Server,API Server 将 Pod 信息存储到 etcd。调度器根据策略将 Pod 分配到合适节点。控制器管理 Pod 的副本数。节点上的 Kubelet 负责资源分配和 Pod 管理,确保 Pod 正常运行。
16.pod的生命周期
Pod 生命周期由一个贯穿始终的 pause 容器支撑,随后按顺序执行多个 Init 容器,前一个完成后才执行下一个。Init 容器全部完成后启动主容器。主容器执行过程中,首先完成初始化,然后执行启动后钩子(postStart hook)和启动命令;启动时进行启动探测和就绪探测,存活探测贯穿始终,保障容器健康;关闭时执行关闭前钩子(preStop hook)和关闭命令。
钩子的作用: 让用户在容器生命周期的关键时刻,执行自定义脚本或命令,从而实现一些初始化、配置或清理工作
17.说说你对Docker的理解,如何构建和管理容器?如何排查容器异常?
Docker是一个轻量级的容器化平台,可以将应用及其依赖打包到镜像中,方便部署和迁移。
使用Dockerfile构建自定义镜像,通过docker run启动容器,利用docker ps查看容器状态,docker logs查看日志。
排查异常主要看日志报错,检查端口映射,查看容器资源使用限制,必要时进入容器内部排查。
20.桥接和nat的区别
桥接模式下,虚拟机像物理机一样直接获取路由器分配的公网或局域网IP;NAT模式下,虚拟机使用私有内网IP,通过宿主机的IP地址做地址转换访问外网。