linux运维面试题

news2024/9/26 1:27:26

linux运维面试题

面试

K8S篇(高可用)

Q:k8s是什么?架构?

Kubenetes是一个开源的容器集群管理系统。主要用于容器编排,解决容器调度问题。当应用请求时,k8s需要合理分配请求到空闲node节点上去。k8s使用的主从模式,至少有一个主节点(Master)和多个工作节点(Node)。

master主要用于暴露API,调度部署和节点的管理。包括apiServer、scheduler、controller、etcd以及各种插件(dns)。etcd保存了整个集群状态。master会运行有大量副本控制器,抽象的service通过label调度一组pod。

Node是K8s集群操作的单元,是工作节点。node核心组件有kubelet,kube-proxy,kubelet用于维护声明周期以及和master通信。kube-proxy用于集群内部的服务发现、负载均衡等。

pod是k8s中最小的调度单元, 包含多个相关容器。pod一般是短暂的实体。每个pod都会有一个pause根容器,和其它业务容器,容器可以通过共享内存进行通信。作用: 评估健康状态,设置Ip地址实现Pod内部通信。

在这里插入图片描述

etcd是k8s必不可少的存储组件。

Q:什么是etcd?

ETCD是用于共享配置和服务发现的分布式KV存储系统。基于Go语言实现。

特点:

简单:支持 REST 风格的 HTTP+JSON API,算法易理解。

安全:支持 HTTPS 方式的访问

快速:支持并发 1k/s 的写操作

可靠:支持分布式结构,基于 Raft 的一致性算法,Raft 是一套通过选举主节点来实现分布式系统一致性的算法。

raft算法:

raft算法包括3个子问题:选举、 日志复制、 安全性。

选举:

Raft算法中,任何服务器都可以扮演下面三个角色之一:领袖、群众、候选人。

Leader(领导者):负责日志的同步管理,处理来自客户端的请求(日志),负责保证其他节点与他的日志同步。

Follower(追随者):刚启动时所有节点为Follower状态,响应Leader的日志同步请求,响应Candidate的请求,把请求到Follower的事务转发给Leader。

Candidate(候选者):从Follower转为Candidate发起选举,选举出Leader后从Candidate转为Leader状态。

Raft运行时提供服务的时候只存在Leader与Follower两种状态。选举由定时器来触发,每个周期不定。

日志复制:

所有日志请求都必须先经过Leader处理,保证了一致性。

安全性:

安全性是用于保证每个节点都执行相同序列的安全机制。

保证选举出来的Leader一定包含先前 commited Log。

Q:ETCD适应的场景?

服务发现、消息发布与订阅、负载均衡、分布式锁。

服务发现主要解决在同一个分布式集群中的进程或服务,要如何才能找到对方并建立连接。

etcd使用raft算法保持了强一致性,所以很容易实现分布式锁。锁服务有两种使用方式,一是保持独占,二是控制时序。

Q:为什么用etcd而不用Zookeeper?

Zookeeper缺点:

复杂。部署维护复杂,使用也复杂,需要安装客户端,官方只提供了java和C两种语言的接口。

Java编写。Java会引入大量的依赖。

发展缓慢。Apache基金会庞大的结构以及松散的管理导致项目发展缓慢。

Q:k8s用法?

在单机上使用k8s,需要安装kubectl与minikube。

Minikube 是一种可以在本地轻松运行一个单节点 Kubernetes 群集的工具。

Kubectl 是一个命令行工具,可以部署应用、检查和管理集群资源、查看日志。

kubelet:在每个Node上都会启动一个kubelet服务进程,该进程用于处理Master下发到本节点的任务,管理Pod及Pod中的容器。

其他

1、基础概念

Q:Linux 命令

Linux kill命令

Linux kill 命令向进程发送信号。

常用信号:

1 (HUP):重新加载进程。

9 (KILL):杀死一个进程。

15 (TERM):正常停止一个进程。

SIGUSR1/SIGUSR2: 这表示用户定义的条件

例:

kill -9 123456

kill -HUP 53

kill 12345

Linux 关机重启命令

重启:Reboot, shutdown-r是重启

关机:half,shutdown-s

netstat是显示网络状态

linux 检测远程端口是否打开

telnet

nc

nmap

linux 0,1,2的含义

在这里插入图片描述

例:echo “hello” > t.log

2>&1:将标准错误输出重定向到标准输出

2>1:将标准错误输出重定向到名为"1"的文件里

nohup java -jar app.jar >log 2>&1 &:

把1和2都理解是一个指针,:本来1->屏幕 ,执行>log后, 1->log

执行2>&1后, 2->1 (2指向1,而1指向log,因此2也指向了log)

”&>log” “>log 2>&1””>&log”

在Linux中命令后加&,表示该进程后台运行;

nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。nohup ,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。

ps -aux | grep

ps 为我们提供了进程的一次性的查看

a : 显示所有程序 ; u : 以用户为主的格式来显示 ; x : 显示所有程序,不区分终端机

grep (RE) ,全面搜索正则表达式并把行打印出来

ps aux | grep go_gateway | grep -v ‘grep’ | awk ‘{print $2}’ | xargs kill

查询当前进程中是否包含go_gateway,如包含则杀死

grep -v 不包含

ps -ef|grep erp-api.jar|grep -v grep|awk ‘{print $2}’ 获取第二个参数

xargs 将前面获取到的进程号通过空格分割,杀死所有进程

awk 命令:逐行扫描文件

“#!/bin/sh”

"#!/bin/sh"是对shell的声明,说明你所用的是那种类型的shell及其路径所在。

Q:Linux 进程状态

就绪状态、执行状态、阻塞状态

进程没有睡眠状态,有睡眠状态的是线程

2、日常命令

cd、pwd、ls、cat、uname

cd -返回上一次所在的目录;cd ~主目录;cd /根目录;

echo P A T H 查看变量 PATH查看变量 PATH查看变量PATH的值

单引号所见即所得;双引号是先把变量解析之后再输出。在双引号中:

\ 反斜杠是转义字符;`` 反引号代表引用命令。

星号表示一个或者多个字符,问号代表一个字符。

删除目录: rmkir;rm -r

创建文件的几种方式

touch;echo;printf;cat;vi/vim

个人认为最好用:gedit

trap:用于指定在接收到信号后将要采取的动作.

如:trap exit 2

Ctrl+Shift+C进行复制,Ctrl+Shift+V进行文本粘贴

“.deb” 是 ubuntu 、debian 的格式。

sudo apt install XXX

3、函数

echo "number:$#"    获取参数个数

echo "scname:$0"    获取脚本名称

echo "first:$1"            获取第一个参数

echo "second:$2"         获取第二个参数

echo "argume:$@"         获取所有参数

echo "show parm list :$*" 数据参数的list

echo "show process id :$$"  获取进程id

echo "show precomm stat:$?"     获取命令执行的结果

grep abc xx 搜索XX文件里有abc的行

锁:fcntl ()、flock()、unlock()

4、vim命令

正常模式:可以使用快捷键命令,或按:输入命令行。

插入模式:可以输入文本,在正常模式下,按i、a、o等都可以进入插入模式。

可视模式:正常模式下按v可以进入可视模式, 在可视模式下,移动光标可以选择文本。按V进入可视行模式, 总是整行整行的选中。ctrl+v进入可视块模式。

替换模式:正常模式下,按R进入

:w – 保存修改。

:q – 退出。

:q! – 退出并且不保存修改。

:wq 、:x – 保存并退出。

删除多行:正常模式下输入“10dd”

5、linux目录

在这里插入图片描述

6、docker

命令

在这里插入图片描述

在这里插入图片描述

docker ps #仅显示正在运行的容器

docker ps -a#所有容器

docker search xxx

docker rmi -f ID

# -d后台运行容器,-h或者–hostname指定容器主机名为my-rabbit,

  • -name是指定容器名称为some-rabbit,-p指的是端口, rabbitmq的镜像名:latest
  • f 实时监控容器日志, -it:进入终端

docker根目录: /var/lib/docker

例子

1、

docker run -d --name rabbit -p 5672:5672 -p 15672:15672 -p 25672:25672 -v /data/rabbitmq:/var/lib/rabbitmq rabbitmq --restart=always

docker run -d --name mysql -p 3306:3306 mysql --restart=always

2、

docker run -d --hostname my-rabbit --name rabbit -p 5672:5672 -p 15672:15672 -p 25672:25672 -v /data/rabbitmq:/var/lib/rabbitmq rabbitmq:management

3、sudo docker run -itd -v ~/docker_test:/home ubuntu /bin/bash

冒号前后分别为本地路径 和 docker内的路径

/bin/bash的作用是因为docker后台必须运行一个进程,否则容器就会退出,在这里表示启动容器后启动bash.(非必要)

4、rabbitmq

加载rabbitmq的管理器插件:

docker exec some-rabbit rabbitmq-plugins enable rabbitmq_management

新增用户

rabbitmqctl add_user name passwd

赋予权限

rabbitmqctl set_user_tags name administrator

rabbitmqctl list_users

docker login -u 用户名 -p 密码

5、exec

docker exec -it ID bash

docker start/restart id

6、docker run -d -p 16379:6379 --name redis redis:latest

最后参数为指定镜像

7、docker build -t test:v1 .

8、docker run -it nginx:latest /bin/bash

使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。

9、docker attach

进入容器

架构

docker快速入门:https://docker.easydoc.net

Docker三个概念:dockerfile、image、container

Image:类似虚拟机的快照。里面包含你要部署的应用程序以及它所关联的所有库。

一个镜像可以创建多个不同的容器,每个容器独立。一个容器对应一个镜像

Dockerfile:自动化脚本

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Volume数据卷(共享文件夹)

基础命令

$ docker volume create test

$ docker volume ls

$ docker inspect test

$ docker volume rm test

如果启动容器时带的容器不存在,那么 docker 会创建一个。

在这里插入图片描述

例:docker run -p 27018:27017 --name mongo -v mongo-data:/data -d mongo:4.4

Docker-compose.yml可定义多个容器

docker compose up运行所有容器

多容器通信(***)

创建虚拟网络

k8s

在这里插入图片描述

8、LVS

在这里插入图片描述

LVS 是四层负载均衡,建立在传输层之上,传输层有 TCP/UDP

LVS (Linux Virtual Server)是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术。LVS架构从逻辑上可分为负载调度器、服务器池和共享存储。

**负载调度器:**它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的。

**服务器池:**是一组真正执行客户请求的服务器,执行的服务一般有WEB、MAIL、FTP和DNS等。

**共享存储:**它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。

**术语:**DS:Director Server。指的是前端负载均衡器节点。

RS:Real Server。后端真实的工作服务器。

VIP:向外部直接面向用户请求,作为用户请求的目标的 IP 地址。

LB:load balancer

Lvs常用的3种调用算法:

· **基本轮询调度 rr:**调度器会将所有的请求平均分配给每个真实服务器

· 加权最小连接调度 wlc:

把新的连接请求分配到当前连接数最小的服务器。最小连接调度是一种动态的调度算法,它通过服务器当前活跃的连接数来估计服务器的情况。

· **加权轮询调度 wrr:**根据性能给每台服务器添加权值。权值越高,处理请求越多。

Lvs 3种模式:

NAT模式:

NAT 模式下,网络数据的进出都要经过 LVS 处理,LVS 需要作为真实服务器的网关。

客户请求越来越多时,lb压力越来越大

在这里插入图片描述

TUN IP隧道模式:

请求由 LVS 接受,由真实提供服务的服务器(RS)直接发放给用户,返回的时候不经过 LVS。

缺点:暴露真实服务器地址,RS必须支持IP隧道协议,有IP隧道的开销

在这里插入图片描述

DR(直接路由)模式:

请求由 LVS 接受,由真实提供服务的服务器(RS)直接发放给用户,返回的时候不经过 LVS。

返回的数据打包给给路由包装器统一返回。

DR 负载均衡模式数据分发过程中不修改 IP 地址,只修改 Mac 地址,不需要通过负载均衡服务器进行地址转换

在这里插入图片描述

8、“.d”

linux中“.d”文件表示的是:1、依赖文件,其中d是dependence的意思;2、默认配置文件,其中d是default的意思;3、动态意义的文件,其中d是Dynamic的意思。

9、请你说说IO多路复用(select、poll、epoll)*

IO多路复用是指单个线程或进程能够处理多个IO请求。select调用主要统计有多少个文件描述符需要进行IO操作。缺点:内存开销大,支持的的文件描述符的个数有限。poll和select调用差别不大,主要是底层数据结构变成了链表,支持的文件描述符的个数无上限。epoll调用是更加高效的方式,底层数据结构使用了红黑树和链表,避免了大量的内存分配和轮询。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1323980.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《Linux C编程实战》笔记:进程操作之ID,优先级

获得进程ID getpid函数 这个函数都用了很多次了&#xff0c;看一下定义和例子就行了 #include<sys/types.h> #include <unistd.h> pid_t getpid(void); 示例程序1 #include<cstdlib> #include<malloc.h> #include<cstring> #include <cs…

中国社科院与新加坡新跃社科联合培养工商管理博士

全球经济正在经历由科技进步与创新、政治和人口的剧烈变化所带来的巨大不确定性与挑战。企业的领导者和管理者需要发展出战略性思维和全球洞察力以便面对越来越大的经济波动。中国社科院与新加坡新跃社科联合培养工商管理博士项目的训练能够让学生在一个企业和组织的改变和发展…

快速给SOLIDWORKS工程图添加水印

水印常见于电子文档或纸质上的文字或图案&#xff0c;日常生活中&#xff0c;一些特殊的水印只能在特定的条件下才能看到。水印可以作为一个品牌的象征&#xff0c;有的软件生成文档就会有水印&#xff0c;可以作为宣传&#xff0c;让更多的人熟知。 作品水印&#xff0c;就是…

app测试必掌握的核心测试:UI、功能测试!

一、UI测试 UI即User Interface (用户界面)的简称。UI 设计则是指对软件的人机交互、操作逻辑、界面美观的整体设计。好的UI设计不仅是让软件变得有个性有品味,还要让软件的操作变得舒适、简单、自由、充分体现软件的定位和特点。手机APP从启动界面开始, 到运行过程,直至退出,…

为什么要编写测试用例,测试用例写给谁看?

“为什么要编写测试用例&#xff0c;测试用例写给谁看”&#xff0c;这个问题看似简单&#xff0c;但却涵盖了一系列复杂的考虑因素&#xff0c;并不太好回答。 为了向各位学测试的同学们解释清楚“为什么编写测试用例是至关重要的”&#xff0c;我将通过以下5个方面进行展开&…

【工具使用-ADB】小米手机如何使用adb传输文件

一&#xff0c;简介 本文主要介绍&#xff0c;如何使用小米手机&#xff0c;打开adb设置进行文件的传输。供参考 二&#xff0c;操作步骤 2.1 进入开发者模式 “设置”->“我的设备”->“全部参数信息” 连续多次点击“MIUI 版本”&#xff0c;直到提示“您已处于开…

英码科技受邀参加2023计算产业生态大会,分享智慧轨道交通创新解决方案

12月13-14日&#xff0c;“凝心聚力&#xff0c;共赢计算新时代”——2023计算产业生态大会在北京香格里拉饭店成功举办。英码科技受邀参加行业数字化分论坛活动&#xff0c;市场总监李甘来先生现场发表了题为《AI哨兵&#xff0c;为铁路安全运营站好第一道岗》的精彩主题演讲&…

计算机网络 运输层上 | 运输层概述 UDP协议 端口 套接字

文章目录 1 运输层概述1.1 运输层存在的意义1.2 运输层协议概述1.3 主要端口号 2 运输层主要协议 UDP2.1 UDP的特点2.2 UDP首部格式2.3 UDP工作流 1 运输层概述 1.1 运输层存在的意义 之前我们讲网络层的时候&#xff0c;已经可以将信息从一个主机传递到另一个主机了。 那么…

轻推API无代码集成:创新电商CRM与客服系统

无代码API集成的力量&#xff1a;电商与CRM无缝对接 随着电子商务的快速发展&#xff0c;电商平台与客户关系管理&#xff08;CRM&#xff09;系统的高效对接成为商家竞争力的关键。无代码API集成平台如轻推&#xff0c;提供了简单易用的解决方案&#xff0c;使得电商企业能够…

机器学习中的一些经典理论定理

PAC学习理论 当使用机器学习方法来解决某个特定问题时&#xff0c;通常靠经验或者多次试验来选择合适的模型、训练样本数量以及学习算法收敛的速度等。但是经验判断或多次试验往往成本比较高&#xff0c;也不太可靠&#xff0c;因此希望有一套理论能够分析问题难度、计算模型能…

Axure中如何使用交互样式交互事件交互动作情形

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《产品经理如何画泳道图&流程图》 ⛺️ 越努力 &#xff0c;越幸运 目录 一、Axure中交互样式 1、什么是交互样式&#xff1f; 2、交互样式的作用&#xff1f; 3、Axure中如何…

计算机组件操作系统BIOS的相关知识思维导图

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《产品经理如何画泳道图&流程图》 ⛺️ 越努力 &#xff0c;越幸运 目录 一、运维实施工程师需要具备的知识 1、运维工程师、实施工程师是啥&#xff1f; 2、运维工程师、实施工…

《每天一分钟学习C语言·三》

1、 scanf的返回值由后面的参数决定scanf(“%d%d”,& a, &b); 如果a和b都被成功读入&#xff0c;那么scanf的返回值就是2如果只有a被成功读入&#xff0c;返回值为1如果a和b都未被成功读入&#xff0c;返回值为0 如果遇到错误或遇到end of file&#xff0c;返回值为EOF…

论文报告公式序号右对齐技巧

最近在写报告&#xff0c;感觉这个方法很不错&#xff0c;所以记录一下。 1.添加一个1行3列的表格&#xff0c;将公式序号放在中间表格与右边表格中&#xff0c;公式居中&#xff0c;序号右对齐。 2.将边框去掉&#xff0c;选择无边框。 3.得出结果 结束&#xff01;&#xff…

新型智慧视频监控系统:基于TSINGSEE青犀边缘计算AI视频识别技术的应用

边缘计算AI智能识别技术在视频监控领域的应用有很多。这项技术结合了边缘计算和人工智能技术&#xff0c;通过在摄像头或网关设备上运行AI算法&#xff0c;可以在现场实时处理和分析视频数据&#xff0c;从而实现智能识别和分析。目前来说&#xff0c;边缘计算AI视频智能技术可…

Ansible(一)

Ansible: 远程操作主机功能&#xff1a; 自动化运维&#xff08;playbook剧本YAML&#xff09; 是基于Python开发的配置管理应用部署攻具&#xff0c;在自动化运维当中&#xff0c;现在是异军突起 Ansible能批量配置&#xff0c;部署&#xff0c;管理上千台主机&#xff0c…

【简洁易懂】为什么绝对收敛的级数一定条件收敛?【考研向】

针对某高热帖子真的想说&#xff0c;什么时候讨论知识的戾气不那么重了&#xff0c;什么时候能把知识深入浅出的讲明白了&#xff0c;什么时候我们才能有希望吧。 图源&#xff1a;https://www.youtube.com/watch?v3ShPTvJUFrU

9ACL访问控制列表

为什么要有访问控制&#xff08;Access Control List&#xff09;&#xff1f; 因为我可能在局域网中提供了一些服务&#xff0c;我只希望合法的用户可以访问&#xff0c;其他非授权用户不能访问。 原理比较简单&#xff0c;通过对数据包里的信息做过滤&#xff0c;实现访问控…

为什么GRU和LSTM能够缓解梯度消失或梯度爆炸问题?

1、什么是梯度消失&#xff08;gradient vanishing&#xff09;&#xff1f; 参数更新过小&#xff0c;在每次更新时几乎不会移动&#xff0c;导致模型无法学习。 2、什么是梯度爆炸&#xff08;gradient exploding&#xff09;&#xff1f; 参数更新过小大&#xff0c;破坏了…