K8S核心组件etcd详解(上)
1 介绍
https://etcd.io/docs/v3.5/
etcd是一个高可用的分布式键值存储系统,是CoreOS(现在隶属于Red Hat)公司开发的一个开源项目。它提供了一个简单的接口来存储和检索键值对数据,并使用Raft协议实现了分布式一致性。etcd广泛应用于Docker、Kubernetes等分布式系统中,用于存储配置信息、服务发现、领导者选举等方面。
2 etcd高可用集群部署
2.1 服务器配置
| 主机名 | ip地址 | cpu数量 | 内存数量 |
|---|---|---|---|
| etcd1 | 172.18.101.39 | 4 | 8 |
| etcd2 | 172.18.101.40 | 4 | 8 |
| etcd3 | 172.18.101.41 | 4 | 8 |
2.2 部署etcd集群
安装包下载地址
https://github.com/etcd-io/etcd/tags
以下操作在三个etcd节点上进行
[root@etcd-1 ~]# wget https://github.com/etcd-io/etcd/releases/download/v3.4.27/etcd-v3.4.27-linux-amd64.tar.gz [root@etcd-1 ~]# tar xvf etcd-v3.4.27-linux-amd64.tar.gz [root@etcd-1 ~]# mv etcd-v3.4.27-linux-amd64/etcd* /usr/local/bin/ ##复制etcd命令文件 [root@etcd-1 ~]# mkdir -p /var/lib/etcd/ ##创建数据存放目录 [root@etcd-1 ~]# mkdir -p /etc/etcd ##创建配置文件存放目录
三个节点设置etcd配置文件,三个节点的防火墙要放行2379及2380端口
#etcd节点1 [root@etcd-1 ~]# cat /etc/etcd/etcd.conf ETCD_NAME=etcd1 ETCD_DATA_DIR="/var/lib/etcd" ETCD_LISTEN_PEER_URLS="http://172.18.101.39:2380" ETCD_LISTEN_CLIENT_URLS="http://127.0.0.1:2379,http://172.18.101.39:2379" ETCD_INITIAL_ADVERTISE_PEER_URLS="http://172.18.101.39:2380" ETCD_INITIAL_CLUSTER="etcd1=http://172.18.101.39:2380,etcd2=http://172.18.101.40:2380,etcd3=http://172.18.101.41:2380" ETCD_INITIAL_CLUSTER_STATE="new" ETCD_INITIAL_CLUSTER_TOKEN="singless" ETCD_ADVERTISE_CLIENT_URLS="http://172.18.101.39:2379"#etcd节点2 [root@etcd-2 ~]# cat /etc/etcd/etcd.conf ETCD_NAME=etcd2 ETCD_DATA_DIR="/var/lib/etcd" ETCD_LISTEN_PEER_URLS="http://172.18.101.40:2380" ETCD_LISTEN_CLIENT_URLS="http://127.0.0.1:2379,http://172.18.101.40:2379" ETCD_INITIAL_ADVERTISE_PEER_URLS="http://172.18.101.40:2380" ETCD_INITIAL_CLUSTER="etcd1=http://172.18.101.39:2380,etcd2=http://172.18.101.40:2380,etcd3=http://172.18.101.41:2380" ETCD_INITIAL_CLUSTER_STATE="new" ETCD_INITIAL_CLUSTER_TOKEN="singless" ETCD_ADVERTISE_CLIENT_URLS="http://172.18.101.40:2379"#etcd节点3 [root@etcd-3 ~]# cat /etc/etcd/etcd.conf ETCD_NAME=etcd3 ETCD_DATA_DIR="/var/lib/etcd" ETCD_LISTEN_PEER_URLS="http://172.18.101.41:2380" ETCD_LISTEN_CLIENT_URLS="http://127.0.0.1:2379,http://172.18.101.41:2379" ETCD_INITIAL_ADVERTISE_PEER_URLS="http://172.18.101.41:2380" ETCD_INITIAL_CLUSTER="etcd1=http://172.18.101.39:2380,etcd2=http://172.18.101.40:2380,etcd3=http://172.18.101.41:2380" ETCD_INITIAL_CLUSTER_STATE="new" ETCD_INITIAL_CLUSTER_TOKEN="singless" ETCD_ADVERTISE_CLIENT_URLS="http://172.18.101.41:2379"
-
ETCD_NAME:指定ETCD节点的名称。每个节点在集群中应具有唯一的名称,以便进行识别和通信。 -
ETCD_DATA_DIR:指定ETCD存储数据的目录路径。ETCD使用此目录来持久化存储数据。 -
ETCD_LISTEN_PEER_URLS:指定ETCD节点监听对等节点连接的URL。对等URL用于节点之间的通信和数据同步。 -
ETCD_LISTEN_CLIENT_URLS:指定ETCD节点监听客户端连接的URL列表。客户端URL用于与ETCD集群进行交互,例如执行读取或写入操作。 -
ETCD_INITIAL_ADVERTISE_PEER_URLS:指定ETCD节点初始公告对等节点连接的URL。当新节点加入集群时,将向其他节点宣告自己的URL,以便其他节点可以找到并连接到它。 -
ETCD_INITIAL_CLUSTER:指定ETCD集群的初始成员列表及其对等节点连接URL。每个成员由名称和对等节点连接URL组成,用逗号分隔。在启动集群时,指定初始成员列表用于插入新节点。 -
ETCD_INITIAL_CLUSTER_STATE:指定ETCD集群的初始状态。可选值为"new"和"existing"。"new"表示创建一个新的集群,"existing"表示已经存在的集群。 -
ETCD_INITIAL_CLUSTER_TOKEN:指定ETCD集群的初始令牌。所有成员在启动时应使用相同的令牌,以便它们可以识别和加入相同的集群。 -
ETCD_ADVERTISE_CLIENT_URLS:指定ETCD节点公告给客户端的连接URL。客户端连接URL用于向应用程序或工具公开ETCD节点,以便进行读取和写入操作。
配置systemd管理etcd,三个节点配置相同
[root@etcd-1 ~]# cat /usr/lib/systemd/system/etcd.service [Unit] Description=Etcd Server After=network.target After=network-online.target Wants=network-online.target[Service] User=root Type=notify EnvironmentFile=-/etc/etcd/etcd.conf ExecStart=/usr/local/bin/etcd Restart=on-failure RestartSec=10s LimitNOFILE=40000[Install] WantedBy=multi-user.target
三个节点上启动服务
[root@etcd-1 ~]# systemctl enable etcd [root@etcd-1 ~]# systemctl start etcd
2.3 部署后集群状态检查
2.3.1 查看集群成员
[root@etcd-1 ~]# etcdctl member list ##列出集群成员 916281517eb238d9, started, etcd2, http://172.18.101.40:2380, http://172.18.101.40:2379, false 9a04401d57e3afba, started, etcd1, http://172.18.101.39:2380, http://172.18.101.39:2379, false 9f9b71960dcb7180, started, etcd3, http://172.18.101.41:2380, http://172.18.101.41:2379, false [root@etcd-1 ~]# etcdctl -w table endpoint status --endpoints=172.18.101.39:2379,172.18.101.40:2379,172.18.101.41:2379 ##查看集群leader是哪个节点 +--------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+ | ENDPOINT | ID | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS | +--------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+ | 172.18.101.39:2379 | 9a04401d57e3afba | 3.4.27 | 20 kB | true | false | 123 | 14 | 14 | | | 172.18.101.40:2379 | 916281517eb238d9 | 3.4.27 | 20 kB | false | false | 123 | 14 | 14 | | | 172.18.101.41:2379 | 9f9b71960dcb7180 | 3.4.27 | 20 kB | false | false | 123 | 14 | 14 | | +--------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+

2.3.2 查看集群成员的健康状态
[root@etcd-1 ~]# etcdctl -w table endpoint health --endpoints=172.18.101.39:2379,172.18.101.40:2379,172.18.101.41:2379 +--------------------+--------+------------+-------+ | ENDPOINT | HEALTH | TOOK | ERROR | +--------------------+--------+------------+-------+ | 172.18.101.39:2379 | true | 2.190331ms | | | 172.18.101.41:2379 | true | 2.517434ms | | | 172.18.101.40:2379 | true | 3.06371ms | | +--------------------+--------+------------+-------+

3 某个节点异常如何处理
-
使用命令移除节点
-
删除异常节点数据目录
-
重新将节点添加至集群
3.1 移除节点
假设etcd3出现了异常
[root@etcd-1 ~]# etcdctl member list ##第一列为节点的id 916281517eb238d9, started, etcd2, http://172.18.101.40:2380, http://172.18.101.40:2379, false 9a04401d57e3afba, started, etcd1, http://172.18.101.39:2380, http://172.18.101.39:2379, false 9f9b71960dcb7180, started, etcd3, http://172.18.101.41:2380, http://172.18.101.41:2379, false [root@etcd-1 ~]# [root@etcd-1 ~]# etcdctl member remove 9f9b71960dcb7180 ##通过节点的id将节点删除 Member 9f9b71960dcb7180 removed from cluster 8356fccf618a037f [root@etcd-1 ~]# etcdctl member list 916281517eb238d9, started, etcd2, http://172.18.101.40:2380, http://172.18.101.40:2379, false 9a04401d57e3afba, started, etcd1, http://172.18.101.39:2380, http://172.18.101.39:2379, false
3.2 删除异常节点的数据目录
[root@etcd-3 ~]# rm -rf /var/lib/etcd [root@etcd-3 ~]# cat /etc/etcd/etcd.conf ##修改ETCD_INITIAL_CLUSTER_STATE为exsiting ETCD_NAME=etcd3 ETCD_DATA_DIR="/var/lib/etcd" ETCD_LISTEN_PEER_URLS="http://172.18.101.41:2380" ETCD_LISTEN_CLIENT_URLS="http://127.0.0.1:2379,http://172.18.101.41:2379" ETCD_INITIAL_ADVERTISE_PEER_URLS="http://172.18.101.41:2380" ETCD_INITIAL_CLUSTER="etcd1=http://172.18.101.39:2380,etcd2=http://172.18.101.40:2380,etcd3=http://172.18.101.41:2380" ETCD_INITIAL_CLUSTER_STATE="existing" ##修改为existing ETCD_INITIAL_CLUSTER_TOKEN="singless" ETCD_ADVERTISE_CLIENT_URLS="http://172.18.101.41:2379"

3.3 将节点添加至集群
[root@etcd-1 ~]# etcdctl member add etcd3 --peer-urls=http://172.18.101.41:2380 Member 51fc8f5f71060fdc added to cluster 8356fccf618a037f [root@etcd-1 ~]# etcdctl member list ##可以看到节点添加后处于一个未启动的状态,需要手动去etcd-3节点上启动一下etcd服务 51fc8f5f71060fdc, unstarted, , http://172.18.101.41:2380, , false 916281517eb238d9, started, etcd2, http://172.18.101.40:2380, http://172.18.101.40:2379, false 9a04401d57e3afba, started, etcd1, http://172.18.101.39:2380, http://172.18.101.39:2379, false

在etcd-3上启动服务即可
[root@etcd-3 ~]# systemctl start etcd [root@etcd-1 ~]# etcdctl member list ##重新添加后,节点的id会变,属于正常现象 51fc8f5f71060fdc, started, etcd3, http://172.18.101.41:2380, http://172.18.101.41:2379, false 916281517eb238d9, started, etcd2, http://172.18.101.40:2380, http://172.18.101.40:2379, false 9a04401d57e3afba, started, etcd1, http://172.18.101.39:2380, http://172.18.101.39:2379, false
4 etcdctl增删改查操作
https://github.com/etcd-io/etcd/tree/main/etcdctl
etcdctl 是用于与 ETCD 进行交互的命令行工具,它提供了一系列命令和选项,用于检索、设置、修改和删除 ETCD 中的数据。
4.1 etcd的数据存储模型
前面介绍过,etcd是一个分布式的键值存储系统。etcd在键的组织上采用了层次化的空间结构,类似于文件系统中目录的概念。但是并不存在目录的那种层级关系。
例如现在
类似于文件系统中的目录(文件夹)结构,ETCD的命名空间允许以键的层次结构来组织数据,并且每个键可以唯一地标识一个节点。顶层节点被称为根节点,然后可以在根节点下创建子节点,子节点又可以包含更多子节点,以此类推。这种层次化的结构可以用于将数据进行分类、分类和组织。
例如,假设我们有以下目录结构:
-
/singless/test
-
/singless/test/gender
在上述示例中/singless/test和/singless/test/gender,有类似于目录一样的共同的索引前缀/和/singless,但是并不存在目录的那种层级关系。它们都可以作为一个key存储相应的value。
4.2 增和改
增加数据和修改数据需要用到put命令进行操作
[root@etcd-1 ~]# etcdctl put /singless/test/gender male ##创建一个键/singless/test/gender,值为male OK [root@etcd-1 ~]# etcdctl put /singless/test true ##创建一个键/singless/test,值为test OK

4.3 查询操作
查询操作需要使用到get参数
[root@etcd-1 ~]# etcdctl get /singless/test/gender ##根据具体的key查询对应的值 /singless/test/gender male [root@etcd-1 ~]# etcdctl get --prefix / ##根据索引前缀查询,这里查询的是以/为前缀的key、value,所以能看到所有的键值对 /singless/test true /singless/test/gender male [root@etcd-1 ~]# etcdctl put /singless/test false ##使用put修改键/singless/test的value OK [root@etcd-1 ~]# etcdctl get /singless/test /singless/test false

4.4 删除操作
删除操作使用del命令
[root@etcd-1 ~]# etcdctl del /singless/test ##可以指定key进行删除 1 [root@etcd-1 ~]# etcdctl get --prefix / /singless/test/gender male [root@etcd-1 ~]# etcdctl del --prefix / ##也可以执行索引前缀进行删除 1 [root@etcd-1 ~]# etcdctl get --prefix /
5 k8s中的etcd
5.1 介绍
k8s中所有对象的manifest都需要保存到某个地方,这样他们的manifest在api server重启和失败的时候才不会丢失,因此引入了etcd。在k8s中只有api server和etcd直接交互,其它组件都通过api server间接和etcd交互,这样做的好处如下。
-
增强乐观锁系统及验证系统的健壮性
-
方便后续存储的替换,只需修改api server组件的相关接口。
etcd是一个响应快、分布式、一致的KV存储,也是k8s存储集群状态和元数据的唯一地方。

5.2 查看k8s中etcd存储的数据
[root@k8s-master01 ~]# kubectl get pod -n kube-system |grep etcd etcd-k8s-master01 1/1 Running 1 47d etcd-k8s-master02 1/1 Running 0 47d etcd-k8s-master03 1/1 Running 0 47d [root@k8s-master01 ~]# [root@k8s-master01 ~]# kubectl exec -it -n kube-system etcd-k8s-master01 -- /bin/sh sh-5.1# etcdctl member list --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key 15c808b23512a31a, started, k8s-master02, https://10.0.107.77:2380, https://10.0.107.77:2379, false 5ca9692dbcd57e55, started, k8s-master03, https://10.0.113.204:2380, https://10.0.113.204:2379, false f8b45063ae1a7dfa, started, k8s-master01, https://10.0.87.66:2380, https://10.0.87.66:2379, false
k8s中的etcd需要使用到证书进行认证

查看etcd中存储的数据,可以手动在master节点上安装etcdctl命令
[root@k8s-master01 ~]# export ETCDCTL_API=3 ##指定使用的api版本 [root@k8s-master01 ~]# etcdctl get --prefix "" --endpoints=10.0.87.66:2379,10.0.107.77:2379,10.0.113.204:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key |head -2
--endpoints指定etcd节点,另外要使用到k8s证书,证书通常在/etc/kubernetes/pki/目录下,以下输出可以看到etcd中存储的k8s相关的键值数据。

相关文章:
K8S核心组件etcd详解(上)
1 介绍 https://etcd.io/docs/v3.5/ etcd是一个高可用的分布式键值存储系统,是CoreOS(现在隶属于Red Hat)公司开发的一个开源项目。它提供了一个简单的接口来存储和检索键值对数据,并使用Raft协议实现了分布式一致性。etcd广泛应用…...
STM32存储左右互搏 I2C总线FATS读写EEPROM ZD24C1MA
STM32存储左右互搏 I2C总线FATS读写EEPROM ZD24C1MA 在较低容量存储领域,EEPROM是常用的存储介质,可以通过直接或者文件操作方式进行读写。不同容量的EEPROM的地址对应位数不同,在发送字节的格式上有所区别。EEPROM是非快速访问存储…...
微服务—远程调用(RestTemplate)
在微服务的所有框架中,SpringCloud脱颖而出,它是目前国内使用的最广泛的微服务框架 (官网地址),它集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱…...
Fine tune简介
目录 Intro Related work Example .1 重新训练 .2 使用新的数据集进行fine tune .3 修改net结构 References 移学习不是一种算法而是一种机器学习思想,应用到深度学习就是微调(Fine-tune)。通过修改预训练网络模型结构(如修改样本类别输出个数),选择性载入预训练网络…...
centos nginx配置ipv4和ipv6的地址都可以访问同一个网站
标题centos nginx配置ipv4和ipv6的地址都可以访问同一个网站 在 Nginx 中配置使 IPv4 和 IPv6 地址都可以访问同一个网站相对简单。只需要确保 Nginx 配置文件正确地配置了监听 IPv4 和 IPv6 地址的监听器即可。 打开你的 Nginx 配置文件,通常位于 /etc/nginx/nginx…...
高教杯数学建模2020C题总结
🧡1. 前言🧡 跟队友花了三天模拟2020C题,现在整理一下一些数据处理的代码,以及在模拟中没有解决的问题。方便以后回溯笔记。 🧡2. 数据处理🧡 2.1 导入数据,并做相关预处理 import pandas a…...
Swagger
目录 简介 使用方式: 常用注解 简介 使用Swagger你只需要按照他的规范去定义接口及接口相关信息再通过Swagger衍生出来的一系列项目和工具,就可以做到生成各种格式的接口文档,以及在线接口调试页面等等。 官网:https://swagger…...
Android 13像Settings一样获取热点和网络共享
一.背景 由于客户定制的Settings里面需要获取到热点和网络共享状态,所以需要实现此功能。 目录 一.背景 二.前提条件 三.调用api 二.前提条件 首先应用肯定要是系统应用,并且导入framework.jar包,具体可以参考: Android 应用自动开启辅助(无障碍)功能并使用辅助(无障碍…...
操作系统搭建相关知识
文章目录 系统篇netstat命令systemctl命令Systemd系统资源分类(12类) 网络篇ifconfig命令操作系统配置动态IP脚本dhcp服务的安装与配置防火墙相关知识 操作系统常用配置文件 系统篇 netstat命令 netstat指路 systemctl命令 常用于重启系统的每个服务…...
【校招VIP】前端校招考点之vue底层特性
考点介绍: 大家在面试途中遇到的相对多的问题,也是难点的问题,一般都有vue底层原理。对于只会用但是不懂的小白来说真是太痛苦了,仅仅能说出来 一些 数据劫持,双向数据绑定,虚拟dom树的名词来说远远不够。 …...
vue3+vite配置vantUI主题
❓在项目中统一配置UI主题色,各个组件配色统一修改 vantUI按需安装 参考vantUI文档 创建vantVar.less文件夹进行样式编写 vantVar.less :root:root{//导航--van-nav-bar-height: 44px;//按钮--van-button-primary-color: #ffffff;--van-button-primary-backgr…...
C++基础语法——继承
1.继承是什么? 继承是一种面向对象编程的概念,它允许一个类(称为子类或派生类)从另一个类(称为基类或父类)继承属性和方法。继承使得子类能够使用基类已有的代码,并且可以在此基础上进行扩展或修…...
vim配置之spf13-vim
文章目录 vim配置:spf13-vim什么是spf13-vim安装*nix and os x安装 spf13-vim使用技巧或快捷键spf13的vim默认没有启用剪切板,需要在vimrc中设置 vim配置:spf13-vim 什么是spf13-vim 官网:http://vim.spf13.com/ 它是一个完全跨平台发布,保持vim的感觉…...
Azure如何启用网络观察应用程序
文章目录 基础概念介绍实操 基础概念介绍 Azure中的网络观察应用程序是一种用于监视和诊断Azure网络的工具。它提供了一种集中管理和监控网络流量、连接性和性能的方式。网络观察应用程序能够提供网络流量分析、连接监视、性能监视和故障诊断等功能,用于帮助管理员…...
分步注册方式 编写驱动
作业:通过分步注册方式,编写LED灯驱动:(驱动文件mycdev.c 测试文件test.c 头文件head.h) mycdev.c #include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> #include <linux/io.h> …...
repmgr出现双主,并且时间线分叉,删除了最新的时间线节点
遇到的问题如下: 2023-08-17 20:24:21.566 CST [1556001] LOG: database system was interrupted; last known up at 2023-08-17 20:21:41 CST 2023-08-17 20:24:21.770 CST [1556001] LOG: restored log file "00000009.history" from archive cp: 无法…...
ThinkPHP中实现IP地址定位
在网站开发中,我们经常需要获取用户的地理位置信息以提供个性化的服务。一种常见的方法是通过IP地址定位。在本文中,我们将介绍如何在ThinkPHP框架中实现IP地址定位。 一、IP地址定位的基本原理 IP地址是Internet上的设备在网络中的标识符。每个设备都有…...
使用Python批量将Word文件转为PDF文件
说明:在使用Minio服务器时,无法对word文件预览,如果有需要的话,可以将word文件转为pdf文件,再存储到Minio中,本文介绍如何批量将word文件,转为pdf格式的文件; 安装库 首先ÿ…...
XDR解决方案成为了新的安全趋势
和当今指数倍增长的安全数据相比,安全人才的短缺带来了潜在的风险。几乎所有的公司,无论规模大小,在安全资源能力上都有限,需要过滤各种告警才能将分析量保持在可接受范围。但这样一来,潜在的威胁线索就可能被埋没&…...
001-Nacos 服务注册
目录 Nacos介绍注册中心架构面临问题源码分析实例注册-接口实例注册-入口实例注册-创建一个(Nacos)Service实例注册-注册(Nacos)Service Nacos 介绍 Dynamic Naming and Configuration Service 动态的命名和配置服务 反正可以实现注册中心的功能 注册中心架构 服务提供者 …...
终极指南:AutoDock Vina如何轻松处理含金属元素的分子对接难题
终极指南:AutoDock Vina如何轻松处理含金属元素的分子对接难题 【免费下载链接】AutoDock-Vina AutoDock Vina 项目地址: https://gitcode.com/gh_mirrors/au/AutoDock-Vina 你是否曾在使用AutoDock Vina进行分子对接时,遇到"Atom type Pd i…...
HY-Motion 1.0保姆级教程:解决CUDA OOM、Prompt截断等常见问题
HY-Motion 1.0保姆级教程:解决CUDA OOM、Prompt截断等常见问题 1. 前言:为什么需要这篇教程 你是不是也遇到过这样的情况:好不容易下载了HY-Motion 1.0这个强大的3D动作生成模型,准备大展身手,结果一运行就遇到CUDA内…...
手把手教你用4G Cat.1 bis开发智能硬件:从电路设计到低功耗优化的完整实战
4G Cat.1 bis智能硬件开发实战:从电路设计到低功耗优化的全流程指南 在共享充电宝扫码即用的便利背后,隐藏着一场关于低功耗通信的技术革命。当传统4G模块因高功耗让硬件开发者束手无策时,4G Cat.1 bis以单天线设计、10Mbps传输速率和μA级待…...
终极指南:使用compressorjs实现专业级前端图片压缩与编辑功能
终极指南:使用compressorjs实现专业级前端图片压缩与编辑功能 【免费下载链接】compressorjs compressorjs: 是一个JavaScript图像压缩库,使用浏览器原生的canvas.toBlob API进行图像压缩。 项目地址: https://gitcode.com/gh_mirrors/co/compressorjs…...
统信UOS 1060e内网离线安装Docker保姆级教程(附CentOS 8 RPM包下载)
统信UOS 1060e内网离线安装Docker全流程实战指南 在企业级IT基础设施中,内网环境下的软件部署一直是运维工程师面临的特殊挑战。当服务器完全隔离于互联网时,每一个依赖包、每一条配置指令都可能成为阻碍系统正常运行的潜在障碍。本文将深入探讨在统信UO…...
为什么你的Python多解释器程序总在崩溃?进程隔离、对象序列化与引用计数泄漏全链路诊断,立即修复
第一章:Python多解释器通信的底层本质与崩溃根源Python 多解释器(Multi-Interpreter,PEP 684)是 CPython 3.12 引入的核心机制,旨在实现真正的并行解释器隔离——每个解释器拥有独立的全局状态(如 sys.modu…...
ROS2接口实战:从传感器数据到自定义消息的完整开发流程(附Python示例)
ROS2接口实战:从传感器数据到自定义消息的完整开发流程(附Python示例) 在机器人开发领域,数据的高效传递与标准化处理是系统稳定运行的关键。ROS2作为新一代机器人操作系统,其接口系统提供了强大的数据交换能力&#x…...
新手也能上手!高效论文写作全流程AI论文软件推荐(2026 最新)
论文写作全流程可拆解为文献调研→选题/开题→大纲/初稿→文献综述→降重/去AI味→润色/格式→查重/投稿七大环节,2026年AI论文软件按环节精准匹配,兼顾中文适配、降重能力、去AI痕迹、学术合规四大核心需求,覆盖免费/付费、通用/垂直场景。 …...
DanKoe 视频笔记:数字经济学:未来职业之路:从工作到游戏 [特殊字符]
在本节课中,我们将探讨未来职业发展的核心范式转变。我们将学习如何将个人好奇心转化为可持续的在线事业,并理解构建个人品牌与数字资产的底层逻辑。 在过去的一个月里,我意识到我生活中以及许多人生活中的一个共同主题:痴迷。 童…...
破局B站音频提取难题:BilibiliDown革新性解决方案全解析
破局B站音频提取难题:BilibiliDown革新性解决方案全解析 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors…...
