参考: https://blog.csdn.net/yu33575/article/details/135387548

二进制安装k8s: https://blog.csdn.net/qq_73990369/article/details/143217084

K8S二进制安装与部署 :https://blog.csdn.net/fantuan_sss/article/details/139073366

k8s-(六)在kubernertes上部署运行项目: https://blog.csdn.net/qq_21187515/article/details/112320972

解决logs不能查看的问题: https://blog.51cto.com/shunzi115/2432164

ssh免密登录

#在每台服务器上生成RSA密钥对
ssh-keygen -P '' -f ~/.ssh/id_rsa#将公钥传输给要远程的服务器(在每台服务器上,将生成的公钥复制到其他两台服务器上)
ssh-copy-id -i ~/.ssh/id_rsa.pub root@k8s-node1
ssh-copy-id -i ~/.ssh/id_rsa.pub root@devdb
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node

Kubernetes 部署
安装 kubeadm、kubelet 和 kubectl

kubeadm:用来初始化集群的指令。

kubelet:在集群中的每个节点上用来启动 Pod 和容器等。

kubectl:用来与集群通信的命令行工具。

kubeadm 安装

1 安装 CNI 插件(大多数 Pod 网络都需要):

CNI_PLUGINS_VERSION="v1.3.0"
ARCH="amd64"
DEST="/opt/cni/bin"
sudo mkdir -p "$DEST"
curl -L "https://github.com/containernetworking/plugins/releases/download/${CNI_PLUGINS_VERSION}/cni-plugins-linux-${ARCH}-${CNI_PLUGINS_VERSION}.tgz" | sudo tar -C "$DEST" -xzcurl -L "https://github.com/containernetworking/plugins/releases/download/v1.3.0/cni-plugins-linux-amd64-v1.3.0.tgz" | sudo tar -C "/opt/cni/bin" -xztar -C "/opt/cni/bin" -xz -f cni-plugins-linux-amd64-v1.3.0.tgz

2 安装 crictl(kubeadm/kubelet 容器运行时接口(CRI)所需):

DOWNLOAD_DIR="/usr/local/bin"
sudo mkdir -p "$DOWNLOAD_DIR"CRICTL_VERSION="v1.28.0"
ARCH="amd64"
curl -L "https://github.com/kubernetes-sigs/cri-tools/releases/download/${CRICTL_VERSION}/crictl-${CRICTL_VERSION}-linux-${ARCH}.tar.gz" | sudo tar -C $DOWNLOAD_DIR -xzcurl -L "https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.28.0/crictl-v1.28.0-linux-amd64.tar.gz" | sudo tar -C /usr/local/bin -xztar -C /usr/local/bin -xz -f crictl-v1.28.0-linux-amd64.tar.gz

3 安装 kubeadm、kubelet、kubectl 并添加 kubelet 系统服务:

RELEASE="$(curl -sSL https://dl.k8s.io/release/stable.txt)"
RELEASE="v1.32.0"
ARCH="amd64"
cd $DOWNLOAD_DIR
cd /usr/local/binsudo curl -L --remote-name-all https://dl.k8s.io/release/${RELEASE}/bin/linux/${ARCH}/{kubeadm,kubelet}
sudo curl -L --remote-name-all https://dl.k8s.io/release/v1.32.0/bin/linux/amd64/{kubeadm,kubelet}
sudo chmod +x {kubeadm,kubelet}RELEASE_VERSION="v0.16.2"
curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/krel/templates/latest/kubelet/kubelet.service" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /etc/systemd/system/kubelet.service
curl -sSL "https://raw.githubusercontent.com/kubernetes/release/v0.16.2/cmd/krel/templates/latest/kubelet/kubelet.service" | sed "s:/usr/bin:/usr/local/bin:g" | sudo tee /etc/systemd/system/kubelet.servicesed "s:/usr/bin:/usr/local/bin:g" kubelet.service | tee /etc/systemd/system/kubelet.servicesudo mkdir -p /etc/systemd/system/kubelet.service.d
curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/krel/templates/latest/kubeadm/10-kubeadm.conf" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
curl -sSL "https://raw.githubusercontent.com/kubernetes/release/v0.16.2/cmd/krel/templates/latest/kubeadm/10-kubeadm.conf" | sed "s:/usr/bin:/usr/local/bin:g" | sudo tee /etc/systemd/system/kubelet.service.d/10-kubeadm.confsed "s:/usr/bin:/usr/local/bin:g" 10-kubeadm.conf | sudo tee /etc/systemd/system/kubelet.service.d/10-kubeadm.conf


kubelet 安装

install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
install -o root -g root -m 0755 kubeadm /usr/local/bin/kubeadm
install -o root -g root -m 0755 kubelet /usr/local/bin/kubelet


kubectl 安装

https://kubernetes.io/zh-cn/docs/tasks/tools/install-kubectl-linux/

安装命令

sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

测试:

kubectl version --client

kubeadm init 用于搭建控制平面节点
kubeadm join 用于搭建工作节点并将其加入到集群中
kubeadm upgrade 用于升级 Kubernetes 集群到新版本
kubeadm config 如果你使用了 v1.7.x 或更低版本的 kubeadm 版本初始化你的集群,则使用 kubeadm upgrade 来配置你的集群
kubeadm token 用于管理 kubeadm join 使用的令牌
kubeadm reset 用于恢复通过 kubeadm init 或者 kubeadm join 命令对节点进行的任何变更
kubeadm certs 用于管理 Kubernetes 证书
kubeadm kubeconfig 用于管理 kubeconfig 文件
kubeadm version 用于打印 kubeadm 的版本信息
kubeadm alpha 用于预览一组可用于收集社区反馈的特性

二进制安装K8S:

wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -O /usr/local/bin/cfssl
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -O /usr/local/bin/cfssljson
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -O /usr/local/bin/cfssl-certinfochmod +x /usr/local/bin/cfssl*

master节点操作–给api-server创建的证书。 别的服务访问api-server的时候需要通过证书认证

[root@k8s-master1 ~]# mkdir -p /opt/crt/
[root@k8s-master1 ~]# cd /opt/crt/
# vim ca-config.json
{"signing": {"default": {"expiry": "87600h"},"profiles": {"kubernetes": {"expiry": "87600h","usages": ["signing","key encipherment","server auth","client auth"]}}}
}# vim ca-csr.json  定义生产签名所需要的信息参数
{"CN": "kubernetes","key": {"algo": "rsa","size": 2048},"names": [{"C": "CN","L": "Beijing","ST": "Beijing","O": "k8s","OU": "System"}]
}生产ca证书和私钥
[root@k8s-master1 crt]# cfssl gencert -initca ca-csr.json | cfssljson -bare ca -生成apiserver证书:
[root@k8s-master1 crt]# vim server-csr.json
# cat server-csr.json
{"CN": "kubernetes","hosts": ["10.0.0.1", //这是后⾯dns要使用的虚拟网络的网关,不用改,就用这个切忌"127.0.0.1","10.xxx.xxx.xx1", // master的IP地址。"10.xxx.100.xx2","10.xxx.100.xx3","kubernetes","kubernetes.default","kubernetes.default.svc","kubernetes.default.svc.cluster","kubernetes.default.svc.cluster.local"],"key": {"algo": "rsa","size": 2048},"names": [{"C": "CN","L": "BeiJing","ST": "BeiJing","O": "k8s","OU": "System"}]
}[root@k8s-master1 crt]# cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes server-csr.json | cfssljson -bare server[root@139devdb crt]# cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes server-csr.json | cfssljson -bare server
invalid character '/' looking for beginning of value
Failed to parse input: unexpected end of JSON input生成kube-proxy证书:
[root@k8s-master1 crt]# vim kube-proxy-csr.json
# cat kube-proxy-csr.json
{"CN": "system:kube-proxy","hosts": [],"key": {"algo": "rsa","size": 2048},"names": [{"C": "CN","L": "BeiJing","ST": "BeiJing","O": "k8s","OU": "System"}]
}
[root@k8s-master1 crt]# cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes kube-proxy-csr.json | cfssljson -bare kube-proxy

配置好前面生成的证书,确保能连接etcd

systemd管理apiserver[root@k8s-master1 cfg]# cd /usr/lib/systemd/system
# vim kube-apiserver.service
# cat /usr/lib/systemd/system/kube-apiserver.service
[Unit]
Description=Kubernetes API Server
Documentation=https://github.com/kubernetes/kubernetes[Service]
EnvironmentFile=-/opt/k8s/cfg/kube-apiserver
ExecStart=/opt/k8s/bin/kube-apiserver $KUBE_APISERVER_OPTS
Restart=on-failure[Install]
WantedBy=multi-user.target 启动:
systemctl daemon-reload
systemctl enable kube-apiserver
systemctl start kube-apiserver
systemctl status kube-apiserver

设置集群参数

# 设置集群参数
[root@k8s-master1 crt]# /opt/k8s/bin/kubectl config set-cluster kubernetes --certificate-authority=ca.pem --embed-certs=true --server=${KUBE_APISERVER}  --kubeconfig=bootstrap.kubeconfig# 设置客户端认证参数
[root@k8s-master crt]# /opt/k8s/bin/kubectl config set-credentials kubelet-bootstrap --token=${BOOTSTRAP_TOKEN} --kubeconfig=bootstrap.kubeconfig# 设置上下文参数
[root@k8s-master crt]# /opt/k8s/bin/kubectl config set-context default  --cluster=kubernetes  --user=kubelet-bootstrap --kubeconfig=bootstrap.kubeconfig# 设置默认上下文
[root@k8s-master crt]# /opt/k8s/bin/kubectl config use-context default --kubeconfig=bootstrap.kubeconfig# 创建kube-proxy kubeconfig文件[root@k8s-master1 crt]# /opt/k8s/bin/kubectl config set-cluster kubernetes  --certificate-authority=ca.pem  --embed-certs=true  --server=${KUBE_APISERVER}  --kubeconfig=kube-proxy.kubeconfig[root@k8s-master1 crt]# /opt/k8s/bin/kubectl config set-credentials kube-proxy  --client-certificate=kube-proxy.pem  --client-key=kube-proxy-key.pem  --embed-certs=true  --kubeconfig=kube-proxy.kubeconfig[root@k8s-master1 crt]# /opt/k8s/bin/kubectl config set-context default --cluster=kubernetes --user=kube-proxy --kubeconfig=kube-proxy.kubeconfig[root@k8s-master1 crt]# /opt/k8s/bin/kubectl config use-context default --kubeconfig=kube-proxy.kubeconfig// 1 添加kubernetes集群 
kubectl config set-cluster my-cluster \--server=https://10.xxx.100.xxx:6443 \--certificate-authority=/opt/crt/ca.pem// 2 添加用户
kubectl config set-credentials my-user \--client-certificate=kube-proxy.pem \--client-key=kube-proxy-key.pem// 3 添加上下文
kubectl config set-context my-context \--cluster=my-cluster \--user=my-user \--namespace=default// 4 切换上下文
kubectl config use-context my-contextkubectl config set-credentials system:kube-proxy \--client-certificate=/opt/crt/kube-proxy.pem \--client-key=/opt/crt/kube-proxy-key.pemkubectl config set-context system-context \--cluster=system-cluster \--user=system:kube-proxy \--namespace=system-name 命令: 
kubectl config view   // 查看配置
kubectl config get-contexts  // 上下文
kubectl config use-context system-context  //切换上下文
kubectl get pods

systemd管理kubelet组件:

# vim /usr/lib/systemd/system/kubelet.service[Unit]
Description=Kubernetes Kubelet
After=docker.service
Requires=docker.service
[Service]
EnvironmentFile=/opt/k8s/cfg/kubelet
ExecStart=/opt/k8s/bin/kubelet $KUBELET_OPTS
Restart=on-failure
KillMode=process
[Install]
WantedBy=multi-user.target--
启动:
systemctl daemon-reload
systemctl enable kubelet
systemctl start kubelet

systemd管理kube-proxy组件:

[root@k8s-node1 ~]# cd /usr/lib/systemd/system
# vim  /usr/lib/systemd/system/kube-proxy.service[Unit]
Description=Kubernetes Proxy
After=network.target
[Service]
EnvironmentFile=-/opt/k8s/cfg/kube-proxy
ExecStart=/opt/k8s/bin/kube-proxy $KUBE_PROXY_OPTS
Restart=on-failure
[Install]
WantedBy=multi-user.target--启动:
systemctl daemon-reload
systemctl enable kube-proxy
systemctl start kube-proxy

kubernetes部署运行项目

./kubectl get cs
pwd
./kubectl get node
./kubectl get csr
./kubectl get pods--
kubernetes部署运行项目参考: https://blog.csdn.net/qq_21187515/article/details/112320972在k8s中,我们不会单独创建一个pod资源对象,而是创建Deployment对象,通过Deployment来管理pod。apiVersion: v1   #描述文件遵循v1版本的kubernetes API 
kind: Pod        #我们在描述一个pod
metadata:          name: kubia-manual   #pod的名称
spec:containers:- image: luksa/kubia   #创建容器所用的镜像name: kubia 		#容器的名称ports:- containerPort: 8080  #应用监听的端口protocol: TCP
--apiVersion: v1
kind: Pod   // k8s资源类型
metadata: // pod元数据name: dnsutil-pod // pod的名称
spec: // pod规格containers:- image: tutum/dnsutils // 创建容器所用的镜像name: dnsutil // 容器的名称command: ["sleep", "infinity"]
--
apiVersion: v1
kind: Service
metadata:name: test-svc
spec:ports:- port: 80 // 该服务的可用端口targetPort: 8080 // 服务将连接转发到的容器端口selector: // label app=testing的pod属于该服务app: testing

创建Deployment的YAML描述文件

kubectl create deployment countgame --image=192.xxx.xxx.xxx:5000/countgame:0.91 --dry-run -o yaml  > deploy.yaml

命令:

kubectl config view   // 查看配置
kubectl config get-contexts  // 上下文
kubectl config use-context system-context  //切换上下文
kubectl config use-context my-contextkubectl get csr     // 查看申请加入集群的节点(master)
kubectl certificate approve XXXXID // master审批通过允许加入集群
kubectl get node
kubectl get cs     // 通过kubectl⼯具查看当前集群组件状态
kubectl get pods// 创建Deployment对象
kubectl apply -f deploy.yamlkubectl get namespaces // 命名空间

创建管理员账户

1 创建一个 ServiceAccount。ServiceAccount 是 Kubernetes 中用于运行 Pod 的账户。
admin-user.yaml :apiVersion: v1
kind: ServiceAccount
metadata:name: admin-usernamespace: kube-systemkubectl apply -f admin-user.yamlapiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:name: admin-role
rules:
- apiGroups: ["*"]resources: ["*"]verbs: ["*"]kubectl apply -f admin-role.yamlapiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: admin-role-binding
subjects:
- kind: ServiceAccountname: admin-usernamespace: kube-system
roleRef:kind: ClusterRolename: admin-roleapiGroup: rbac.authorization.k8s.iokubectl apply -f admin-role-binding.yaml/opt/kubernetes/bin/kubectl create clusterrolebinding kubelet-bootstrap --clusterrole=system:node-bootstrapper --user=kubelet-bootstrapkubectl create clusterrolebinding system:anonymous --clusterrole=cluster-admin --user=system:anonymouskubectl -n kube-system get secret $(kubectl -n kube-system get sa admin-user -o jsonpath="{.secrets[0].name}") -o jsonpath="{.data.token}" | base64 --decodekubectl config set-credentials admin-user --token=<TOKEN>
kubectl config set-context admin-context --cluster=<CLUSTER_NAME> --user=admin-user
kubectl config use-context admin-contextkubectl config set-credentials admin-user --token=<TOKEN>
kubectl config set-context admin-context --cluster=admin-cluster  --user=admin-user
kubectl config use-context admin-context验证权限
kubectl auth can-i create deployments --namespace=default

K8S kubelet logs报错

设置 
https://blog.51cto.com/shunzi115/24321641.error: You must be logged in to the server (the server has asked for the client to provide credentials ( pods/log nginx-7bb7cd8db5-v756s))
处理方法:
kubelet配置文件配置默认用户权限如图:
kubectl create clusterrolebinding system:anonymous --clusterrole=cluster-admin --user=system:anonymous2.Error from server (Forbidden): Forbidden (user=system:anonymous, verb=get, resource=nodes, subresource=proxy) ( pods/log nginx-7bb7cd8db5-v756s)
处理方法:
anonymous用户绑定一个cluster-admin的权限
kubectl create clusterrolebinding system:anonymous --clusterrole=cluster-admin --user=system:anonymous

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

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

相关文章

LeetCode 简单JS刷题

目录 返回数组最后一个元素 2787.将一个数字表示成幂的和的方案数 326.3的幂 1780.判断一个数字是否可以表示成三的幂的和 342.4的幂 返回数组最后一个元素 1.请你编写一段代码实现一个数组方法&#xff0c;使任何数组都可以调用 array.last() 方法&#xff0c;这个方法将…

七大排序算法全解析:从入门到精通

目录 一.排序的概念 二.常见排序算法的实现 2.1 插入排序 &#xff08;1&#xff09;直接插入排序&#xff1a; 当插入第i(i>1)个元素时&#xff0c;前面的array[0],array[1],…,array[i-1]已经排好序&#xff0c;此时用array[i]的排序码与array[i-1],array[i-2],…的排序…

20250814在荣品RD-RK3588开发板的Android13下解决卡迪的LCD屏在开机的时候brightness最暗【背光的pwm信号的极性反了】

20250814在荣品RD-RK3588开发板的Android13下解决卡迪的LCD屏在开机的时候brightness最暗【背光的pwm信号的极性反了】 2025/8/14 11:33缘起&#xff1a;在荣品RD-RK3588开发板的Android13下&#xff0c;卡迪的LCD屏在开机的时候很暗&#xff0c;几乎看不见。 在命令行查看亮度…

Flink的状态管理

一、状态的概念Flink的状态其实你就可以将其想象为中间结果就可以了。在Flink中&#xff0c;算子的任务可以分为无状态和有状态两种情况。无状态算子任务在计算过程中是不依赖于其他数据的&#xff0c;只根据当前的输入数据就可以得到结果输出。比如之前讲到的Map、FlatMap、Fi…

GoLand 项目从 0 到 1:第八天 ——GORM 命名策略陷阱与 Go 项目启动慢问题攻坚

第八天核心任务&#xff1a;解决开发中的两大技术卡点今天的开发不仅聚焦于代码层面的数据库字段映射问题&#xff0c;还遭遇了一个困扰团队许久的环境难题 ——Go 项目启动异常缓慢。经过多维度排查&#xff0c;我们不仅理清了 GORM 命名策略的设计逻辑&#xff0c;还找到了影…

在Ubuntu上安装Google Chrome的详细教程

步骤 1&#xff1a;下载 Google Chrome 安装包 打开浏览器输入https://www.google.cn/chrome/&#xff0c;然后进入Chrome浏览器官方网站 点击下载选择Debian/Ubuntu版本 google-chrome-stable_current_amd64.deb步骤 2&#xff1a;安装下载的.deb 包 sudo dpkg -i google-chro…

el-table合并相同名称的行

el-table合并相同名称的行 <template><el-table:data"tableData":span-method"objectSpanMethod"border><el-table-columnprop"name"label"名称"width"180"></el-table-column><el-table-column…

解决 VSCode 无法从右键菜单“通过 Code 打开”文件夹的问题

&#x1f9e9; 一、问题现象 VSCode 已安装&#xff0c;但右键文件夹/桌面空白处无“通过 Code 打开在 VSCode 中执行 Shell Command: Install ‘Open with Code’ 无反应手动添加后菜单显示乱码&#xff08;如 €š‡ Code ‰“€&#xff09;点击右键菜单无响应或提示“找不到…

服务器数据恢复—服务器硬盘状态灯变红,分区数据恢复过程

服务器数据恢复环境&故障&#xff1a; 某公司服务器上有一组由3块硬盘组建的raid5磁盘阵列。 服务器上1块硬盘的状态灯变为红色&#xff0c;磁盘阵列出现故障&#xff0c;分区无法识别。服务器数据恢复过程&#xff1a; 1、将故障服务器上所有磁盘编号后取出。经过初检&…

MySQL → SQL → DDL → 表操作 → 数据类型 知识链整理成一份系统的内容

1. 知识结构MySQL└── SQL&#xff08;结构化查询语言&#xff09;├── DDL&#xff08;数据定义语言&#xff09; → 定义结构│ ├── 表操作&#xff08;创建/修改/删除表&#xff09;│ └── 数据类型&#xff08;列字段类型定义&#xff09;├── DML&…

基于 gRPC 的接口设计、性能优化与生产实践

gRPC 是一种高性能、跨语言的远程过程调用&#xff08;RPC&#xff09;框架&#xff0c;由 Google 开发&#xff0c;基于 HTTP/2 协议和 Protocol Buffers&#xff08;Protobuf&#xff09;序列化机制&#xff0c;广泛应用于微服务架构和分布式系统中。本文将深入解析 gRPC 的底…

如何回答研究过MQ的源码吗

​一、核心回答框架&#xff08;由浅入深&#xff09;​​1️⃣ ​明确研究对象和深度​“我主要研究过 ​​[具体MQ名称&#xff0c;如RocketMQ/Kafka/RabbitMQ]​​ 的核心模块源码&#xff0c;重点关注 ​​[选1-2个核心方向]​​ &#xff0c;比如存储机制、网络通信或事务…

20250815给ubuntu22.04.5的系统缩小/home分区

20250815给ubuntu22.04.5的系统缩小/home分区 2025/8/15 9:42缘起&#xff0c;联想IdeaPad笔记本电脑&#xff0c;换了4TB的SSD固态硬盘。 WIN10和ubuntu22.04.5的双系统。 WIN10系统&#xff1a; C盘 500GB&#xff1f; D盘 500GB&#xff1f;ubuntu22.04.5 /home分区大概 2.7…

Windows 11 首次开机引导(OOBE 阶段)跳过登录微软账户,创建本地账户

今天重装WIN11系统后&#xff0c;发现在首次开机引导&#xff08;OOBE 阶段&#xff09;中&#xff0c;微软默认强制联网并登录微软账户&#xff0c;没有的让你注册什么的就很烦。通过下面方法可以跳过登录微软账户&#xff0c;直接创建本地账户。✅ 方法一&#xff1a;断网&am…

IDE:vscode的vue3模板

快捷键打开配置选项&#xff1a;ctrl shift p选择配置文件&#xff1a;Snippet: Configure Snippets{// Place your snippets for vue here. Each snippet is defined under a snippet name and has a prefix, body and // description. The prefix is what is used to trigg…

C++_390_透传功能中,使用单例模式,管理session透传会话的生命周期,为每个会话记录报警读取状态,监控会话心跳状态,后台线程自动清理超时会话

问题:对接板端,cvms lite 通道管理页面,无法添加和删除多目通道 审核:XXX 根因分析:多通道的刪除和添加需要通过eventcheck上告实现,cvms lite云走的透传没有eventcheck 解决办法:云透传加上eventcheck上告 footer: Closes: #BUG2025052701632 我帮你分两部分解析:先解…

MIPI-csi调试

调试流程1. 硬件连线检查数据线&#xff08;MIPI Data Lanes&#xff09; &#xff1a;确认 IMX415 模组的 4 条数据线 1 条时钟线连接正确。如果是 4-lane 输出&#xff0c;SoC 的 D-PHY 必须也配置成 4-lane 接收。控制线&#xff1a;原理图IC SDA/SCL → &i2c8 控制器管…

Mysql——》提取JSON对象和数组

推荐链接&#xff1a; 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…

JSON值包含引号

目录背景代码正则说明背景 很多时候&#xff0c;在无法使用Gson等能处理非标准化JSON的工具时&#xff0c;需要对JSON值中的JSON限定符进行转义&#xff0c;使用正则比较方便&#xff0c;以对JSON值中的引号做转义为例 代码 private static String escapeUnescapedQuotes(St…

後端開發Python篇

書接上回&#xff1a;後端開發技術教學(五) 魔術方法、類、序列化-CSDN博客 必要資源&#xff1a; trae中下載網址: TRAE - The Real AI Engineer phpStudy 2018 : phpStudy - Windows 一键部署 PHP 开发环境 小皮出品 python解釋器&#xff1a;Welcome to Python.org 前言…