编译安装Kubernetes 1.29 高可用集群(6)--Cilium网络组件和CoreDNS配置

news/2024/7/6 7:40:36/文章来源:https://www.cnblogs.com/cn-jasonho/p/18281134

1.部署Cilium网络组件

1.1 在k8s-master节点上,下载安装helm

wget https://mirrors.huaweicloud.com/helm/v3.15.2/helm-v3.15.2-linux-amd64.tar.gztar -zxvf helm-v3.15.2-linux-amd64.tar.gz
cp linux-amd64/helm /usr/bin/# helm version 
version.BuildInfo{Version:"v3.15.2", GitCommit:"1a500d5625419a524fdae4b33de351cc4f58ec35", GitTreeState:"clean", GoVersion:"go1.22.4"}

1.2 在任意k8s-master节点上,添加cilium安装源并下载安装包

# 添加安装源
helm repo add cilium https://helm.cilium.io# 下载安装包,运行pull命令后会获得最新版cilium的tar包
helm pull cilium/cilium
tar -xvf cilium-*.tar# 修改image为国内源
sed -i "s#quay.io/#m.daocloud.io/quay.io/#g" cilium/values.yaml

1.3 在任意k8s-master节点上安装cilium

# helm install cilium ./cilium/ \
--namespace kube-system \
--set hubble.relay.enabled=true \
--set hubble.ui.enabled=true \
--set prometheus.enabled=true \
--set operator.prometheus.enabled=true \
--set hubble.enabled=true \
--set hubble.metrics.enabled="{dns,drop,tcp,flow,port-distribution,icmp,http}"
注:如需开启IPv6可添加--set ipv6.enabled=true参数# kubectl get pod -A -o wide
NAMESPACE     NAME                              READY   STATUS    RESTARTS   AGE     IP               NODE         NOMINATED NODE   READINESS GATES
kube-system   cilium-87hd8                      1/1     Running   0          4m53s   192.168.83.221   k8s-node02   <none>           <none>
kube-system   cilium-9fdbh                      1/1     Running   0          4m53s   192.168.83.220   k8s-node01   <none>           <none>
kube-system   cilium-operator-f45f4975f-f9q7p   1/1     Running   0          4m53s   192.168.83.220   k8s-node01   <none>           <none>
kube-system   cilium-operator-f45f4975f-gw5z6   1/1     Running   0          4m53s   192.168.83.221   k8s-node02   <none>           <none>
kube-system   hubble-relay-84849f9dd5-59zhs     1/1     Running   0          4m53s   172.31.0.28      k8s-node01   <none>           <none>
kube-system   hubble-ui-79b7f9f4b-ccdrh         2/2     Running   0          4m53s   172.31.0.209     k8s-node01   <none>           <none># kubectl get all --all-namespaces
NAMESPACE     NAME                                  READY   STATUS    RESTARTS   AGE
kube-system   pod/cilium-87hd8                      1/1     Running   0          4m20s
kube-system   pod/cilium-9fdbh                      1/1     Running   0          4m20s
kube-system   pod/cilium-operator-f45f4975f-f9q7p   1/1     Running   0          4m20s
kube-system   pod/cilium-operator-f45f4975f-gw5z6   1/1     Running   0          4m20s
kube-system   pod/hubble-relay-84849f9dd5-59zhs     1/1     Running   0          4m20s
kube-system   pod/hubble-ui-79b7f9f4b-ccdrh         2/2     Running   0          4m20sNAMESPACE     NAME                     TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                  AGE
default       service/kubernetes       ClusterIP   10.66.0.1      <none>        443/TCP                  136d
kube-system   service/cilium-agent     ClusterIP   None           <none>        9964/TCP                 4m20s
kube-system   service/hubble-metrics   ClusterIP   None           <none>        9965/TCP                 4m20s
kube-system   service/hubble-peer      ClusterIP   10.66.180.91   <none>        443/TCP                  4m20s
kube-system   service/hubble-relay     ClusterIP   10.66.79.186   <none>        80/TCP                   4m20s
kube-system   service/hubble-ui        ClusterIP   10.66.91.101   <none>        80/TCP                   4m20sNAMESPACE     NAME                    DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR            AGE
kube-system   daemonset.apps/cilium   2         2         2       2            2           kubernetes.io/os=linux   4m20sNAMESPACE     NAME                              READY   UP-TO-DATE   AVAILABLE   AGE
kube-system   deployment.apps/cilium-operator   2/2     2            2           4m20s
kube-system   deployment.apps/hubble-relay      1/1     1            1           4m20s
kube-system   deployment.apps/hubble-ui         1/1     1            1           4m20sNAMESPACE     NAME                                        DESIRED   CURRENT   READY   AGE
kube-system   replicaset.apps/cilium-operator-f45f4975f   2         2         2       4m20s
kube-system   replicaset.apps/hubble-relay-84849f9dd5     1         1         1       4m20s
kube-system   replicaset.apps/hubble-ui-79b7f9f4b         1         1         1       4m20s# kubectl get apiservices.apiregistration.k8s.io
NAME                                    SERVICE   AVAILABLE   AGE
v1.                                     Local     True        136d
v1.admissionregistration.k8s.io         Local     True        136d
v1.apiextensions.k8s.io                 Local     True        136d
v1.apps                                 Local     True        136d
v1.authentication.k8s.io                Local     True        136d
v1.authorization.k8s.io                 Local     True        136d
v1.autoscaling                          Local     True        136d
v1.batch                                Local     True        136d
v1.certificates.k8s.io                  Local     True        136d
v1.coordination.k8s.io                  Local     True        136d
v1.discovery.k8s.io                     Local     True        136d
v1.events.k8s.io                        Local     True        136d
v1.flowcontrol.apiserver.k8s.io         Local     True        136d
v1.networking.k8s.io                    Local     True        136d
v1.node.k8s.io                          Local     True        136d
v1.policy                               Local     True        136d
v1.rbac.authorization.k8s.io            Local     True        136d
v1.scheduling.k8s.io                    Local     True        136d
v1.storage.k8s.io                       Local     True        136d
v1alpha1.admissionregistration.k8s.io   Local     True        136d
v1alpha1.authentication.k8s.io          Local     True        136d
v1alpha1.internal.apiserver.k8s.io      Local     True        136d
v1alpha1.networking.k8s.io              Local     True        136d
v1alpha1.storage.k8s.io                 Local     True        136d
v1alpha2.resource.k8s.io                Local     True        136d
v1beta1.admissionregistration.k8s.io    Local     True        136d
v1beta1.authentication.k8s.io           Local     True        136d
v1beta3.flowcontrol.apiserver.k8s.io    Local     True        136d
v2.autoscaling                          Local     True        136d
v2.cilium.io                            Local     True        90m
v2alpha1.cilium.io                      Local     True        90m

1.4 在任意k8s-master节点上安装cilium专属监控面板

下载部署文件
# wget https://github.com/cilium/cilium/blob/main/examples/kubernetes/addons/prometheus/monitoring-example.yaml替换镜像源
sed -i "s#docker.io/#dockerpull.com/#g" monitoring-example.yaml
sed -i "s/prom\/prometheus:v2.42.0/dockerpull.com\/prom\/prometheus:v2.42.0/g" monitoring-example.yaml部署监控
# kubectl apply -f monitoring-example.yaml 
namespace/cilium-monitoring created
serviceaccount/prometheus-k8s created
configmap/grafana-config created
configmap/grafana-cilium-dashboard created
configmap/grafana-cilium-operator-dashboard created
configmap/grafana-hubble-dashboard created
configmap/grafana-hubble-l7-http-metrics-by-workload created
configmap/prometheus created
clusterrole.rbac.authorization.k8s.io/prometheus created
clusterrolebinding.rbac.authorization.k8s.io/prometheus created
service/grafana created
service/prometheus created
deployment.apps/grafana created
deployment.apps/prometheus created# kubectl get pod -A -o wide
NAMESPACE           NAME                              READY   STATUS    RESTARTS   AGE     IP               NODE         NOMINATED NODE   READINESS GATES
cilium-monitoring   grafana-74b486577f-7w978          1/1     Running   0          37s     172.31.1.205     k8s-node02   <none>           <none>
cilium-monitoring   prometheus-58668c58df-jt9sn       1/1     Running   0          37s     172.31.1.40      k8s-node02   <none>           <none>
kube-system         cilium-87hd8                      1/1     Running   0          60m     192.168.83.221   k8s-node02   <none>           <none>
kube-system         cilium-9fdbh                      1/1     Running   0          60m     192.168.83.220   k8s-node01   <none>           <none>
kube-system         cilium-operator-f45f4975f-f9q7p   1/1     Running   0          60m     192.168.83.220   k8s-node01   <none>           <none>
kube-system         cilium-operator-f45f4975f-gw5z6   1/1     Running   0          60m     192.168.83.221   k8s-node02   <none>           <none>
kube-system         coredns-78d4595769-gl8nx          1/1     Running   0          3h37m   172.31.1.225     k8s-node02   <none>           <none>
kube-system         hubble-relay-84849f9dd5-59zhs     1/1     Running   0          60m     172.31.0.28      k8s-node01   <none>           <none>
kube-system         hubble-ui-79b7f9f4b-ccdrh         2/2     Running   0          60m     172.31.0.209     k8s-node01   <none>           <none>

1.5 在任意k8s-master节点,上将hubble-ui、grafan和prometheus的type修改为NodePort

# kubectl edit svc -n kube-system hubble-ui service/hubble-ui
# kubectl edit svc -n cilium-monitoring grafana service/grafana
# kubectl edit svc -n cilium-monitoring prometheus service/prometheus
将type: ClusterIP修改为type: NodePort# kubectl get svc -A | grep monitor
cilium-monitoring   grafana          NodePort    10.66.236.94   <none>        3000:32301/TCP           4h1m
cilium-monitoring   prometheus       NodePort    10.66.12.82    <none>        9090:30584/TCP           4h1m# kubectl get svc -A | grep hubble
kube-system         hubble-metrics   ClusterIP   None           <none>        9965/TCP                 5h1m
kube-system         hubble-peer      ClusterIP   10.66.180.91   <none>        443/TCP                  5h1m
kube-system         hubble-relay     ClusterIP   10.66.79.186   <none>        80/TCP                   5h1m
kube-system         hubble-ui        NodePort    10.66.91.101   <none>        80:32093/TCP             5h1m

2. 部署CoreDNS

2.1 在k8s-master节点上,创建CoreDNS配置文件

cat >  /etc/kubernetes/yaml/coredns.yaml << EOF
# __MACHINE_GENERATED_WARNING__apiVersion: v1
kind: ServiceAccount
metadata:name: corednsnamespace: kube-systemlabels:kubernetes.io/cluster-service: "true"addonmanager.kubernetes.io/mode: Reconcile
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:labels:kubernetes.io/bootstrapping: rbac-defaultsaddonmanager.kubernetes.io/mode: Reconcilename: system:coredns
rules:
- apiGroups:- ""resources:- endpoints- services- pods- namespacesverbs:- list- watch
- apiGroups:- discovery.k8s.ioresources:- endpointslicesverbs:- list- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:annotations:rbac.authorization.kubernetes.io/autoupdate: "true"labels:kubernetes.io/bootstrapping: rbac-defaultsaddonmanager.kubernetes.io/mode: EnsureExistsname: system:coredns
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: system:coredns
subjects:
- kind: ServiceAccountname: corednsnamespace: kube-system
---
apiVersion: v1
kind: ConfigMap
metadata:name: corednsnamespace: kube-systemlabels:addonmanager.kubernetes.io/mode: EnsureExists
data:Corefile: |.:53 {errorshealth {lameduck 5s}readykubernetes cluster.local in-addr.arpa ip6.arpa {pods insecurefallthrough in-addr.arpa ip6.arpattl 30}prometheus :9153forward . /etc/resolv.conf {max_concurrent 1000}cache 30loopreloadloadbalance}
---
apiVersion: apps/v1
kind: Deployment
metadata:name: corednsnamespace: kube-systemlabels:k8s-app: kube-dnskubernetes.io/cluster-service: "true"addonmanager.kubernetes.io/mode: Reconcilekubernetes.io/name: "CoreDNS"
spec:# replicas: not specified here:# 1. In order to make Addon Manager do not reconcile this replicas parameter.# 2. Default is 1.# 3. Will be tuned in real time if DNS horizontal auto-scaling is turned on.strategy:type: RollingUpdaterollingUpdate:maxUnavailable: 1selector:matchLabels:k8s-app: kube-dnstemplate:metadata:labels:k8s-app: kube-dnsspec:securityContext:seccompProfile:type: RuntimeDefaultpriorityClassName: system-cluster-criticalserviceAccountName: corednsaffinity:podAntiAffinity:preferredDuringSchedulingIgnoredDuringExecution:- weight: 100podAffinityTerm:labelSelector:matchExpressions:- key: k8s-appoperator: Invalues: ["kube-dns"]topologyKey: kubernetes.io/hostnametolerations:- key: "CriticalAddonsOnly"operator: "Exists"nodeSelector:kubernetes.io/os: linuxcontainers:- name: corednsimage: registry.aliyuncs.com/google_containers/coredns/coredns:v1.11.1imagePullPolicy: IfNotPresentresources:limits:memory: 300Mirequests:cpu: 100mmemory: 70Miargs: [ "-conf", "/etc/coredns/Corefile" ]volumeMounts:- name: config-volumemountPath: /etc/corednsreadOnly: trueports:- containerPort: 53name: dnsprotocol: UDP- containerPort: 53name: dns-tcpprotocol: TCP- containerPort: 9153name: metricsprotocol: TCPlivenessProbe:httpGet:path: /healthport: 8080scheme: HTTPinitialDelaySeconds: 60timeoutSeconds: 5successThreshold: 1failureThreshold: 5readinessProbe:httpGet:path: /readyport: 8181scheme: HTTPsecurityContext:allowPrivilegeEscalation: falsecapabilities:add:- NET_BIND_SERVICEdrop:- ALLreadOnlyRootFilesystem: truednsPolicy: Defaultvolumes:- name: config-volumeconfigMap:name: corednsitems:- key: Corefilepath: Corefile
---
apiVersion: v1
kind: Service
metadata:name: kube-dnsnamespace: kube-systemannotations:prometheus.io/port: "9153"prometheus.io/scrape: "true"labels:k8s-app: kube-dnskubernetes.io/cluster-service: "true"addonmanager.kubernetes.io/mode: Reconcilekubernetes.io/name: "CoreDNS"
spec:selector:k8s-app: kube-dnsclusterIP: 10.66.0.2ports:- name: dnsport: 53protocol: UDP- name: dns-tcpport: 53protocol: TCP- name: metricsport: 9153protocol: TCPEOF

2.2 应用CoreDNS配置文件

# kubectl apply -f /etc/kubernetes/yaml/coredns.yaml
serviceaccount/coredns created
clusterrole.rbac.authorization.k8s.io/system:coredns created
clusterrolebinding.rbac.authorization.k8s.io/system:coredns created
configmap/coredns created
deployment.apps/coredns created
service/kube-dns created
# kubectl get pod -n kube-system -o wide | grep coredns
coredns-78d4595769-gl8nx          1/1     Running   0          164m    172.31.1.225     k8s-node02   <none>           <none># kubectl get all --all-namespaces
NAMESPACE     NAME                                  READY   STATUS    RESTARTS   AGE
kube-system   pod/cilium-87hd8                      1/1     Running   0          4m20s
kube-system   pod/cilium-9fdbh                      1/1     Running   0          4m20s
kube-system   pod/cilium-operator-f45f4975f-f9q7p   1/1     Running   0          4m20s
kube-system   pod/cilium-operator-f45f4975f-gw5z6   1/1     Running   0          4m20s
kube-system   pod/coredns-78d4595769-gl8nx          1/1     Running   0          162m
kube-system   pod/hubble-relay-84849f9dd5-59zhs     1/1     Running   0          4m20s
kube-system   pod/hubble-ui-79b7f9f4b-ccdrh         2/2     Running   0          4m20sNAMESPACE     NAME                     TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                  AGE
default       service/kubernetes       ClusterIP   10.66.0.1      <none>        443/TCP                  136d
kube-system   service/cilium-agent     ClusterIP   None           <none>        9964/TCP                 4m20s
kube-system   service/hubble-metrics   ClusterIP   None           <none>        9965/TCP                 4m20s
kube-system   service/hubble-peer      ClusterIP   10.66.180.91   <none>        443/TCP                  4m20s
kube-system   service/hubble-relay     ClusterIP   10.66.79.186   <none>        80/TCP                   4m20s
kube-system   service/hubble-ui        ClusterIP   10.66.91.101   <none>        80/TCP                   4m20s
kube-system   service/kube-dns         ClusterIP   10.66.0.2      <none>        53/UDP,53/TCP,9153/TCP   135dNAMESPACE     NAME                    DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR            AGE
kube-system   daemonset.apps/cilium   2         2         2       2            2           kubernetes.io/os=linux   4m20sNAMESPACE     NAME                              READY   UP-TO-DATE   AVAILABLE   AGE
kube-system   deployment.apps/cilium-operator   2/2     2            2           4m20s
kube-system   deployment.apps/coredns           1/1     1            1           135d
kube-system   deployment.apps/hubble-relay      1/1     1            1           4m20s
kube-system   deployment.apps/hubble-ui         1/1     1            1           4m20sNAMESPACE     NAME                                        DESIRED   CURRENT   READY   AGE
kube-system   replicaset.apps/cilium-operator-f45f4975f   2         2         2       4m20s
kube-system   replicaset.apps/coredns-78d4595769          1         1         1       135d
kube-system   replicaset.apps/hubble-relay-84849f9dd5     1         1         1       4m20s
kube-system   replicaset.apps/hubble-ui-79b7f9f4b         1         1         1       4m20s

2.3 验证DNS解析是否正常

# dig -t a www.sohu.com @10.66.0.2; <<>> DiG 9.16.23 <<>> -t a www.sohu.com @10.66.0.2
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64003
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1408
;; QUESTION SECTION:
;www.sohu.com.                  IN      A;; ANSWER SECTION:
www.sohu.com.           20      IN      CNAME   www.sohu.com.dsa.dnsv1.com.
www.sohu.com.dsa.dnsv1.com. 20  IN      CNAME   best.sched.d0-dk.tdnsdp1.cn.
best.sched.d0-dk.tdnsdp1.cn. 20 IN      A       123.125.46.250;; Query time: 5 msec
;; SERVER: 10.66.0.2#53(10.66.0.2)
;; WHEN: Wed Jul 03 16:14:47 CST 2024
;; MSG SIZE  rcvd: 138

 

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

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

相关文章

聊一聊领域驱动与贫血模型

写在前面 前段时间跟领导讨论技术债概念时不可避免地提到了代码的质量,而影响代码质量的因素向来都不是单一的,诸如项目因素、管理因素、技术选型、人员素质等等,因为是技术债务,自然就从技术角度来分析,单纯从技术角度来看代码质量,其实又细分很多原因,如代码设计、代码…

《智能计算系统》第五章 编程框架原理(上)课程笔记

《智能计算系统》第五章 编程框架原理(上)课程视频链接:https://www.bilibili.com/video/BV1Ei421i7Rg 本文源自于B站国科大计算所 智能计算系统课程官方账号 所公开上传的视频,在原有视频之上,提取了关键帧、将音频转成了文字并进行了校正,以便学习使用。在此,也感谢国…

点云分割网络---Point Transformer V2

PDF: 《Point Transformer V2: Grouped Vector Attention and Partition-based Pooling》 CODE: https://github.com/Gofinge/PointTransformerV2 一、大体内容 前面一篇文章介绍了Point Transformer,这一篇在其基础上进行改进,提出了强大且高效的Point Transformer V2模型,…

【坚果识别】果实识别+图像识别系统+Python+计算机课设+人工智能课设+卷积算法

一、介绍 坚果识别系统,使用Python语言进行开发,通过TensorFlow搭建卷积神经网络算法模型,对10种坚果果实(杏仁, 巴西坚果, 腰果, 椰子, 榛子, 夏威夷果, 山核桃, 松子, 开心果, 核桃)等图片数据集进行训练,得到一个识别精度较高的模型文件,让后使用Django搭建Web网页端…

MRCTF 2022 EzJava

MRCTF 2022 EzJava 题目分析 下载附件得到一个 jar 包和一个 waf 配置文件。如果只是为了本地搭建环境,直接启动 jar 包就行了,但是如果需要进行远程调试就需要进行一些配置(这个网上教程很多),这个调试也要看具体需求,能直接打通的话就不需要调试。 但是不管怎么说,第一…

逻辑回归求解二分类问题以及SPSS的实现

分类问题就是给出物质的属性,判断其属于什么成分,本文将讲述逻辑回归求解二分类问题 本文着重于模型的实现,对于推导只是概括性的叙述 目录一、问题提出二、逻辑回归函数logistic1.线性线性概率模型2.sigmod函数3.求解方法————极大似然估计4.分类原则三、SPSS实现———…

线上的一次fullgc排查过程

线上服务的GC问题,是Java程序非常典型的一类问题,非常考验工程师排查问题的能力。同时,几乎是面试必考题,但是能真正答好此题的人并不多,要么原理没吃透,要么缺乏实战经验。过去半年时间里,我们的广告系统出现了多次和GC相关的线上问题,有Full GC过于频繁的,有Young G…

基于GWO灰狼优化的LDPC码NMS译码算法最优归一化参数计算和误码率matlab仿真

1.算法仿真效果 matlab2022a仿真结果如下(完整代码运行后无水印):2.算法涉及理论知识概要LDPC码是一种线性错误修正码,以其接近香农极限的优良性能而被广泛应用于现代通信系统中。NMS译码是一种基于最小平方误差准则的软判决译码方法,其目标是找到一个最可能的码字,使得接…

k8s-核心组件

核心组件组成 Kubernetes 主要由以下几个核心组件组成: - etcd :保存整个集群的状态 - API Server:提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制 - Controller Manager:负责维护集群的状态,如故障检测、自动扩展、滚动更新等 - Scheduler:…

学习笔记485—Excel技巧:一键将文本数字转换为数值

Excel技巧:一键将文本数字转换为数值在使用Excel进行数据处理时,经常会遇到数据格式不匹配的问题。特别是当从外部导入数据或手动输入数据时,数字可能会被误识别为文本格式,这在进行数据计算和分析时会带来诸多不便。幸运的是,Excel提供了一些便捷的方法,可以帮助我们一键…

使用IDEA给项目打jar包

使用IDEA给项目打jar包参考地址:https://www.cnblogs.com/blog5277/p/5920560.html 感谢作者一、准备一个Java项目并先看看效果 ​ 只想打包,就跳过这一步: 一、准备一个Java项目并先看看效果。 ​ 如果启动jar包遇到报错:无法找到/加载主类就去看看第二步开头。 1、找一…

MCU点灯

MCU点灯 芯片型号:STM32F407ZET6 4个LED灯,网络标号分别为LED0 ,LED1,FSMC D10,FSMC D11。对应的引脚号分别为PF9,PF10,PE12,PE13。原理图//1.定义变量 GPIO_InitTypeDef GPIO_InitStructureF;//F端口 GPIO_InitTypeDef GPIO_InitStructureE;//E端口 int main()//中文注释 …

电子计算机类比赛的“武林秘籍”-电赛光电设计大赛计算机设计大赛嵌入式芯片与系统设计竞赛,你要的都在这里!

本文主要介绍了工科类学生参加比赛的必要性和益处、电子计算机类比赛的基本思路等内容电子计算机类比赛的“武林秘籍”-电赛光电设计大赛计算机设计大赛嵌入式芯片与系统设计竞赛,你要的都在这里! 为什么需要参加电子计算机类比赛 对于实现短期目标而言: 电子计算机类学科竞…

VMware安装CentOS7环境

准备 CentOS7的iso镜像 下载链接:https://mirrors.aliyun.com/centos/7/isos/x86_64/配置步骤 步骤一——创建虚拟机 1、点击创建新的虚拟机2、选择典型3、选择镜像文件4、填写对应信息5、选择虚拟机存储的位置6、存储为单个文件7、创建步骤二——配置centos7 1、打开虚拟机后…

Mybatis执行器

mybatis执行sql语句的操作是由执行器(Executor)完成的,mybatis中一共提供了3种Executor:类型 名称 功能REUSE 重用执行器 缓存PreparedStatement,下一次执行相同的sql可重用BATCH 批量执行器 将修改操作记录在本地,等待程序触发或有下一次查询时才批量执行修改操作SIMPLE…

本地安装seata

1. 下载,解压steata安装包 2. 修改配置里面的端口号 只要是localhost或者不是自己的端口号都更改成自己的端口号3. 修改配置nacos的文件执行 4、数据库中添加对应的表 数据库中的表名称尽量位seata_server,避免后面去修改 5、线上nacos配置 在public 下面进行配置,修改自己对…

关于自定义unordered_set\unordered_map中Hash和KeyEqual:函数对象和lambda表达式简单应用

以unordered_set为例,首先在cppreference中查看其模板定义:可以看到Hash类默认是std::hash<Key,KeyEqual类似,本文将Hash以函数对象写出,将KeyEqual以lambda写出。 class hashvec{public:size_t operator()(const vector<int> & vec) const {return hash<…

Python预测体重变化:决策树、tf神经网络、随机森林、梯度提升树、线性回归可视化分析吸烟与健康调查数据

全文链接:https://tecdat.cn/?p=36648 原文出处:拓端数据部落公众号 在当今的数据驱动时代,机器学习算法已成为解析复杂数据集、揭示隐藏模式及预测未来趋势的重要工具。特别是在医疗健康领域,这些算法的应用极大地提升了我们对疾病预防、诊断及治疗方案的理解与制定能力。…

Nuxt3 的生命周期和钩子函数(九)

摘要:本文介绍了Nuxt3中与Vite相关的五个生命周期钩子,包括vite:extend、vite:extendConfig、vite:configResolved、vite:serverCreated和vite:compiled,展示了如何在每个钩子中扩展Vite配置、读取配置、添加中间件和处理编译事件。每个钩子都有详细的描述和示例代码,帮助开…

地理信息科学:生态保护的智慧经纬

在地球这颗蓝色星球上,每一片森林的呼吸、每一条河流的流淌,都是生命交响曲中不可或缺的音符。而地理信息科学(GIS),正是我们手中解读自然密码、护航生态平衡的精密仪器。今天,让我们深入探讨GIS如何在生物多样性保护和生态系统管理中发挥其不可替代的作用。 🌱 GIS——…