Linux
命令
基础的命令操作有哪些:
三剑客:sed、awk、grep
shell
写过哪些脚本
写过最复杂的脚本
存储
磁盘分区有哪两种方式:MBR、GPT
文件系统有哪些:ext2/3/4、XFS、proc、sysfs、tmpfs
如何查看文件系统类型:df -T、lsblk-f、blkid
df -T
命令侧重于展示已挂载文件系统的类型和使用情况。lsblk -f
命令主要用于查看块设备及其对应的文件系统类型。blkid
命令则专注于识别块设备的文件系统类型和 UUID 等详细信息。你可以根据具体需求选择合适的命令来查看文件系统类型。
创建lvm流程
raid 0 1 5 10:
RAID 级别 | 工作原理 | 性能特点 | 可靠性 | 适用场景 |
RAID 0 | 将数据分散存储在多个磁盘上,无数据冗余处理,数据分块存于不同磁盘 | 读写速度快,理论读写性能是单个磁盘的 N 倍(N 为磁盘数量) | 较低,一块磁盘故障,数据全丢失 | 对数据读写速度要求高,对数据安全性要求不高,如视频编辑、大型游戏 |
RAID 1 | 将数据完全相同地复制到多个磁盘,实现数据冗余,如两块磁盘,一块存数据,另一块实时镜像 | 读性能较好,可从多个磁盘读取数据;写性能相对差,数据需同时写入多盘 | 高,只要有一块磁盘正常,数据不丢失 | 对数据安全性要求高,如金融、医疗等关键数据存储 |
RAID 5 | 数据和校验信息分布在阵列磁盘上,通过其他磁盘数据和校验信息恢复损坏磁盘数据,如三块磁盘,两块存数据,一块存校验信息 | 读写性能较好,读取时多盘可同时工作,写入虽需计算校验信息但性能损失小 | 较高,允许一块磁盘故障不丢失数据 | 对数据安全性和读写性能有一定要求,如企业数据库服务器 |
RAID 10 | 先将磁盘两两组成 RAID 1 阵列,再将这些 RAID 1 阵列组成 RAID 0 阵列,如四块磁盘,先两两组成 RAID 1,再将两个 RAID 1 组成 RAID 0 | 兼具 RAID 0 的高速读写和 RAID 1 的高可靠性,读写和可靠性都出色 | 高,允许同时损坏多个磁盘,只要每个 RAID 1 子阵列至少一块磁盘正常,数据不丢失 | 对数据读写速度和可靠性要求极高,如大型企业核心业务系统、高性能计算 |
性能监控工具
cpu性能监控分析工具:top、vmstat
磁盘IO:iostat、iotop
网络IO:sar、iftop
prometheus采集指标过多的优化
降采样频率:对于长时间存储的指标进行降采样
聚合:将多个实例的指标聚合成一个全局指标
配置过滤目标:如果某些目标的指标不重要,可以通过在scrape_configs中配置relabel_config过滤掉不需要的指标
Prometheus
serviceMonitor:是prometheus Operator提供的一种CRD,用于定义如何监控服务
prometheus的架构是什么
Operator
定义
Operator 是由 CoreOS 公司提出的一种基于 Kubernetes API 扩展机制,用于管理复杂的有状态应用。它借助自定义资源定义(Custom Resource Definitions,CRDs)和控制器(Controllers),将运维人员对应用的操作经验编码成自动化的流程,从而实现应用的自动化部署、配置、扩展和升级等操作
示例
以 MySQL Operator 为例,它可以通过 CRD 定义 MySQL 集群的规格和配置,然后通过控制器自动创建和管理 MySQL 实例、处理备份和恢复等操作。
Exporter
定义
Exporter 是一种用于收集和暴露系统或应用指标的工具。在 Kubernetes 中,Exporter 通常以容器的形式运行,将各种系统或应用的指标转换为 Prometheus 能够识别的格式,以便 Prometheus 进行采集和监控。
工作原理
- 指标收集:Exporter 会定期从系统或应用中收集各种指标,如 CPU 使用率、内存使用率、网络流量等。
- 指标暴露:将收集到的指标以 HTTP 服务的形式暴露出来,Prometheus 可以通过 HTTP 请求来获取这些指标。
应用场景
- 系统监控:例如 Node Exporter 用于收集 Kubernetes 节点的系统指标,如 CPU、内存、磁盘等使用情况。
- 应用监控:对于特定的应用,如 MySQL Exporter 可以收集 MySQL 数据库的性能指标,如查询响应时间、连接数等。
prometheus存储满了怎么办
如何监控k8s集群外的指标
docker
docker常用命令、
docker数据卷
1、docker volume create myvolume;docker -v myvolume:/etc/nginx/nginx.conf
2、直接挂载宿主机目录或文件
docker清理命令
镜像清理:docker image prune 清理悬空镜像,也就是那些没有被任何标签引用的镜像
docker image prune -a 删除所有未被任何容器引用的镜像
容器清理:docker container prune
docker system prune:一次性清理所有未使用的资源,包括停止的容器、悬空镜像、未使用的网络和数据卷;-a参数和docker image prune -a参数作用一致
镜像分层的好处
节省存储空间,相同的基础镜像层可以被复用
加速镜像构建和传输,在镜像传输时,只需传输发生变化的镜像层
dockerfile编写:几个命令的区分RUN CMD entrypoint from
COPY和ADD:COPY可以添加当前目录下的文件到镜像中;ADD除了拥有COPY的功能外,还附加一些额外功能:自动解压被复制的压缩文件,可以从远程URL复制文件到镜像中
RUN、CMD和ENTRYPOINT:
RUN
-
构建镜像时执行命令,用于安装软件包、创建目录、下载文件等构建阶段的临时操作。
-
每一条
RUN
指令都会在镜像中创建一个新的层(Layer)。 -
仅在
docker build
时运行。 -
用于准备镜像环境(如安装依赖)。
CMD
-
在
docker run
时生效。多个CMD只有最后一个生效 -
如果
docker run
指定了其他命令,CMD
会被覆盖。
ENTRYPOINT
-
定义容器启动时的主进程(不可被
docker run
直接覆盖)。 -
通常用于将容器配置为可执行程序(如
nginx
、python
)。 -
在
docker run
时追加的参数会传递给ENTRYPOINT
。 -
可通过
--entrypoint
覆盖:
docker五种网络模式:
bridge
bridge模式是docker的默认网络模式,不用–net参数,就是bridge模式。
相当于Vmware中的 nat 模式,容器使用独立network Namespace,并连接到docker0虚拟网卡。通过docker0网桥以及iptables nat表配置与宿主机通信,此模式会为每一个容器分配Network Namespace、设置IP等,并将一个主机上的 Docker 容器连接到一个虚拟网桥
host
相当于Vmware中的桥接模式,与宿主机在同一个网络中,但没有独立IP地址。
Docker使用了Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程,Mount Namespace隔离文件系统,Network Namespace隔离网络等。
一个Network Namespace提供了一份独立的网络环境,包括网卡、路由、iptable规则等都与其他的Network Namespace隔离。 一个Docker容器一般会分配一个独立的Network Namespace。 但如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace, 而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡、配置自己的IP等,而是使用宿主机的IP和端口。
container
none
自定义
模式名称 | 简介 | 备注 |
bridge | 容器拥有独属于自己的虚拟网卡和虚拟IP等网络资源,通过docker0虚拟网卡与宿主机的eth0网卡交互,进而与外界网络交互。 | 默认模式 |
host | 容器不拥有任何独立网络资源,与宿主机共享网络空间。 | 弊端:同一端口只能被一个容器服务绑定 |
none | 关闭容器网络功能,仅有独立网络空间但无任何网络资源分配(如虚拟网卡、路由、IP等)。 | 极少使用,适用于需隔离网络环境的场景 |
container | 首个容器以bridge模式启动,后续容器共享首个容器的网络资源,保持其他资源隔离。 | 若首容器停止,依赖其网络的容器也将失去网络连接 |
自定义 | 通过-d指定网络模式类型,支持bridge或overlay(支持多subnet子网配置)。 | 支持容器间使用别名通信,提高了网络配置的灵活性和便利性 |
K8s
1、基础概念
2、资源管理
deployment:管理无状态应用,应用部署、滚动更新和回滚、状态管理
statefulset:管理有状态应用,为每个pod提供了稳定的、唯一的标识符和持久化存储
3、网络
流量是怎么进来的,怎么负载的
用户 → (DNS) → → Apisix ingress controller通过daemonset部署,通过hostNetwork: true,controller的pod直接使用主机的网络接口,即直接使用主机网路接口暴露controller pod → APISIX Ingress Pod →test-clusterip0:8023
ingress的作用是什么
暴露服务,负载均衡,定义路由规则,SSL/TLS
ingress controller的架构是什么
4、安全
5、监控与日志
GO
学习一门语言go或python,学go吧
ELK
logstash的format是干什么的
cuda
conda
Nginx
nginx手动部署以及配置信息,