【CKA】Kubernetes(k8s)认证之CKA考题讲解
CKA考题讲解
0.考试101
0.1 kubectl命令⾃动补全
在 bash 中设置当前 shell 的⾃动补全,要先安装 bash-completion 包。
echo "source <(kubectl completion bash)" >> ~/.bashrc
还可以在补全时为 kubectl 使⽤⼀个速记别名:
alias k=kubectl
complete -o default -F __start_kubectl k
0.2 切换cluster环境
kubectl config use-context hk8skubectl config use-context CONTEXT_NAME [options]
0.3 关于–all-namespace
使⽤ -A 参数来简写完整参数内容 --all-namespaces
0.4 查看资源作⽤域
## 列出所⽀持的全部资源类型和它们的简称、API组, 是否是名字空间作⽤域 和 Kind。
kubectl api-resources
kubectl api-resources --namespaced=true # 所有命名空间作⽤域的资源
kubectl api-resources --namespaced=false # 所有⾮命名空间作⽤域的资源
kubectl api-resources -o name # ⽤简单格式列举所有资源(仅显示资源名称)
kubectl api-resources -o wide # ⽤扩展格式列举所有资源(⼜称 "wide" 格式)
kubectl api-resources --verbs=list,get # ⽀持 "list" 和 "get" 请求动词的所有资源
kubectl api-resources --api-group=extensions # "extensions" API 组中的所有资源
0.5 关于–dry-run
kubectl create deploy nginx --image=nginx --dry-run=client -o yaml > deploynginx.yml
1.权限控制RBAC
Context:为流⽔线创建⼀个新的 ClusterRole 并为其绑定到范围为指定 namespace 的 特定ServiceAccount 。
Task:创建⼀个名为 deployment-clusterrole 且 仅允许创建 以下资源类型的新 ClusterRole
Deployment
StatefulSet
DaemonSet
在现有的 namespace app-team1 创建⼀个名为 cicd-token 的新 ServiceAccount 。
限于 namespace app-team1 中,将新的 ClusterRole deployment-clusterrole 绑定到新的 ServiceAccount
cicd-token 。
#在现有的 namespace **app-team1** 创建⼀个名为 cicd-token 的新 ServiceAccount 。
kubectl create sa cicd-token -n app-team1#创建⼀个名为 deployment-clusterrole 且 仅允许创建 以下资源类型的新 ClusterRole
Deployment
StatefulSet
DaemonSetkubectl create clusterrole deployment-clusterrole --verb=create --resource=deployment,daemonsets,statefulsets#限于 namespace app-team1 中,将新的 ClusterRole deployment-clusterrole 绑定到新的 ServiceAccount cicd-token
kubectl create rolebinding cicd --clusterrole=deployment-clusterrole --serviceaccount=app-team1:cicd-token -n app-team1
2.查看pod的CPU
Task
通过 pod label name=cpu-loader ,并找到运⾏时占⽤⼤量CPU的pod。
并将占⽤CPU最⾼的 pod名称写⼊⽂件 /opt/KUTR000401/KUTR00401.txt(已存在)。
#环境如果异常,kubectl top 命令⽆法执⾏,那么⾸先 kubectl describe pod/metrics-server-pod -n kube-system 并尝试删除 kubectl delete pod/metrics-server-pod -n kube-system,等待pod重建后 READY状态恢复为1/1。#如果执行 kubectl top pod -A
error: Metrics API not available #要在 Kubernetes 集群中安装 Metrics Serverkubectl top pods -A -l name=cpu-loader --sort-by='cpu'
echo pod-name >> /opt/KUTR00401/KUTR00401.txt
3.配置⽹络策略NetworkPolicy
Task
在现有的 namespace corp-net 中创建⼀个名为 allow-port-from-namespace 的新 NetworkPolicy。
确保新的 NetworkPolicy 允许 namespace echo 中的 Pods 连接到 namespace corp-net 中的 Pods 的 80 端
⼝
进⼀步确保新的 NetworkPolicy:
不允许对没有在监听 端⼝ 80 的Pods的访问
不允许⾮来⾃ namespace echo 中的 Pods的访问
https://kubernetes.io/zh-cn/docs/concepts/services-networking/network-policies/
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: allow-port-from-namespacenamespace: corp-net
spec:podSelector: {}policyTypes:- Ingressingress:- from:- namespaceSelector:matchLabels:name: echoports:- protocol: TCPport: 80####################################################################################apiVersion: networking.k8s.io/v1 # 指定使用的 Kubernetes 网络策略 API 版本
kind: NetworkPolicy # 定义这是一个网络策略资源
metadata:name: allow-port-from-namespace # 网络策略的名称namespace: corp-net # 指定网络策略应用的命名空间
spec:podSelector: {} # 选择当前命名空间内的所有 Pod(因为没有指定任何标签选择器)policyTypes:- Ingress # 指定策略类型为 Ingress,即控制进入 Pod 的流量ingress: # 定义 Ingress 规则- from: # 指定允许的流量来源- namespaceSelector: # 使用命名空间选择器来选择允许的命名空间matchLabels: # 定义要匹配的标签name: echo # 只有标签为 name=echo 的命名空间中的 Pod 可以访问ports: # 指定允许访问的端口- protocol: TCP # 使用 TCP 协议port: 80 # 目标端口为 80
kubectl get pod -n corp-net -o wide
kubectl exec -it pod/echo-pod -n echo --sh
curl pod-ip #容器内验证策略是否⽣效
telnet pod-ip 6379
4.暴露服务service
Task
请重新配置现有的deployment front-end 以及添加名为 http 的端⼝规范来公开现有容器 nginx 的端⼝
80/tcp 。
创建⼀个名为 front-end-svc 的 service,以暴露容器端⼝ http。
配置此 service,以通过各个pod所在节点上的 NodePort 来公开他们。
https://kubernetes.io/zh-cn/docs/concepts/services-networking/service/#type-nodeport
kubectl explain deployment.spec.template.spec.containers.ports #查看语法
kubectl edit deploy/front-end -n default #编辑deployment
编辑 front-end-svc.yml
apiVersion: v1
kind: Service
metadata:name: front-end-svcnamespace: default
spec:type: NodePortselector:app: front-endports:
# 默认情况下,为了⽅便起⻅,`targetPort` 被设置为与 `port` 字段相同的值。- port: 80targetPort: http
# 可选字段
# 默认情况下,为了⽅便起⻅,Kubernetes 控制平⾯会从某个范围内分配⼀个端⼝号(默认:30000-32767)nodePort: 30007
应⽤yaml⽂件,并验证
kubectl apply -f front-end-svc.yml
kubectl get svc
curl localhost:30007
6.扩容deployment副本
Task:
将 deployment guestbook 扩展⾄ 4 个 pods
kubectl get deploy/guestbook -o wide
kubectl scale deploy/guestbook --replicas 4
kubectl get deploy/guestbook -o wide
7.调度pod到指定节点
Task:
按如下要求调度⼀个 Pod
名称: nginx-kusc00401
Image:nginx
Node selector: disk=ssd
空间名称 default
https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/assign-pods-nodes-using-node-affinity/
apiVersion: v1
kind: Pod
metadata:name: nginx-kusc00401
spec:containers:- name: nginximage: nginximagePullPolicy: IfNotPresentnodeSelector:disk: ssd
8.查看可⽤节点数量
Task:
检查有多少 nodes 已经就绪 (不包括被打上 Taint: NoSchedule 的节点),并将数量写⼊
/opt/KUSC00402/kusc00402.txt chown magedu: /opt/KUSC00402/kusc00402.txt
kubectl describe nodes | grep -i Taint | grep -vci NoSchedule
echo node-num >> /opt/KUSC00402/kusc00402.txt
9.创建多容器的pod
Task:
按如下要求调度⼀个Pod:名称 kucc8
app containers:2
container名称/image
-
nginx
-
consul
空间名称 default
apiVersion: v1
kind: Pod
metadata:name: kucc8
spec:containers:- name: nginximage: nginx- name: consulimage: consul
10.创建PV
Task
创建名为 app-data 的 persistent volume ,容量为 1Gi ,访问模式为 ReadWriteOnce 。
volume 类型为 hostPath ,位于 /srv/app-data
apiVersion: v1
kind: PersistentVolume
metadata:name: app-data
spec:capacity:storage: 1GiaccessModes:- ReadWriteOncehostPath:path: "/srv/app-data"
11.创建PVC
Task
创建⼀个新的 PersistentVolumeClaim :
-
名称 pv-volume
-
Class csi-hostpath-sc managed-nfs-storage
-
容量 10Mi
创建⼀个新的 Pod,将 PersistentVolumeClaim 作为 volume 进⾏挂载:
-
名称 web-server
-
image nginx
-
挂载路径 /usr/share/nginx/html
配置新的Pod,使得对上述 volume 具有 ReadWriteOnce 权限。
最后,使⽤ kubectl edit 或 kubectl patch 将 PersistentVolumeClaim 的容量扩展为 70Mi,并记录此更改。
https://kubernetes.io/docs/tasks/configure-pod-container/configure-persistent-volume-storage/#create-a-persistentvolumeclaim
pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: pv-volume
spec:storageClassName: csi-hostpath-scaccessModes:- ReadWriteOnceresources:requests:storage: 10Mi
pvc-pod.yml
apiVersion: v1
kind: Pod
metadata:name: web-server
spec:volumes:- name: task-pv-storagepersistentVolumeClaim:claimName: pv-volumecontainers:- name: web-serverimage: nginxports:- containerPort: 80name: "http"volumeMounts:- mountPath: "/usr/share/nginx/html"name: task-pv-storage
kubectl apply -f pvc.yml
kubectl apply -f pvc-pod.yml
kubectl get pvc
kubectl edit pvc/pv-volume --record #调整PVC的容量⼤⼩
12.查看pod⽇志
Task
监控 pod foo 的⽇志并 提取与错误 file-not-found 相对应的⽇志⾏
将这些⽇志⾏写⼊ /opt/KUTR00101/foo
kubectl get pods -A
kubectl logs pod/foo | grep 'file-not-found' > /opt/KUTR00101/foo
cat !!:$
13.使⽤sidecar代理容器⽇志
Context
将⼀个现有的 Pod 集成到 Kubernetes 的内置⽇志记录体系结构中(例如 kubectl logs)。
添加 streaming sidecar 容器是实现此要求的⼀种好⽅法。
Task
使⽤ busybox Image 来将名为 sidecar 的 sidecar 容器添加到现有的 Pod big-corp-app 中。
新的 sidecar 容器必须运⾏以下命令:
/bin/sh -c tail -n+1 -f /var/log/big-corp-app.log
使⽤挂载在 /var/log 的 Volume,使⽇志⽂件 big-corp-app.log 可⽤于 sidecar 容器。
除了添加所需要的 volume mount 以外,请勿更改现有容器的规格。
kubectl get pod/big-corp-app -n default -o yaml > big-corp-app-origin.yml
cp big-corp-app-origin.yml big-corp-app.yml
https://kubernetes.io/zh-cn/docs/concepts/cluster-administration/logging/#sidecar-container-with-logging-agent
编辑 big-corp-app.yml
apiVersion: v1
kind: Pod
metadata:name: big-corp-appnamespace: default
spec:containers:- name: countimage: busyboxargs:- /bin/sh- -c- >i=0;while true;doecho "$(date) INFO $i" >> /var/log/big-corp-app.log;i=$((i+1));sleep 1;donevolumeMounts:- name: varlogmountPath: /var/log- name: sidecarimage: busyboxargs:- /bin/sh- -c- >tail -n+1 -F /var/log/big-corp-app.logvolumeMounts:- name: varlogmountPath: /var/logvolumes:- name: varlogemptyDir: {}
14.升级集群
Task
现有的 Kubernetes 集群正在运⾏版本 1.24.2。仅将 master 节点上的所有 Kubernetes 控制平⾯和节点组件升级
到版本 1.24.3。
确保在升级之前 drain master 节点,并在升级后 uncordon master 节点。
可以使⽤以下命令,通过 ssh 连接到 master 节点:
ssh master01
可以使⽤以下命令,在该 master 节点上获取更⾼权限:
sudo -i
另外,在主节点上升级 kubelet 和 kubectl。
请不要升级⼯作节点,etcd,container 管理器,CNI 插件, DNS 服务或任何其他插件。
https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/#upgrading-control-plane-nodes
#考试节点上去保护并排空升级节点的pod
kubectl cordon master01
kubectl drain master01 --ignore-daemonsets=true --delete-emptydir-data=true
ssh master01
sudo -i
###升级管理⼯具
apt-mark unhold kubeadm && \
apt-get update && apt-get install -y kubeadm=1.24.3-00 && \
apt-mark hold kubeadm
#验证版本
kubeadm version
#验证集群升级计划
kubeadm upgrade plan
#升级集群版本,包含 kube-apiserver、kube-controller-manager、kube-scheduler、kubeproxy,排除etcd
kubeadm upgrade apply v1.24.3 --etcd-upgrade=false
#多个master节点,使⽤kubeadm upgrade node升级其他控制平⾯节点
###升级master节点的 kubelet 和 kubectl
apt-mark unhold kubelet kubectl && \
apt-get update && apt-get install -y kubelet=1.24.3-00 kubectl=1.24.3-00 && \
apt-mark hold kubelet kubectl
#解除节点保护
exit
exit
kubectl uncordon master01
15.备份还原etcd
Task
⾸先,为运⾏在 https://127.0.0.1:2379 上的现有 etcd 实例创建快照并将快照保存到 /var/lib/backup/etcdsnapshot.db
为给定实例创建快照预计能在⼏秒钟内完成。 如果该操作似乎挂起,则命令可能有问题。⽤ CTRL + C 来取消操
作,然后重试。
然后还原位于/data/backup/etcd-snapshot-previous.db 的现有先前快照。
提供了以下 TLS 证书和密钥,以通过 etcdctl 连接到服务器。
CA 证书: /opt/KUIN00601/ca.crt
客户端证书: /opt/KUIN00601/etcd-client.crt
客户端密钥: /opt/KUIN00601/etcd-client.key
https://kubernetes.io/docs/tasks/administer-cluster/configure-upgrade-etcd/
##1.25的考试中,etcd的备份还原是在操作机上进⾏操作
export ETCDCTL_API=3
#备份
etcdctl --endpoints=https://10.100.0.100:2379 --cacert="/opt/KUIN00601/ca.crt" --
cert="/opt/KUIN00601/etcd-client.crt" --key="/opt/KUIN00601/etcd-client.key"
snapshot save /var/lib/backup/etcd-snapshot.db
#查看
etcdctl snapshot status /var/lib/backup/etcd-snapshot -w table
#查看
ll /data/backup/etcd-snapshot-previous.db
#还原
etcdctl --endpoints=https://10.100.0.100:2379 --cacert="/opt/KUIN00601/ca.crt" --
cert="/opt/KUIN00601/etcd-client.crt" --key="/opt/KUIN00601/etcd-client.key"
snapshot restore /data/backup/etcd-snapshot-previous.db --data-dir=/var/lib/etcd
16.排查集群中故障节点
Task
名为 node02 的 Kubernetes worker node 处于 NotReady 状态。
调查发⽣这种情况的原因,并采取相应的措施将 node 恢复为 Ready 状态,确保所做的任何更改永久⽣效。
可以使⽤以下命令,通过 ssh 连接到 node02 节点:
ssh node02
可以使⽤以下命令,在该节点上获取更⾼权限:
sudo -i
ssh node02
sudo -i
systemctl status kubelet.service
systemctl enable --now kubelet.service
systemctl status kubelet.service
exit
exit
kubectl get nodes
17.节点维护
Task:
将名为 node02 的node 设置为不可⽤,并重新调度该 node上所有运⾏的 pods。
kubectl cordon node02
kubectl drain node02 --ignore-daemonsets --delete-emptydir-data --force
相关文章:

【CKA】Kubernetes(k8s)认证之CKA考题讲解
CKA考题讲解 0.考试101 0.1 kubectl命令⾃动补全 在 bash 中设置当前 shell 的⾃动补全,要先安装 bash-completion 包。 echo "source <(kubectl completion bash)" >> ~/.bashrc还可以在补全时为 kubectl 使⽤⼀个速记别名: al…...

android WebRtc 无法推流以及拉流有视频无声音问题
最近在开发使用WebRtc进行视频通话和语音通话,我使用的设备是MTK的手机,期间后台的技术人员几乎没法提供任何帮助,只有接口和测试的web端,有遇到不能推流。推流成功网页端有画面有声音,但是安卓端有画面,没…...

【5G】Spectrum 频谱
频谱是移动运营商的关键资产,可用的频谱是定义移动网络容量和覆盖范围的重要因素。本章讨论了5G的不同频谱选项、它们的特性以及5G早期部署阶段的预期频谱。5G是首个旨在利用大约400 MHz到90 GHz之间所有频段的移动无线系统。5G还设计用于在许可、共享和非许可频谱带…...

Flink学习连载文章11--双流Join
双流 Join 和两个流合并是不一样的 两个流合并:两个流变为 1 个流 union connect 双流 join: 两个流 join,其实这两个流还是原来的,只是满足条件的数据会变为一个新的流。 可以结合 sql 语句中的 union 和 join 的区别。 在离线 Hive 中&…...

R语言 | 峰峦图 / 山脊图
目的:为展示不同数据分布的差异。 1. ggplot2 实现 # 准备数据 datmtcars[, c("mpg", "cyl")] colnames(dat)c("value", "type") head(dat) # value type #Mazda RX4 21.0 6 #Mazda RX4 Wag …...

16-03、JVM系列之:内存与垃圾回收篇(三)
JVM系列之:内存与垃圾回收篇(三) ##本篇内容概述: 1、执行引擎 2、StringTable 3、垃圾回收一、执行引擎 ##一、执行引擎概述 如果想让一个java程序运行起来,执行引擎的任务就是将字节码指令解释/编译为对应平台上的本地机器指令才可以。 简…...

解决Windows与Ubuntu云服务器无法通过Socket(udp)通信问题
今天在写Socket通信代码的时候,使用云服务器自己与自己通信没有问题,但是当我们把客户端换为Windows系统的时候却无法发送信息到Linux当中,耗时一上午终于搞定了😒。 问题: 如上图,当我在windows的客户端…...

Mysql 中的锁机制
在 MySQL 中,锁是一种机制,用于管理并发访问以确保数据的一致性和完整性。MySQL 支持多种类型的锁,主要分为以下几类: 全局锁:锁定整个数据库,适用于备份等操作,期间禁止所有其他操作。表级锁&…...

12月第1周AI资讯
阅读时间:3-4min 更新时间:2024.12.2-2024.12.6 目录 OpenAI CEO Sam Altman 预告“12天OpenAI”系列活动 腾讯HunyuanVideo:130亿参数的开源视频生成模型 李飞飞的World Labs发布空间智能技术预览版 中科院联手腾讯打造“AI带货王”AnchorCrafter OpenAI CEO Sam Alt…...

【音频识别】数据集合集!
本文将为您介绍经典、热门的数据集,希望对您在选择适合的数据集时有所帮助。 1 Chenyme-AAVT 更新时间:2024-08-23 访问地址: GitHub 描述: 这是一个全自动(音频)视频翻译项目。利用Whisper识别声音,AI…...

Nginx核心配置详解
一、配置文件说明 nginx官方帮助文档:nginx documentation nginx的配置文件的组成部分: 主配置文件:nginx.conf子配置文件: include conf.d/*.conffastcgi, uwsgi,scgi 等协议相关的配置文件mime.types:…...

智能工厂的设计软件 用“力force”的性质构造智能体原型
本文要点 在“智能工厂的设计软件”中 我将对力的研究分为三个领域:经典力学,相对论力学和量子力学,每个研究领域都涉及到force自身性质所具有两个侧面: 明示高度内聚的不可观测的内部表征-“互相性”(哲学性质/哲学…...

Apache AGE:基于PostgreSQL的图数据库
Apache AGE(A Graph Extension)是一个基于 PostgreSQL 的图数据库。它以扩展插件的形式提供,可以在利用 PostgreSQL 先进的 SQL 查询功能和事务支持的同时,享受图数据库的灵活性和可扩展性。 Apache AGE 最初由 Bitnine Global In…...

RabbitMQ延迟消息的实现
RabbitMQ延迟队列的实现 延迟消息是什么延迟消息的实现死信交换机代码实现 延迟消息插件 延迟消息是什么 延迟消息是将消息发送到MQ中,消费者不会立即收到消息,而是过一段时间之后才会收到消息,进行处理。在一些业务中,可以用到延…...

SAP在中国:助力企业跨越成长的新篇章
在当今这个数字化转型风起云涌的时代,每一个企业都在寻求更高效、更智能的管理方式,以期在激烈的市场竞争中脱颖而出。在这场变革中,SAP作为全球领先的企业管理软件解决方案提供商,正以其卓越的产品与服务,在中国这片充…...

数据结构代码归纳
线性表 线性表的顺序表示 定义与初始化 typedef struct SqList{ElemType data[MaxSize];//ElemType *data 开动态数组 int length; }Sqlist; void InitList(SqList &L){L.length0;//若静态数组//若动态数组 //L.data(ElemType*)malloc(sizeof(ElemType)*MaxSize); } …...

数仓技术hive与oracle对比(一)
准备 包括软硬件环境、数据、测试数据三方面的准备内容。 环境 虚拟机软件virtualbox7,同样的虚拟机配置:内存2G、cpu一核,物理主机同一台macbookpro(13-2020款),所以硬盘IO读写速度一致。 综上&#x…...

筑起厂区安全--叉车安全防护装置全解析
在繁忙的工业生产领域中,叉车作为搬运工,穿梭于仓储与生产线之间。然而,叉车的高效运作背后,也隐藏着诸多安全风险,尤其是在那些空间狭小、物流繁忙的环境中。为了降低这些潜在的危险,叉车安全防护装置便成…...

深入浅出云计算 ---笔记
这是博主工作闲时的一些日常学习记录,有些之前很熟悉的,但工作中不常用,慢慢就遗忘了,在这里记录,也是为了激励自己坚持复习,如果有能帮到你,那我将感到非常的荣幸~ 快速到达↓↓↓ IaaS篇>&…...

ARINC 标准全解析:航空电子领域多系列标准的核心内容、应用与重要意义
ARINC标准概述 ARINC标准是航空电子领域一系列重要的标准规范,由航空电子工程委员会(AEEC)编制,众多航空公司等参与支持。这些标准涵盖了从飞机设备安装、数据传输到航空电子设备功能等众多方面,确保航空电子系统的兼…...

SNMP 协议介绍
SNMP 协议详细介绍 SNMP(Simple Network Management Protocol,简单网络管理协议)是一个用于管理和监控计算机网络设备(如路由器、交换机、服务器等)的协议。它允许网络管理员通过网络查看和控制这些设备的状态、配置和性能。 SNMP 协议定义了网络设备如何与管理系统进行通…...

Python中的数据结构深入解析:从列表到字典的优化技巧
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! Python是一门以易用性和可读性著称的高级编程语言,其内置的数据结构为开发者提供了强大的工具,但了解其底层实现及性能优化策略却常被忽略。本文深入探讨Python中的核心数据结构,包括列表(list)、元组…...

如何利用Java爬虫获得商品类目
在当今数字化时代,数据已成为企业最宝贵的资产之一。获取和分析数据的能力对于任何希望在市场上保持竞争力的企业来说都是至关重要的。对于电子商务平台和市场研究公司而言,获取商品类目数据尤为重要,因为这些数据可以帮助他们更好地理解市场…...

力扣面试题 32 - 检查平衡性 C语言解法
题目: 实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7]3/ \9 20/ \15 7 返回 true 。 …...
【机器学习】机器学习的基本分类-监督学习-决策树-ID3 算法
ID3(Iterative Dichotomiser 3)是决策树的一种构造算法,由 Ross Quinlan 在 1986 年提出。它主要用于分类问题,通过信息增益选择特征来构建决策树。ID3 假设数据是离散型特征,且不支持连续型数据。 1. 核心思想 划分标…...

Implicit style-content separation using lora
1.Introduction 图像风格化,这个任务涉及根据某些风格参考改编图像的风格,这些参考可以是基于文本或基于图像的,同时保持其内容不变,内容指的是图像的语义信息和结构,而风格通常指的是视觉特征和模式,例如颜色和纹理。这是一个有挑战的任务,因为风格和内容之间的强关联…...

ROS[aruco_ros+easy_handeye]手眼标定(眼在手外+UR10e+realsense-d435i)
参考链接: https://zhuanlan.zhihu.com/p/576861119 https://blog.csdn.net/qq_32618327/article/details/120730198 本次在Docker中使用 打印Aruco码:https://chev.me/arucogen/ 选择Dictionary为 Original ArUco(aruco_ros默认这个,如果…...

第九篇:k8s 通过helm发布应用
什么是helm? Helm 是 Kubernetes 的包管理器。Helm 是查找、分享和使用软件构建 Kubernetes 的最优方式。 在红帽系的Linux中我们使用yum来管理RPM包,类似的,在K8s中我们可以使用helm来管理资源对象(Deployment、Service、Ingress…...

dataTable
在 C# 中,DataTable 是 .NET Framework 中用于处理数据表格的一个类,属于 System.Data 命名空间。它是一种内存中表示数据表的结构,通常用于临时存储和操作数据,类似于数据库中的表。DataTable 的主要特点是行列结构,其…...

json+Tomact项目报错怎么办?
在响应请求的时候,如果http响应没有指定响应数据的content-type,浏览器就不知道按照什么格式解析响应体的数据,因为浏览器只知道怎样解析http的行和头,再从头里获取响应体的字节长度和类型,按照你给的长度去截流&#…...