k8s环境搭建

创建一个新的model虚拟机,处理器为2,硬盘为40G

使用model主机克隆三台新的主机,名称分别为k8s_master,k8s_node01,k8s_node02,运行环境脚本,设置ip地址和名称,IP地址分别为66、77、88,并设置免密登录。

编号

主机名称

ip

配置

1

k8s-master

192.168.2.66

2

k8s-node01

192.168.2.77

3

k8s-node02

192.168.2.88

步骤:

  1. 创建主机,设置ip,hostname,关闭firewalld,selinux,Netmanager
  2. 设置主机之间的ssh免密

k8s-master:

ssh-keygen

ssh-copy-id root@node01的ip x.x.x.77

ssh-copy-id root@node02的ip x.x.x.88

  1. yum源配置

直接将文件放到/etc/yum.repos.d/下面,三个主机都需要这一步

  1. docekr-ce.repo
  2. kuberntes.repo
  3. 清空以及创建缓存

yum clean all && yum makecache

4.主机映射

    三台主机都需要做

vim /etc/hosts

    192.168.2.66 k8s-master

    192.168.2.77 k8s-node01

    192.168.2.88 k8s-node02

    主机之间可使用主机名进行互相ping通

5.三个节点安装必备工具

yum install wget jq psmisc vim net-tools telnet yum-utils device-mapper-persistent-data lvm2 git tree -y

6.三个节点关闭firewalld NetworkManager Selinux SWAP虚拟分区

    systemctl disable --now firewalld

    systemctl disable --now NetworkManager

    setenforce 0

    swapoff -a && sysctl -w vm.swappiness=0

    sed -ri '/^[^#]*swap/s@^@#@' /etc/fstab

7.三个节点同步时间,同时设置计划任务

yum -y install ntpdate

ntpdate time2.aliyun.com

设置计划任务

crontab -e

* /5 * * * * /usr/sbin/ntpdate time2.aliyun.com

which ntpdate

crontab -l

8.配置limit访问极限

三个主机都配置允许的最大访问数

ulimit -SHn 65535

    vim /etc/security/limits.conf

    在末尾添加如下内容:

    * soft nofile 65536

* hard nofile 131072

* soft nproc 65535

* hard nproc 655350

* soft memlock unlimited

* hard memlock unlimited

9.三个节点下载yaml文件(从gitee上下载),配置pod的yaml文件和docekr-compose.yaml的文件相似,等我k8s架构搭建完成之后,添加功能性pod时候使用。

这个仓库里面全都是配置文件

    cd /root/ ; git clone k8s-ha-install: 高可用安装k8s集群文件,参考https://edu.51cto.com/course/23845.html

10.三个节点配置ipvs

    yum install ipvsadm ipset sysstat conntrack libseccomp -y

    加载内核模块

modprobe -- ip_vs

    modprobe -- ip_vs_rr

    modprobe -- ip_vs_wrr

    modprobe -- ip_vs_sh

    modprobe -- nf_conntrack

    vim /etc/modules-load.d/ipvs.conf

# 在系统启动时加载下列 IPVS 和相关功能所需的模块
ip_vs # 负载均衡模块
ip_vs_lc # 用于实现基于连接数量的负载均衡算法
ip_vs_wlc # 用于实现带权重的最少连接算法的模块
ip_vs_rr # 负载均衡rr算法模块
ip_vs_wrr # 负载均衡wrr算法模块
ip_vs_lblc # 负载均衡算法,它结合了最少连接(LC)算法和基于偏置的轮询(Round Robin with Bias)算法
ip_vs_lblcr # 用于实现基于链路层拥塞状况的最少连接负载调度算法的模块
ip_vs_dh # 用于实现基于散列(Hashing)的负载均衡算法的模块
ip_vs_sh # 用于源端负载均衡的模块
ip_vs_fo # 用于实现基于本地服务的负载均衡算法的模块
ip_vs_nq # 用于实现NQ算法的模块
ip_vs_sed # 用于实现随机早期检测(Random Early Detection)算法的模块
ip_vs_ftp # 用于实现FTP服务的负载均衡模块
ip_vs_sh
nf_conntrack # 用于跟踪网络连接的状态的模块
ip_tables # 用于管理防护墙的机制
ip_set # 用于创建和管理IP集合的模块
xt_set # 用于处理IP数据包集合的模块,提供了与iptables等网络工具的接口
ipt_set # 用于处理iptables规则集合的模块
ipt_rpfilter # 用于实现路由反向路径过滤的模块
ipt_REJECT # iptables模块之一,用于将不符合规则的数据包拒绝,并返回特定的错误码
ipip # 用于实现IP隧道功能的模块,使得数据可以在两个网络之间进行传输

systemctl enable --now systemd-modules-load.service      # 开机自启systemd默认提供的网络管理服务

The unit files have no installation config (WantedBy, RequiredBy, Also, Alias
settings in the [Install] section, and DefaultInstance for template units).
This means they are not meant to be enabled using systemctl.
Possible reasons for having this kind of units are:
1) A unit may be statically enabled by being symlinked from another unit's
   .wants/ or .requires/ directory.

   

lsmod | grep -e ip_vs -e nf_conntrack     # 查看已写入加载的模块

ip_vs_sh               16384  0
ip_vs_wrr              16384  0
ip_vs_rr               16384  0
ip_vs                 172032  6 ip_vs_rr,ip_vs_sh,ip_vs_wrr
nf_conntrack          172032  4 xt_conntrack,nf_nat,ipt_MASQUERADE,ip_vs
nf_defrag_ipv6         20480  2 nf_conntrack,ip_vs
nf_defrag_ipv4         16384  1 nf_conntrack
libcrc32c              16384  5 nf_conntrack,nf_nat,nf_tables,xfs,ip_vs

11.三个节点k8s的内核加载

vim /etc/sysctl.d/k8s.conf
# 写入k8s所需内核模块
net.bridge.bridge-nf-call-iptables = 1 # 控制网络桥接与iptables之间的网络转发行为
net.bridge.bridge-nf-call-ip6tables = 1 # 用于控制网络桥接(bridge)的IP6tables过滤规则。当该参数设置为1时,表示启用对网络桥接的IP6tables过滤规则
fs.may_detach_mounts = 1 # 用于控制文件系统是否允许分离挂载,1表示允许
net.ipv4.conf.all.route_localnet = 1 # 允许本地网络上的路由。设置为1表示允许,设置为0表示禁止。
vm.overcommit_memory=1 # 控制内存分配策略。设置为1表示允许内存过量分配,设置为0表示不允许。
vm.panic_on_oom=0 # 决定当系统遇到内存不足(OOM)时是否产生panic。设置为0表示不产生panic,设置为1表示产生panic。
fs.inotify.max_user_watches=89100 # inotify可以监视的文件和目录的最大数量。
fs.file-max=52706963 # 系统级别的文件描述符的最大数量。
fs.nr_open=52706963 # 单个进程可以打开的文件描述符的最大数量。
net.netfilter.nf_conntrack_max=2310720 # 网络连接跟踪表的最大大小。
net.ipv4.tcp_keepalive_time = 600 # TCP保活机制发送探测包的间隔时间(秒)。
net.ipv4.tcp_keepalive_probes = 3 # TCP保活机制发送探测包的最大次数。
net.ipv4.tcp_keepalive_intvl =15 # TCP保活机制在发送下一个探测包之前等待响应的时间(秒)。
net.ipv4.tcp_max_tw_buckets = 36000 # TCP TIME_WAIT状态的bucket数量。
net.ipv4.tcp_tw_reuse = 1 # 允许重用TIME_WAIT套接字。设置为1表示允许,设置为0表示不允许。
net.ipv4.tcp_max_orphans = 327680 # 系统中最大的孤套接字数量。
net.ipv4.tcp_orphan_retries = 3 # 系统尝试重新分配孤套接字的次数。
net.ipv4.tcp_syncookies = 1 # 用于防止SYN洪水攻击。设置为1表示启用SYN cookies,设置为0表示禁用。
net.ipv4.tcp_max_syn_backlog = 16384 # SYN连接请求队列的最大长度。
net.ipv4.ip_conntrack_max = 65536 # IP连接跟踪表的最大大小。
net.ipv4.tcp_max_syn_backlog = 16384 # 系统中最大的监听队列的长度。
net.ipv4.tcp_timestamps = 0 # 用于关闭TCP时间戳选项。
net.core.somaxconn = 16384 # 用于设置系统中最大的监听队列的长度
 

[root@k8s-master ~]# reboot
# 保存后,所有节点重启,保证重启后内核依然加载
使用MobaXterm工具,按r重新连接一次

[root@k8s-master ~]# lsmod | grep --color=auto -e ip_vs -e nf_conntrack
ip_vs_ftp              16384  0
nf_nat                 45056  3 ipt_MASQUERADE,nft_chain_nat,ip_vs_ftp
ip_vs_sed              16384  0
ip_vs_nq               16384  0
ip_vs_fo               16384  0
ip_vs_sh               16384  0
ip_vs_dh               16384  0
ip_vs_lblcr            16384  0
ip_vs_lblc             16384  0
ip_vs_wrr              16384  0
ip_vs_rr               16384  0
ip_vs_wlc              16384  0
ip_vs_lc               16384  0
ip_vs                 172032  25 ip_vs_wlc,ip_vs_rr,ip_vs_dh,ip_vs_lblcr,ip_vs_sh,ip_vs_fo,ip_vs_nq,ip_vs_lblc,ip_vs_wrr,ip_vs_lc,ip_vs_sed,ip_vs_ftp
nf_conntrack          172032  4 xt_conntrack,nf_nat,ipt_MASQUERADE,ip_vs
nf_defrag_ipv6         20480  2 nf_conntrack,ip_vs
nf_defrag_ipv4         16384  1 nf_conntrack
libcrc32c              16384  5 nf_conntrack,nf_nat,nf_tables,xfs,ip_vs

12.三个节点下载podman、安装docker-ce、docker-ce-cli、containerd.io

    卸载之前的

yum -y remove podman containerd

重新安装新的

    yum -y install docker-ce docker-ce-cli containerd.io

13.三个节点配置containerd需要的核心模块overlay、br_netfilter

    cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf

    >overlay

    >br_netfilter

    >EOF

[root@k8s-master ~]# modprobe -- overlay
[root@k8s-master ~]# modprobe -- br_netfilter

   

cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf

> net.bridge.bridge-nf-call-iptables  = 1 # 用于控制网络桥接是否调用iptables进行包过滤和转发。
> net.ipv4.ip_forward                 = 1 # 路由转发,1为开启
> net.bridge.bridge-nf-call-ip6tables = 1 # 控制是否在桥接接口上调用IPv6的iptables进行数据包过滤和转发。
> EOF
net.bridge.bridge-nf-call-iptables  = 1
net.ipv4.ip_forward                 = 1
net.bridge.bridge-nf-call-ip6tables = 1
[root@k8s-master ~]# sysctl --system

14.三个节点配置contained配置文件

containerd config default | tee /etc/containerd/config.toml

vim /etc/containerd/config.toml

63 sandbox_image = “registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9”

127 SystemdCgroup = true

保存退出

启动containerd

systemctl enable --now containerd.service

查看状态

systemctl status containerd.service

15.三个节点配置crictl客户端连接的运行位置

    cat > /etc/crictl.yaml <<EOF

    >runtime-endpoint: unix:///run/containerd/containerd.sock

    >image-endpoint: unix:///run/containerd/containerd.sock

    >timeout: 10

    >debug:false

    >EOF

16.三个节点安装kubernetes组件

    yum -y install kubeadm-1.28* kubectl-1.28* kublet-1.28*

    systemctl daemon-reload

    systemctl enable --now kubelet

如果kubelet无法正常启动,检查swap是否已经取消虚拟分区,查看/var/log/message如果是没有/var/lib/kublet/config.yaml文件,可能需要重新安装。

yum -y remove kubel-1.28*

yum -y install kubel-1.28*

systemctl daemon-reload

systemctl enable --now kubelet

kubelet端口是10248、10255、10250

17.集群初始化

Master主机:

    1.拉取镜像

    创建一个kubeadm-config.yaml文件并写入以下内容

[root@k8s-master ~]# vim kubeadm-config.yaml # 修改kubeadm配置文件
apiVersion: kubeadm.k8s.io/v1beta3 # 指定Kubernetes配置文件的版本,使用的是kubeadm API的v1beta3版本
bootstrapTokens: # 定义bootstrap tokens的信息。这些tokens用于在Kubernetes集群初始化过程中进行身份验证
- groups: # 定义了与此token关联的组
  - system:bootstrappers:kubeadm:default-node-token 
  token: 7t2weq.bjbawausm0jaxury # bootstrap token的值
  ttl: 24h0m0s # token的生存时间,这里设置为24小时
  usages: # 定义token的用途
  - signing # 数字签名
  - authentication # 身份验证
kind: InitConfiguration # 指定配置对象的类型,InitConfiguration:表示这是一个初始化配置
localAPIEndpoint: # 定义本地API端点的地址和端口
  advertiseAddress: 192.168.15.11
  bindPort: 6443
nodeRegistration: # 定义节点注册时的配置
  criSocket: unix:///var/run/containerd/containerd.sock # 容器运行时(CRI)的套接字路径
  name: k8s-master # 节点的名称
  taints: # 标记
  - effect: NoSchedule # 免调度节点
    key: node-role.kubernetes.io/control-plane # 该节点为控制节点
---
apiServer: # 定义了API服务器的配置
  certSANs: # 为API服务器指定了附加的证书主体名称(SAN),指定IP即可
  - 192.168.15.11
  timeoutForControlPlane: 4m0s # 控制平面的超时时间,这里设置为4分钟
apiVersion: kubeadm.k8s.io/v1beta3 # 指定API Server版本
certificatesDir: /etc/kubernetes/pki # 指定了证书的存储目录
clusterName: kubernetes # 定义了集群的名称为"kubernetes"
controlPlaneEndpoint: 192.168.15.11:6443 # 定义了控制节点的地址和端口
controllerManager: {} # 控制器管理器的配置,为空表示使用默认配置
etcd: # 定义了etcd的配置
  local: # 本地etcd实例
    dataDir: /var/lib/etcd # 数据目录
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers # 指定了Kubernetes使用的镜像仓库的地址,阿里云的镜像仓库。
kind: ClusterConfiguration # 指定了配置对象的类型,ClusterConfiguration:表示这是一个集群配置
kubernetesVersion: v1.28.2 # 指定了kubernetes的版本
networking: # 定义了kubernetes集群网络设置
  dnsDomain: cluster.local # 定义了集群的DNS域为:cluster.local
  podSubnet: 172.16.0.0/16 # 定义了Pod的子网
  serviceSubnet: 10.96.0.0/16 # 定义了服务的子网
scheduler: {} # 使用默认的调度器行为
[root@k8s-master ~]# kubeadm config migrate --old-config kubeadm-config.yaml --new-config new.yaml
# 将旧的kubeadm配置文件转换为新的格式

    2.初始化

    kubeadm init --config /root/new.yaml  --upload-certs

    保存最后一段内容,如果以后谁想加入集群就写这段内容

vim token

初始化不成功原因:

1.主机配置2核2G40G

2.echo 1 >/proc/net/ipv4/ip_forward

3.kubelet无法启动

    1.swap虚拟分区没关

    2.没有配置文件

    4.关注错误日志文件vim /var/log/message

18.将工作节点加入集群

加入节点,将node01和node02两个子节点加入过来

停止kubelet

在node01和node02:

systemctl stop kubelet.service

master主机:

查看集群状态

    kubectl get nodes

获取失败时,运行下面命令,临时修改环境变量

export KUBECONFIG=/etc/kubernetes/admin.conf

长期修改:

    查看所有pod状态:

kubectl get po -A

[root@k8s-master ~]# kubectl get po -Aowide

添加不成功的原因:

1.kubelet没有stop

2.ip没有转发

3.token 重新初始化或者生成token

4.node节点中containerd是否正常

状态status:

状态名称

中文

说明

Pending

挂起

当前pod没有工作

Running

运行中

当前pod正常工作

containercreating

正在创建容器

正在创建容器

19.部署calico的pod

    跳转分支

git checkout manual-installation-v1.28.x && cd calico/

修改网段

创建calico的pod

kubectl apply -f calico.yaml

查看容器和节点状态:

kubectl get po -A

查看日志:

这里遇到了一个问题:

Node01和node02中仓库的配置出错了

20.使用ifconfig或者ip a s指令查看虚拟网卡

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

webpack5 创建多页面应用配置

简单版webpack创建多页面应用&#xff0c;只要把配置文件复制下来&#xff0c;然后npm安装相应插件&#xff0c;正常是能跑起来了 创建 初始化 npm init生成package.json文件安装webpack npm i -D webpack webpack-cli webpack-dev-server创建main.js入口文件和webpack.config…

Spring Cloud之二 微服务注册

1&#xff1a;Intellij 新建服务 user-service 2&#xff1a;pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"…

当 PLC 遇见 “IT”

IT&OT 深度融合工控人加入PLC工业自动化精英社群 IT & OT integration 当今不断发展的工业自动化世界&#xff0c;在智能、高效和快速的系统和软件应用中&#xff0c;数据扮演着越来越重要的角色。传统的 IT 网络中&#xff0c;提供了丰富多彩的规范和协议&#xff0…

kitti数据深度图转点云坐标计算方法与教程(代码实现)

文章目录 前言一、kitti深度图官网介绍1、官网深度图介绍2、深度图读取官网代码(python)3、深度图解读1、数据格式内容2、深度图加工3、深度图转相机坐标深度二、kitti数据内参P矩阵解读1、P2矩阵举例2、内参矩阵 (3x3)3、特殊平移向量(第4列)4、kitti的bx与by解释三、kitti深…

使用Redis实现记录访问次数(三种方案)

目录 0. 前言1. 使用Filter实现2. 使用AOP实现 1. 导入依赖 2. 写一个切面类&#xff0c;实现统计访问次数。 3. 开启AOP 4. 测试 5. plus版本 (1) 新建一个bean类 (2) 新增一个controller方法 (3) 新增一个循环增强方法 (4) 测试…

Python之Redis操作方法

目录 一. 介绍A. 什么是 Redis&#xff1f;B. Redis 的特点和用途C. Python 操作 Redis 的优势 二. 使用 Redis 客户端库A. 安装 Redis 客户端库B. 导入 Redis 模块C. 创建 Redis 客户端实例 三. 数据操作A. 键值对操作1. 设置键值对2. 获取键值对3. 检查键是否存在4. 删除键5.…

使用切换 JDK 的方式优化部署微服务占用内存过高的问题

使用切换 JDK 的方式优化部署微服务占用内存过高的问题 一、前言二、下载 J9 虚拟机的JDK三、切换 JDK1、上传到服务器2、解压3、修改 JDK 路径4、解决 JDK 没有切换成功的问题 一、前言 前段时间在服务器部署了微服务项目&#xff0c;但即使限制了每个服务的堆&#xff0c;内…

【网络安全】-文件下载漏洞-pikachu

文件操作漏洞包括文件上传漏洞&#xff0c;文件包含漏洞&#xff0c;文件下载漏洞。 文章目录  前言 什么是文件下载漏洞&#xff1f; 1.常见形式&#xff1a; 常见链接形式&#xff1a; 常见参数&#xff1a; 2.利用方式&#xff1a; 3.举例&#xff1a;pikachu不安全的文件…

ABB机械手备份与恢复

ABB机械手备份与恢复 备份恢复系统 备份 ABB机器人数据备份的对象是所有正在系统内存中运行的RAPID程序和系统参数。当机器人系统出现错乱或者重新安装系统以后&#xff0c;可以通过备份快速地把机器人恢复到备份时的状态。 如果导出到U盘需要将U盘插入USB接口&#xff0c;位置…

【思博伦】史上最详细思博伦测试仪使用精讲!图解超赞超详细!!!

承接上文 目录 2.2.9.7 配置TCPFLAG 2.2.9.8 配置分片 2.2.9.9 添加VLAN标签 2.2.9.10 添加MPLS标签 2.2.9.11 添加Vntag标签 2.2.9.12 重新快速新建新的帧内容 ​​​​​​​2.2.10 导入Pcap包 2.2.11 发包配置 2.2.11.1 发包模式配置 ​​​​​​​2.2.11.2 配置…

SpringMVC基于注解使用:国际化

01-国际化介绍 首先在bootstrap下载个页面 下载后把登录页面的代码粘上去 然后再登录页面代码上有些超链接需要再spring-mvc.xml里面配置下&#xff0c;登录页面才能正常显示 配置静态资源 国际化-根据浏览器语言国际化 现在是中文的情况&#xff0c;要改为英文 1.配置下属…

ROS入门教程(八)—— 路径规划导航实战

通过Gazebo仿真和RViz仿真的学习后,本文将通过Gazebo与RViz联合仿真实现机器人在Gazebo仿真环境中运动,通过远距搜索与近距搜索实现机器人路径规划导航。 目录 前言 实现思路 仿真模型 仿真源码 前言 前面的ROS入门教程提供ROS仿真的基础步骤,本文提供了实现思路,仿真…

C#笔记10 Thread类怎么终止(Abort)和阻止(Join)线程

Thread类 C#笔记8 线程是什么&#xff1f;多线程怎么实现和操作&#xff1f;-CSDN博客 C#笔记9 对线程Thread的万字解读 小小多线程直接拿下&#xff01;-CSDN博客 上次说过怎么简单的使用多线程&#xff0c;怎么创建多线程&#xff0c;但是没有具体分析它的终止和释放。 线…

L2线性回归模型

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 鸢尾花数据集的单变量与多变量预测 在这周学习如何使用 机器学习 模型对鸢尾花&#xff08;Iris&#xff09;数据集进行单变量与多变量预测。我们将使用鸢尾花…

学习pyqt5相关知识回顾

1. 模块 1.1 import导入 1) 模块:是一系列功能的集合体,模块名.功能名,就可以使用模块的功能 2) 首次导入模块,就会立即执行模块里面的内容 3) 当前名称空间会产生一个名字module,指向module.py产生的名称空间.我们可以使用module.name/函数名,来调用module.py里面的内容. …

RQ-RAG:提升检索增强生成模型的查询精炼能力

人工智能咨询培训老师叶梓 转载标明出处 大模型在面对未见场景时&#xff0c;往往会产生不准确或虚构的回答&#xff0c;这限制了它们的实用性。为了解决这一问题&#xff0c;香港科技大学、香港理工大学和麻省理工学院的研究团队提出了一种名为RQ-RAG&#xff08;Retrieval-A…

被低估的SQL

SQL是现代数据库管理系统中不可或缺的一部分。尽管它的使用已十分普遍&#xff0c;但在数据处理领域&#xff0c;SQL的某些功能和潜力仍然被许多人低估。接下来&#xff0c;小编将与您一起&#xff0c;探讨SQL的一些被忽视的特性&#xff0c;揭示它在数据管理中的真正实力。 1.…

模拟实现string类: clear函数、流提取(<<)和流插入(>>)运算符重载、>、<、==、<=、>=、!=的运算符重载、赋值运算符(=)重载等的介绍

文章目录 前言一、 clear函数二、流提取(<<)和流插入(>>)运算符重载三、 >、<、、<、>、!的运算符重载四、赋值运算符&#xff08;&#xff09;重载总结 前言 模拟实现string类: clear函数、流提取(<<)和流插入(>>)运算符重载、>、<…

记一次导入dbf文件后数据为空问题的解决方法

前言 省流&#xff1a;这篇文章最终采用的是更换导出文件格式的方法&#xff0c;看到这里觉得方法不适用的小伙伴可以不用浪费几秒钟看完这篇文章哦。 问题描述 作者使用的是Navicat数据库管理工具&#xff0c;然后在将源数据库的数据表导出为dbf格式文件后&#xff0c;再将…

Linux进阶命令-echodatealias

作者介绍&#xff1a;简历上没有一个精通的运维工程师。希望大家多多关注作者&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 经过上一章Linux日志的讲解&#xff0c;我们对Linux系统自带的日志服务已经有了一些了解。我们接下来将讲解一些进阶命令&am…