kubernetes安裝搭建

個人博客站—運維鹿:http://www.kervin24.top/
CSDN博客—做個超努力的小奚: https://blog.csdn.net/qq_52914969?type=blog
?

一、kubernetes介紹

Kubernetes本質是一組服務器集群,它可以在集群的每個節點上運行特定的程序,來對節點中的容器進行過管理。它的目的就是實現資源管理的自動化,主要提供了以下的主要功能:

  • 自我修復:一旦某個容器崩潰,能夠在1秒中左右迅速啟動新的容器

  • 彈性伸縮:可以根據需要,自動對集群中正在運行的容器數量進行調整

  • 服務發現:服務可以通過自動發現的形式找到它所依賴的服務

  • 負載均衡:如果一個服務啟動了多個容器,能夠自動實現請求的負載均衡

  • 版本回退:如果發現新發布的程序版本有問題,可以立即回退到原來的版本

  • 存儲編排:可以根據容器自身的需求自動創建存儲卷

1657245546539

二、 集群環境搭建

2.1、集群類型

Kubernertes集群大體分為兩類:一主多從多主多從

  • 一主多從:一臺master節點和多臺node節點,搭建簡單,但是有單機故障風險,適合用于測試環境

  • 多主多從:多臺master節點和多臺node節點,搭建麻煩,安全性高,適合用于生產環境

image-20250802201550110

2.2、安裝方式

Kubernetes有多種部署方式,目前主流的方式有kubeadm、minikube、二進制包

  • minikube:一個用于快速搭建單節點kubernetes的工具

  • kubeadm:應該用于快速搭建kubernetes集群的工具

  • 二進制包:從官網下載每個組件的二進制包,依次去安裝

2.3、環境搭建

2.3、環境搭建1.33版【kubeadm方式】

主機名IP配置系統發行版
master192.168.80.104C2GCentOS Linux release 7.8
node1192.168.80.114C2GCentOS Linux release 7.8
node2192.168.80.124C2GCentOS Linux release 7.8
2.3.1、搭建三臺虛擬機

搭建k8s,系統發行版需要至少centos7.5,需要預留/var目錄下預留≥5G的足夠的空間

?1  這里采用了阿里云7.8的CentOS-7-x86_64-Minimal-2003.iso鏈接地址:https://mirrors.aliyun.com/centos-vault/7.8.2003/isos/x86_64/?spm=a2c6h.25603864.0.0.454a60bdb8NRXT?2 如果是掛載新iso,利用F2或者F12進BIOS,改光盤驅動安裝iso?3、更改centos的yum源為阿里云cd /etc/yum.repos.d/mv CentOS-Base.repo CentOS-Base.repo.backupcurl https://mirrors.aliyun.com/repo/Centos-7.repovi  CentOS-Base.repo 將curl內容復制進去?4、yum install -y wgt 驗證成功

2.3.2、主機名解析
?主機名成解析  編輯三臺服務器的/etc/hosts文件,添加下面內容# 192.168.80.10  master# 192.168.80.11  node1# 192.168.80.12  node2

2.3.3、時間同步

kubernetes要求集群中的節點時間必須精確一致,這里直接使用chronyd服務從網絡同步時間

?#啟動chronyd服務[root@master ~]# systemctl start chronyd#設置chronyd服務開機自啟[root@master ~]# systemctl enable chronyd#chronyd服務啟動稍等幾秒鐘,就可以使用date命令驗證時間了[root@master ~]# date2025年 08月 04日 星期一 17:08:57 CST

2.3.4、禁用iptables和firewalld服務

kubernetes和docker在運動中會產生大量的iptables規則,為了不讓系統規則跟它們混淆,直接關閉系統的規則

?#關閉firewalld服務[root@master ~]# systemctl stop firewalld[root@master ~]# systemctl disable firewalldRemoved symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.?#關閉iptables服務[root@master ~]# systemctl stop iptablesFailed to stop iptables.service: Unit iptables.service not loaded.

2.3.5、禁用selinux

selinux是linux系統下的一個安全服務,如果不關閉它,在安裝集群中會產生各種各樣的奇葩問題

?#編輯/etc/selinux/config文件,修改SELINUX的值為disabled#注意修改完畢之后需要重啟linux服務SELINUX=disabled

image-20250805182023236

#通過getenforce來命令檢查是否生效

image-20250805182534038

2.3.6、禁用swap分區

swap分區指的是虛擬內存分區,它的作用是在物

?#編輯分區配置文件/etc/fstab,注釋掉swap分區一行#注意修改完畢之后需要重啟linux服務[root@master ~]# vim /etc/fstab /dev/mapper/centos00-root / ? ? ? ? ? ? ? ? ? ? ? xfs ? ? defaults ? ? ?  0 0UUID=77663676-1afb-461c-997d-26c7b5e1f096 /boot ? ? ? ? ? ? ? ? ? xfs ? ? defaults ? ? ?  0 0#/dev/mapper/centos00-swap swap ? ? ? ? ? ? ? ? ?  swap ?  defaults ? ? ?  0 0

理內存使用完之后,將磁盤空間虛擬成內存來使用。啟用swap設備會對系統的性能產生非常負面的影響,因此kubernetes要求每個節點都要禁用swap設備,但是如果因為某些原因確實不能關閉swap,就需要在集群安裝過程當中通過明確的參數進行配置說明。

--------------------------------------------

檢查是否swap為禁用狀態

image-20250807202405778

2.3.7、修改linux的內核參數
?#修改linux的內核參數,添加網橋過濾和地址轉發功能#編輯/etc/sysctl.d/kubernetes.conf文件,添加如下配置:net.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1net.ipv4.ip_forward = 1?#重新加載配置[root@master ~]# sysctl -p?#加載網橋過濾模塊[root@master ~]# modprobe br_netfilter?#查看網橋過濾模塊是否加載成功[root@master ~]# lsmod | grep br_netfilterbr_netfilter ? ? ? ? ? 22256  0 bridge ? ? ? ? ? ? ?  151336  1 br_netfilter

2.3.8、配置ipvs功能

在kubernetes中service有兩種代理模型,一種是基于iptables的,一種是基于ipvs的

兩者比較的話,ipvs的性能明顯要高一些,但是如果需要使用它,需要手動載入ipvs模塊

?#1 安裝ipset和ipvsadm[root@master yum.repos.d]# yum install ipset ipvsadmin -y?#2 添加需要加載的模塊寫入腳本[root@master yum.repos.d]#cat <<EOF > /etc/sysconfig/modules/ipvs.modules#!/bin/bashmodprobe -- ip_vsmodprobe -- ip_vs_rrmodprobe -- ip_vs_wrrmodprobe -- ip_vs_shmodprobe -- nf_conntrack_ipv4EOF?#3 為腳本文件添加執行權限[root@master modules]# chmod +x /etc/sysconfig/modules/ipvs.modules ?#4 執行腳本文件[root@master modules]# /bin/bash /etc/sysconfig/modules/ipvs.modules ?#5 查看對應的模塊是否加載成功[root@master modules]# lsmod | grep -e ip_vs -e nf_conntrack_ipv4 nf_conntrack_ipv4 ? ?  15053  0 nf_defrag_ipv4 ? ? ? ? 12729  1 nf_conntrack_ipv4ip_vs_sh ? ? ? ? ? ? ? 12688  0 ip_vs_wrr ? ? ? ? ? ?  12697  0 ip_vs_rr ? ? ? ? ? ? ? 12600  0 ip_vs ? ? ? ? ? ? ? ? 145497  6 ip_vs_rr,ip_vs_sh,ip_vs_wrrnf_conntrack ? ? ? ?  139264  2 ip_vs,nf_conntrack_ipv4libcrc32c ? ? ? ? ? ?  12644  3 xfs,ip_vs,nf_conntrack

-----------------------------------------------------

執行完以上所有步驟,需要重新啟動linux系統

reboot

2.4、安裝docker和cri-dockerd

三臺都需要安裝

2.4.1、安裝docker

詳見Docker基本管理 - 運維鹿 docker基礎教程

1、安裝依賴包yum install -y yum-utils device-mapper-persistent-data lvm2-------------------------------------yum-utils:提供了yum-config-manager工具。devicemapper:是Linux內核中支持邏輯卷管理的通用設備映射機制,它為實現用于存儲資源管理的塊設備驅動提供了一個高度模塊化的內核架構。device mapper:存儲驅動程序需要device-mapper-persistent-data和lvm2。?2、設置阿里云鏡像源yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo?3、安裝Docker-CE并設置為開機自動啟動yum install -y docker-ce docker-ce-cli containerd.io-----------------------------------報錯解決:這個報錯是container-selinux版本低或者是沒安裝的原因yum 安裝container-selinux 一般的yum源又找不到這個包需要安裝epel源 才能yum安裝container-selinux然后在安裝docker-ce就可以了。########################wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repoyum install epel-releaseyum makecacheyum install container-selinux####################systemctl start docker.servicesystemctl enable docker.service--------------------------------------------------安裝好的Docker系統有兩個程序,Docker服務端和Docker客戶端。其中Docker服務端是一個服務進程,負責管理所有容器。Docker客戶端則扮演著Docker服務端的遠程控制器,可以用來控制Docker的服務端進程。大部分情況下Docker服務端和客戶端運行在一臺機器上。??4、配置鏡像加速配置修改配置文件/etc/docker/daemon.json(沒有時新建該文件)。-------------------{"registry-mirrors": ["https://docker.xuanyuan.me" ,"https://docker.m.daocloud.io","https://docker.imgdb.de","https://docker-0.unsee.tech","https://docker.hlmirror.com","https://docker.1ms.run","https://func.ink","https://lispy.org","https://docker.xiaogenban1993.com"]}---------------------systemctl daemon-reload ###然后重啟Docker Daemon。systemctl restart docker

2.4.2、安裝cri-dockerd

以下參考實戰Kubernetes之快速部署 K8s 集群 v1.28.0-云社區-華為云

kubernetes1.24版本開始不再支持docker

因此,還需要安裝cri-dockerd來用于為Docker提供一個能夠支持K8S容器運行時標準的工具

#安裝cri-dockerd
# 通過 wget 命令獲取 cri-dockerd軟件
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.12/cri-dockerd-0.3.12-3.el7.x86_64.rpm# 通過 rpm 命令執行安裝包
rpm -ivh cri-dockerd-0.3.12-3.el7.x86_64.rpm#安裝完成后修改配置文件(/usr/lib/systemd/system/cri-docker.service),
在 “ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd://” 
這一行增加 “--pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9”。#配置文件修改后,重新加載配置并開啟 cri-dockerd 服務。
# 加載配置并開啟服務
systemctl daemon-reload
systemctl enable cri-docker && systemctl start cri-docker

2.5、安裝kuberbetes組件

三臺都需要安裝

1、 #編輯/etc/yum.repos.d/kubernetes.repo,添加以下配置
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF2、#安裝kubeadm、kubelet和kubect1 (目前最新版本1.28-0)
yum install -y kubelet-1.28.0 kubeadm-1.28.0 kubectl-1.28.0#配置kubernet的cgroup
#編輯/etc/sysconfig/kubelet,添加下面的配置
KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs"3、# 設置 kubelet 自啟動
systemctl enable kubelet#在安裝kubernetes集群之前,查看所需鏡像可以通過下面命令查看
[root@master yum.repos.d]# kubeadm config images list
I0807 22:34:11.171481    4387 version.go:256] remote version is much newer: v1.33.3; falling back to: stable-1.28
registry.k8s.io/kube-apiserver:v1.28.15
registry.k8s.io/kube-controller-manager:v1.28.15
registry.k8s.io/kube-scheduler:v1.28.15
registry.k8s.io/kube-proxy:v1.28.15
registry.k8s.io/pause:3.9
registry.k8s.io/etcd:3.5.9-0
registry.k8s.io/coredns/coredns:v1.10.1

2.6、集群初始化

2.6.1、Master節點加入K8S集群

下面的操作只需要在master節點上執行

kubeadm init \--apiserver-advertise-address=192.168.80.10 \--image-repository registry.aliyuncs.com/google_containers \--kubernetes-version v1.28.0 \--service-cidr=10.96.0.0/12 \--pod-network-cidr=10.244.0.0/16 \--cri-socket=unix:///var/run/cri-dockerd.sock \--ignore-preflight-errors=all相關參數解釋:
apiserver-advertise-address:集群廣播地址,用 master 節點的內網 IP。
image-repository:由于默認拉取鏡像地址 k8s.gcr.io 國內無法訪問,這里指定阿里云鏡像倉庫地址。
kubernetes-version: K8s 版本,與上面安裝的軟件版本一致。
service-cidr:集群 Service 網段。
pod-network-cidr:集群 Pod 網段。
cri-socket:指定 cri-socket 接口,我們這里使用 unix:///var/run/cri-dockerd.sock。

image-20250808093409012

執行命令后耐心等待,直到安裝完成,會出現以上內容。

其中,在以上返回結果中有 3 條命令需要立即執行,這是用來設置 kubectl 工具的管理員權限,執行之后就可以在 Master 節點上通過終端窗口使用 kubectl 命令。

# 在 Master 節點上執行以下命令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

2.6.2、Node節點加入K8S集群

K8s 初始化之后,就可以在其他 2 個工作節點上執行 “kubeadm join” 命令,

因為我們使用了 cri-dockerd ,需要在命令加上 “–cri-socket=unix:///var/run/cri-dockerd.sock” 參數。

在master節點上,可重新生成并獲取token和sha256
[root@master /]# kubeadm token create --print-join-command
kubeadm join 192.168.80.10:6443 --token uobpxl.g3wk6xz24ubdw0hi --discovery-token-ca-cert-hash sha256:fe73798d15cf93f4cd1051d85502237505aeddf0d78653a04664e9f4d167c44c# 在兩個工作節點上執行
kubeadm join 192.168.80.10:6443 --token uobpxl.g3wk6xz24ubdw0hi \--discovery-token-ca-cert-hash sha256:fe73798d15cf93f4cd1051d85502237505aeddf0d78653a04664e9f4d167c44c \--cri-socket=unix:///var/run/cri-dockerd.sock#在master節點上執行get nodes查看集群節點狀態        
[root@master /]# kubectl get nodes
NAME     STATUS     ROLES           AGE   VERSION
master   NotReady   control-plane   23m   v1.28.2
node1    NotReady   <none>          26s   v1.28.2
node2    NotReady   <none>          7s    v1.28.2
注意到所有節點的狀態都是 “NotReady”,這是由于集群還缺少網絡插件,集群的內部網絡還沒有正常運作。

2.7、安裝網絡插件calico

kubernetes支持多種網絡插件,比如flannel、calico、canal等等,本次選擇calico

# 下載 Calico 插件部署文件
wget https://docs.projectcalico.org/manifests/calico.yaml通過vi編輯器修改 “calico.yaml”的4601和4602行
文件中的 “CALICO_IPV4POOL_CIDR” 參數,
需要與前面 “kubeadm init” 命令中的 “–pod-network-cidr” 參數一樣(10.244.0.0/16)[root@master opt]# kubectl apply -f calico.yaml
#這里要稍微等一會,calico生效很慢,可以重啟服務器嘗試

image-20250808105117719

至此,kubernetes集群已經安裝成功

image-20250808172832818

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/92509.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/92509.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/92509.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL高可用方案之MySQL InnoDB Cluster高可用架構實戰指南:從零搭建到生產部署

MySQL InnoDB Cluster高可用架構實戰指南:從零搭建到生產部署 一、引言:為什么選擇MySQL InnoDB Cluster 在當今數據驅動的商業環境中,數據庫高可用性已成為企業IT基礎設施的核心需求。MySQL作為全球最受歡迎的開源關系型數據庫,其高可用解決方案備受關注。而MySQL InnoD…

祝融號無線電工作頻段

前面深入查證了旅行者1號的無線電工作頻段&#xff1a; 旅行者1號無線電工作頻段-CSDN博客 下面嘗試查證我國祝融號無線電工作頻段。 一、百度百科 來自百度百科&#xff1a; 我注意到一條關鍵信息&#xff1a; 這說明祝融號在國際上是有合作的&#xff0c;而不是我們國家單…

Kafka生產者相關原理

前言前面已經介紹了Kafka的架構知識并引出了Kafka的相關專業名稱進行解釋這次分享一下Kafka對生產者發送消息進行處理的運行機制和原理生產者發送消息兩種方式同步發送消息程序中線程執行完消息發送操作之后會等待Kafka的消息回應ack默認等待30秒沒有回應就會拋出異常等待時間和…

Python 獲取對象信息的所有方法

在 Python 里&#xff0c;我們經常需要檢查一個對象的類型、屬性、方法&#xff0c;甚至它的源碼。這對調試、學習和動態編程特別有用。今天我們就來聊聊獲取對象信息的常見方法&#xff0c;按由淺入深的順序來學習。 參考文章&#xff1a;Python 獲取對象信息 | 簡單一點學習…

vuhub Beelzebub靶場攻略

靶場下載&#xff1a; 下載地址&#xff1a;https://download.vulnhub.com/beelzebub/Beelzebub.zip 靶場攻略&#xff1a; 主機發現&#xff1a; nmap 192.168.163.1/24 端口掃描&#xff1a; nmap -p-65535 -A 192.168.163.152 發現沒有額外端口。 頁面掃描&#xff1…

開啟單片機

前言&#xff1a;為未來拼搏的第n天&#xff0c;從單片機開始。為什么要學習單片機呢&#xff0c;單片機的工作涉及范圍及其廣如&#xff1a;消費電子&#xff0c;游戲機音響&#xff1b;工業控制&#xff1a;機器人控制&#xff1b;醫療設備&#xff0c;通信設備&#xff0c;物…

人工智能系列(8)如何實現無監督學習聚類(使用競爭學習)?

案例&#xff1a;鳶尾花數據集的聚類一.聚類簡介神經網絡能夠從輸入數據中自動提取有意義的特征&#xff0c;而競爭學習規則使得單層神經網絡能夠根據相似度將輸入樣本進行聚類&#xff0c;每個聚類由一個輸出神經元代表并作為該類別的“原型”&#xff0c;從而實現對輸入模式的…

Windows安裝mamba全流程(全網最穩定最成功)

windows系統下安裝mamba會遇到各種各樣的問題。博主試了好幾天&#xff0c;把能踩的坑都踩了&#xff0c;總結出了在windows下安裝mamba的一套方法&#xff0c;已經給實驗室的windows服務器都裝上了。只要跟著我的流程走下來&#xff0c;大概率不會出問題&#xff0c;如果遇到其…

Autosar Dem配置-最大存儲的DTC信息個數配置-基于ETAS軟件

文章目錄 前言 Autosar Dem相關配置 ETAS工具中的配置 生成文件分析 測試驗證 總結 前言 診斷DTC開發中,會有故障快照和擴展數據的存儲需求,但由于控制器的可用存儲空間有限,所以無法存儲所有DTC的信息,這時就需要限制存儲的數量,本文介紹該參數在ETAS軟件中的配置。 Au…

【MySQL】EXISTS 與 NOT EXISTS 深度解析:從原理到實戰的完整指南

在復雜的業務查詢中&#xff0c;我們常常需要判斷“是否存在滿足某條件的記錄”或“找出不滿足某些條件的記錄”。這時&#xff0c;EXISTS 和 NOT EXISTS 子查詢便成為強大的工具。它們不僅邏輯清晰、語義明確&#xff0c;而且在某些場景下性能遠超 IN 或 JOIN。然而&#xff0…

面對信號在時頻平面打結,VNCMD分割算法深度解密

“ 信號迷宮中的破壁者&#xff1a;VNCMD如何分解糾纏的時空密碼&#xff1f;——從鯨歌到機械故障&#xff0c;寬帶信號分解新紀元。”01—痛點直擊&#xff1a;為什么傳統方法集體失效&#xff1f;2017年&#xff0c;上海交大團隊提出了一項突破性研究&#xff1a;變分非線性…

CSS優先級、HTTP響應狀態碼

CSS優先級 優先級&#xff1a;看CSS的來源、樣式引入方式、選擇器、源碼順序。 行內樣式/內聯樣式&#xff1a;直接在HTML元素的style屬性中編寫CSS樣式。這種方式適用于少量樣式的情況&#xff0c;但不推薦在大規模開發中使用&#xff0c;因為它會使HTML文件變得冗長和難以維…

項目一系列-第2章 Git版本控制

第2章 Git版本控制 2.1 Git概述 Git是什么&#xff1f;Git是一個分布式版本控制工具&#xff0c;于管理開發過程中的文件。 Git有哪些作用&#xff1f; 遠程備份&#xff1a;Git可以將本地代碼備份到遠程服務器&#xff0c;防止數據丟失。多人協作&#xff1a;Git運行多個開發者…

Java異常:認識異常、異常的作用、自定義異常

目錄1.什么是異常&#xff1f;1&#xff09;運行時異常2&#xff09;編譯時異常2.異常的作用1&#xff09;Java 異常在定位 BUG 中的核心作用2&#xff09;Java 異常作為方法內部特殊返回值的作用3&#xff09;自定義異常1.什么是異常&#xff1f; Error:代表的系統級別錯誤(屬…

第十九天-輸入捕獲實驗

一、輸入捕獲概述1、輸入捕獲框圖2、輸入捕獲工作詳解①設置輸入捕獲濾波器可以設置濾波&#xff0c;濾除一些高電平脈寬不足的脈沖信號。②設置捕獲極性③輸入捕獲映射④輸入捕獲分頻器這里的捕獲是將計數器的值存入比較寄存器中&#xff0c;分頻次的作用是設置幾個上升沿/下降…

多線程問題,子線程同時操作全局變量,使用后需要清空嗎 ?

背景&#xff1a;目前有一個全局變量 &#xff0c;某個方法中通過多線程&#xff0c;都操作這個變量&#xff0c;向這個全局變量中去添加元素&#xff0c;然后等所有子線程執行完了之后&#xff0c;對這個全局變量進行批量保存&#xff0c;然后這個全局變量還需要手動去清空嗎&…

Netty知識儲備:BIO、NIO、Reactor模型

學習Netty之前&#xff0c;首先先掌握這些基礎知識&#xff1a;阻塞&#xff08;Block&#xff09;與非阻塞&#xff08;Non-Block&#xff09;&#xff0c;同步&#xff08;Synchronous&#xff09;與異步&#xff08;Asynchronous&#xff09;&#xff0c;Java BIO與NIO對比。…

用生成器守住架構,用 AI 放大效率:一套可落地的 AI 編程方法論

背景與問題 現實困境: 直接讓 AI 產出整塊業務代碼&#xff0c;常常與現有架構風格、分層邊界、依賴策略不一致&#xff0c;后續改造成本高&#xff1b;AI 對現實業務語境、領域規則難以精準把握&#xff1b;在既定模板成熟的場景下&#xff0c;代碼生成器往往更快、更整齊。目…

碼頭岸電系統如何保障供電安全?安科瑞絕緣監測及故障定位方案解析

當岸電電網是TN-S系統時&#xff0c;船體未接專用接地線且船舶電網未與岸電零線接通&#xff0c;船舶電網發生單相接地故障時&#xff0c;人站在岸上觸及船體會有觸電危險&#xff0c;零線上可能出現高電壓&#xff0c;單相接地電流大。當船體接專用接地線且船舶電網接入岸電零…

ESP32_u8g2移植

前言 U8g2 是一個用于嵌入式設備的單色圖形庫。U8g2支持單色OLED和LCD&#xff0c;并支持如SSD1306 SSD1315等多種類型的OLED驅動&#xff0c;幾乎市面上常見都支持。 U8g2源碼 download&#xff1a;https://github.com/olikraus/u8g21&#xff1a;環境 ESP32 S3(ESP32-S3-Dev…