当前位置: 首页 > news >正文

k8s网络问题以及容器跨宿主机通信原理

【0】资源配置文件

[root@mcwk8s03 mcwtest]# ls
mcwdeploy.yaml
[root@mcwk8s03 mcwtest]# cat mcwdeploy.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: mcwpythonname: mcwtest-deploy
spec:replicas: 1selector:matchLabels:app: mcwpythontemplate:metadata:labels:app: mcwpythonspec:containers:- command:- sh- -c- echo 123 >>/mcw.txt && cd / && rm -rf /etc/yum.repos.d/* && curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo  && yum install -y python2  && python2 -m SimpleHTTPServer 20000image: centosimagePullPolicy: IfNotPresentname: mcwtestdnsPolicy: "None"dnsConfig:nameservers:- 8.8.8.8- 8.8.4.4searches:#- namespace.svc.cluster.local- my.dns.search.suffixoptions:- name: ndotsvalue: "5"
---
apiVersion: v1
kind: Service
metadata:name: mcwtest-svc
spec:ports:- name: mcwportport: 2024protocol: TCPtargetPort: 20000selector:app: mcwpythontype: NodePort
[root@mcwk8s03 mcwtest]#

[1]查看服务部分通,部分不通

[root@mcwk8s03 mcwtest]# kubectl get svc 
NAME          TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)          AGE
kubernetes    ClusterIP   10.2.0.1     <none>        443/TCP          583d
mcwtest-svc   NodePort    10.2.0.155   <none>        2024:41527/TCP   133m
nginx         ClusterIP   None         <none>        80/TCP           413d
[root@mcwk8s03 mcwtest]# curl -I 10.2.0.155
curl: (7) Failed connect to 10.2.0.155:80; Connection timed out
[root@mcwk8s03 mcwtest]# curl -I 10.0.0.33:41527
curl: (7) Failed connect to 10.0.0.33:41527; Connection refused
[root@mcwk8s03 mcwtest]# curl -I 10.0.0.36:41527
curl: (7) Failed connect to 10.0.0.36:41527; Connection timed out
[root@mcwk8s03 mcwtest]# curl -I 10.0.0.35:41527
HTTP/1.0 200 OK
Server: SimpleHTTP/0.6 Python/2.7.18
Date: Tue, 04 Jun 2024 16:38:18 GMT
Content-type: text/html; charset=ANSI_X3.4-1968
Content-Length: 816[root@mcwk8s03 mcwtest]#

【2】查看,能通的IP,是因为在容器所在的宿主机,因此需要排查容器跨宿主机是否可以通信

[root@mcwk8s03 mcwtest]# kubectl get pod -o wide|grep mcwtest
mcwtest-deploy-6465665557-g9zjd     1/1     Running            0          37m    172.17.98.13   mcwk8s05   <none>           <none>
[root@mcwk8s03 mcwtest]# kubectl get nodes -o wide
NAME       STATUS   ROLES    AGE    VERSION    INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION          CONTAINER-RUNTIME
mcwk8s05   Ready    <none>   580d   v1.15.12   10.0.0.35     <none>        CentOS Linux 7 (Core)   3.10.0-693.el7.x86_64   docker://20.10.21
mcwk8s06   Ready    <none>   580d   v1.15.12   10.0.0.36     <none>        CentOS Linux 7 (Core)   3.10.0-693.el7.x86_64   docker://20.10.21
[root@mcwk8s03 mcwtest]#

【3】排查容器是否可以跨宿主机IP,首先这个容器是在这个宿主机上,应该优先排查这个宿主机是否能到其他机器的docker0 IP

[root@mcwk8s03 mcwtest]# ifconfig docker
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500inet 172.17.83.1  netmask 255.255.255.0  broadcast 172.17.83.255ether 02:42:e9:a4:51:4f  txqueuelen 0  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@mcwk8s03 mcwtest]# [root@mcwk8s05 /]# ifconfig docker
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450inet 172.17.98.1  netmask 255.255.255.0  broadcast 172.17.98.255inet6 fe80::42:18ff:fee1:e8fc  prefixlen 64  scopeid 0x20<link>ether 02:42:18:e1:e8:fc  txqueuelen 0  (Ethernet)RX packets 548174  bytes 215033771 (205.0 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 632239  bytes 885330301 (844.3 MiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@mcwk8s05 /]# [root@mcwk8s06 ~]# ifconfig docker
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450inet 172.17.9.1  netmask 255.255.255.0  broadcast 172.17.9.255inet6 fe80::42:f0ff:fefa:133e  prefixlen 64  scopeid 0x20<link>ether 02:42:f0:fa:13:3e  txqueuelen 0  (Ethernet)RX packets 229  bytes 31724 (30.9 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 212  bytes 53292 (52.0 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@mcwk8s06 ~]# 可以看到,05宿主机是不通其他机器的docker0的,03 06是互通的
[root@mcwk8s05 /]# ping -c 1 172.17.83.1
PING 172.17.83.1 (172.17.83.1) 56(84) bytes of data.
^C
--- 172.17.83.1 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms[root@mcwk8s05 /]# ping -c 1 172.17.9.1
PING 172.17.9.1 (172.17.9.1) 56(84) bytes of data.
^C
--- 172.17.9.1 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms[root@mcwk8s05 /]# [root@mcwk8s06 ~]# ping -c 1 172.17.83.1
PING 172.17.83.1 (172.17.83.1) 56(84) bytes of data.
64 bytes from 172.17.83.1: icmp_seq=1 ttl=64 time=0.246 ms--- 172.17.83.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.246/0.246/0.246/0.000 ms
[root@mcwk8s06 ~]#

【4】可以看到,etcd里面,没有005宿主机的docker网段的

[root@mcwk8s03 mcwtest]# etcdctl ls /coreos.com/network/subnets
/coreos.com/network/subnets/172.17.9.0-24
/coreos.com/network/subnets/172.17.83.0-24
[root@mcwk8s03 mcwtest]# etcdctl get /coreos.com/network/subnets/172.17.9.0-24
{"PublicIP":"10.0.0.36","BackendType":"vxlan","BackendData":{"VtepMAC":"2a:2c:21:3a:58:21"}}
[root@mcwk8s03 mcwtest]# etcdctl get /coreos.com/network/subnets/172.17.83.0-24
{"PublicIP":"10.0.0.33","BackendType":"vxlan","BackendData":{"VtepMAC":"b2:83:33:7b:fd:37"}}
[root@mcwk8s03 mcwtest]#

【5】重启005的flannel服务,如果不重启docker0,那么网络就会有点问题,docker0不会被分配新的网段IP

[root@mcwk8s05 ~]# systemctl restart flanneld.service 
[root@mcwk8s05 ~]# ifconfig flannel.1
flannel.1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450inet 172.17.89.0  netmask 255.255.255.255  broadcast 0.0.0.0inet6 fe80::3470:76ff:feea:39b8  prefixlen 64  scopeid 0x20<link>ether 36:70:76:ea:39:b8  txqueuelen 0  (Ethernet)RX packets 1  bytes 40 (40.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 9  bytes 540 (540.0 B)TX errors 0  dropped 8 overruns 0  carrier 0  collisions 0[root@mcwk8s05 ~]# ifconfig docker
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450inet 172.17.98.1  netmask 255.255.255.0  broadcast 172.17.98.255inet6 fe80::42:18ff:fee1:e8fc  prefixlen 64  scopeid 0x20<link>ether 02:42:18:e1:e8:fc  txqueuelen 0  (Ethernet)RX packets 551507  bytes 216568663 (206.5 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 635860  bytes 891305864 (850.0 MiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@mcwk8s05 ~]# systemctl restart docker
[root@mcwk8s05 ~]# ifconfig docker
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450inet 172.17.89.1  netmask 255.255.255.0  broadcast 172.17.89.255inet6 fe80::42:18ff:fee1:e8fc  prefixlen 64  scopeid 0x20<link>ether 02:42:18:e1:e8:fc  txqueuelen 0  (Ethernet)RX packets 552135  bytes 216658479 (206.6 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 636771  bytes 892057926 (850.7 MiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@mcwk8s05 ~]#

【6】再次查看,etcd已经有了05节点的这个网段了

[root@mcwk8s03 mcwtest]# etcdctl ls /coreos.com/network/subnets
/coreos.com/network/subnets/172.17.83.0-24
/coreos.com/network/subnets/172.17.9.0-24
/coreos.com/network/subnets/172.17.89.0-24
[root@mcwk8s03 mcwtest]# etcdctl get /coreos.com/network/subnets/172.17.89.0-24
{"PublicIP":"10.0.0.35","BackendType":"vxlan","BackendData":{"VtepMAC":"36:70:76:ea:39:b8"}}
[root@mcwk8s03 mcwtest]#

【7】再次测试,05节点的,可以nodeport访问到了

[root@mcwk8s03 mcwtest]# kubectl get svc
NAME          TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)          AGE
kubernetes    ClusterIP   10.2.0.1     <none>        443/TCP          583d
mcwtest-svc   NodePort    10.2.0.155   <none>        2024:33958/TCP   154m
nginx         ClusterIP   None         <none>        80/TCP           413d
[root@mcwk8s03 mcwtest]# curl -I 10.2.0.155:2024
curl: (7) Failed connect to 10.2.0.155:2024; Connection timed out
[root@mcwk8s03 mcwtest]# curl -I 10.0.0.33:33958
curl: (7) Failed connect to 10.0.0.33:33958; Connection refused
[root@mcwk8s03 mcwtest]# curl -I 10.0.0.35:33958
HTTP/1.0 200 OK
Server: SimpleHTTP/0.6 Python/2.7.18
Date: Tue, 04 Jun 2024 16:59:03 GMT
Content-type: text/html; charset=ANSI_X3.4-1968
Content-Length: 816[root@mcwk8s03 mcwtest]# curl -I 10.0.0.36:33958
HTTP/1.0 200 OK
Server: SimpleHTTP/0.6 Python/2.7.18
Date: Tue, 04 Jun 2024 16:59:12 GMT
Content-type: text/html; charset=ANSI_X3.4-1968
Content-Length: 816[root@mcwk8s03 mcwtest]#

【8】03节点不通,可能是03是master,但是它本身好像不作为node,就是个单纯的master,所以没法当做nodeIP去访问。但是集群IP,无法访问,是怎么回事呢

[root@mcwk8s03 mcwtest]# kubectl get svc
NAME          TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)          AGE
kubernetes    ClusterIP   10.2.0.1     <none>        443/TCP          583d
mcwtest-svc   NodePort    10.2.0.155   <none>        2024:33958/TCP   157m
nginx         ClusterIP   None         <none>        80/TCP           413d
[root@mcwk8s03 mcwtest]# kubectl get nodes
NAME       STATUS   ROLES    AGE    VERSION
mcwk8s05   Ready    <none>   580d   v1.15.12
mcwk8s06   Ready    <none>   580d   v1.15.12
[root@mcwk8s03 mcwtest]#

【9】路由方面,重启flannel,etcd里面会重新写入新的网段,并且其他节点也会有这个新的网段的路由,需要重启该宿主机的docker,给容器重新分配新的IP用吧,应该。

之前03 master只有一个flanel的路由,

[root@mcwk8s03 mcwtest]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.254      0.0.0.0         UG    100    0        0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U     100    0        0 eth0
172.17.9.0      172.17.9.0      255.255.255.0   UG    0      0        0 flannel.1
172.17.83.0     0.0.0.0         255.255.255.0   U     0      0        0 docker0
[root@mcwk8s03 mcwtest]#05 node重启之后,03上多出来一个05 node的flannel路由,
[root@mcwk8s03 mcwtest]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.254      0.0.0.0         UG    100    0        0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U     100    0        0 eth0
172.17.9.0      172.17.9.0      255.255.255.0   UG    0      0        0 flannel.1
172.17.83.0     0.0.0.0         255.255.255.0   U     0      0        0 docker0
172.17.89.0     172.17.89.0     255.255.255.0   UG    0      0        0 flannel.1
[root@mcwk8s03 mcwtest]# 06好的node也是如此
之前:
[root@mcwk8s06 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.254      0.0.0.0         UG    100    0        0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U     100    0        0 eth0
172.17.9.0      0.0.0.0         255.255.255.0   U     0      0        0 docker0
172.17.83.0     172.17.83.0     255.255.255.0   UG    0      0        0 flannel.1
[root@mcwk8s06 ~]# 
操作之后,多了个路由
[root@mcwk8s06 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.254      0.0.0.0         UG    100    0        0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U     100    0        0 eth0
172.17.9.0      0.0.0.0         255.255.255.0   U     0      0        0 docker0
172.17.83.0     172.17.83.0     255.255.255.0   UG    0      0        0 flannel.1
172.17.89.0     172.17.89.0     255.255.255.0   UG    0      0        0 flannel.1
[root@mcwk8s06 ~]# 05node之前是有两个路由,但是都是错误的
[root@mcwk8s05 /]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.254      0.0.0.0         UG    100    0        0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U     100    0        0 eth0
172.17.59.0     172.17.59.0     255.255.255.0   UG    0      0        0 flannel.1
172.17.61.0     172.17.61.0     255.255.255.0   UG    0      0        0 flannel.1
172.17.98.0     0.0.0.0         255.255.255.0   U     0      0        0 docker0
[root@mcwk8s05 /]#05重启之后,也更新了路由为正确的
[root@mcwk8s05 /]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.254      0.0.0.0         UG    100    0        0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U     100    0        0 eth0
172.17.9.0      172.17.9.0      255.255.255.0   UG    0      0        0 flannel.1
172.17.83.0     172.17.83.0     255.255.255.0   UG    0      0        0 flannel.1
172.17.89.0     0.0.0.0         255.255.255.0   U     0      0        0 docker0
[root@mcwk8s05 /]#

【10】然后看看集群IP为啥不通,这直接原因应该是没有ipvs规则。

[root@mcwk8s03 mcwtest]# kubectl get svc
NAME          TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)          AGE
kubernetes    ClusterIP   10.2.0.1     <none>        443/TCP          583d
mcwtest-svc   NodePort    10.2.0.155   <none>        2024:33958/TCP   3h3m
nginx         ClusterIP   None         <none>        80/TCP           413d
[root@mcwk8s03 mcwtest]# curl -I 10.2.0.155:2024 
curl: (7) Failed connect to 10.2.0.155:2024; Connection timed out
[root@mcwk8s03 mcwtest]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
[root@mcwk8s03 mcwtest]# systemctl status kube-proxy
Unit kube-proxy.service could not be found.
[root@mcwk8s03 mcwtest]# 其它节点都是有ipvs规则的,有时间确认下,ipvsadm规则是哪个服务创建的,应该是kube-proxy创建的吧,我们的03 master是没有部署kube-proxy,这样的话,没有ipvs规则并且无法在master上访问集群IP就说的通了。如过是这样的话,也就是容器集群IP之间的通信,跟ipvs有关,跟apiserver是否挂了没有直接关系,不影响,有时间验证
[root@mcwk8s05 /]# ipvsadm -Ln|grep -C 1 10.2.0.155-> 172.17.89.4:9090             Masq    1      0          0         
TCP  10.2.0.155:2024 rr-> 172.17.89.10:20000           Masq    1      0          0         
[root@mcwk8s05 /]# 
[root@mcwk8s05 /]# curl -I 10.2.0.155:2024
HTTP/1.0 200 OK
Server: SimpleHTTP/0.6 Python/2.7.18
Date: Tue, 04 Jun 2024 17:34:45 GMT
Content-type: text/html; charset=ANSI_X3.4-1968
Content-Length: 816[root@mcwk8s05 /]#

【综上】

单节点的容器网络用nodeIP:nodeport等之类的用不了了,可以优先检查下docker0 网关是不是不通了;如果flannel等网络服务重启之后,即使是pod方式部署的网络插件,也要看下重启docker服务,让容器分配新的网段。比如某次flannel oom总是重启,导致kube001网络故障;每个机器,好像都有其他节点的flannel.1网卡网段的路由,使用当前机器的flannel.1的网卡接口;并且有当前节点docker0网段的路由,是走的 0.0.0.0网关,走默认路由由上面可以知道,svc里面有个是clusterIP用的端口,clusterIP是用ipvs规则管理,进行数据转发的;nodeip clusterIP的ipvs规则进行转发,因为转发到后端容器IP,当前宿主机有所有node的flannel网段的路由,所有flannel网关以及docker0都正常且对应网段的话,那么就是用这两个接口实现容器跨宿主机通信的。而至于访问nodeip:nodeport以及clusterIP:port是怎么知道把流量给到正确的pod的,这里是通过ipvs规则来实现寻找到后端pod的,转发到pod对应的IP和端口的时候,又根据当前机器有所有网络插件flannel,也就是每个宿主机单独网段的路由条目,让它们知道自己要去走flannel.1接口。而etcd保存有哪个网段是哪个宿主机,有对应宿主机IP,找到宿主机IP了,那么在该机器上转发到的pod机器,在那个宿主机上就是能用该IP,使用docker0进行通信的,因为单个宿主机上的容器,都是通过docker0进行通信,并且互通的。只有跨宿主机通信容器的时候,才会根据路由,找到flannel.1接口,然后在etcd找到是那个宿主机上的容器,然后找到这个容器,完成通信。flannel网络插件这样,其它网络插件原理类似;ipvs网络代理模式是这个作用,iptables网络代理模式作用类似。

文章转载自:马昌伟

原文链接:https://www.cnblogs.com/machangwei-8/p/18236417

体验地址:引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构

相关文章:

k8s网络问题以及容器跨宿主机通信原理

【0】资源配置文件 [rootmcwk8s03 mcwtest]# ls mcwdeploy.yaml [rootmcwk8s03 mcwtest]# cat mcwdeploy.yaml apiVersion: apps/v1 kind: Deployment metadata:labels:app: mcwpythonname: mcwtest-deploy spec:replicas: 1selector:matchLabels:app: mcwpythontemplate:met…...

BM25算法以及变种算法简介

深入理解TF-IDF、BM25算法与BM25变种&#xff1a;揭秘信息检索的核心原理与应用 原文链接&#xff1a; https://xie.infoq.cn/article/8b7232877d0d4327a6943e8ac BM25算法以及变种算法简介 Okapi BM25&#xff0c;一般简称 BM25 算法&#xff0c;在 20 世纪 70 年代到 80 年代…...

D455相机RGB与深度图像对齐,缓解相机无效区域的问题

前言 上一次我们介绍了深度相机D455的使用&#xff1a;intel深度相机D455的使用-CSDN博客&#xff0c;我们也看到了相机检测到的无效区域。 在使用Intel深度相机D455时&#xff0c;我们经常会遇到深度图中的无效区域。这些无效区域可能由于黑色物体、光滑表面、透明物体以及视…...

2024 cicsn ezbuf

文章目录 参考protobuf逆向学习复原结构思路exp 参考 https://www.y4ng.cn/posts/pwn/protobuf/#ciscn-2024-ezbuf protobuf 当时压根不知道用了protobuf这个玩意&#xff0c;提取工具也没提取出来&#xff0c;还是做题做太少了&#xff0c;很多关键性的结构都没看出来是pro…...

地面站Mission planner

官方教程; Mission Planner地面站介绍 | Autopilot (gitbook.io) Mission Planner 功能/屏幕 — Mission Planner 文档 (ardupilot.org) 安卓或者windows软件下载地址&#xff1a; 地面站连接及使用 plane (cuav.net) 在完全装机后再进行各干器件的校准&#xff0c;没有组…...

常见的api: BigInteger

一.获取一个大的随机整数 1.代码: BigInteger bd1 new BigInteger(4, new Random());System.out.println(bd1); 2.打印的结果:2 3.注释获取的是0-16之间的随机整数 二.获取一个指定的大的数 1.代码&#xff1a; BigInteger bd2 new BigInteger("100");System.o…...

Overall timing accuracy 和Edge placement accuracy 理解

在电子设计自动化(EDA)、集成电路(IC)制造和高速数字电路设计领域,"Overall Timing Accuracy" 和 "Edge Placement Accuracy" 是两个关键的性能指标,它们对于确保电路的功能正确性和性能至关重要。 当涉及到“Overall timing accuracy”(总体时序精度)…...

2024 vite 静态 scp2 自动化部署

1、导入库 npm install scp2 // 自动化部署 npm install chalk // 控制台输出的语句 npm install ora2、核心代码 创建文件夹放在主目录下的 deploy/index.js 复制粘贴以下代码&#xff1a; import client from scp2; import chalk from chalk; import ora from ora;const s…...

【数据结构】AVLTree实现详解

目录 一.什么是AVLTree 二.AVLTree的实现 1.树结点的定义 2.类的定义 3.插入结点 ①按二叉搜索树规则插入结点 ②更新平衡因子 更新平衡因子情况分析 ③判断是否要旋转 左单旋 右单旋 左右单旋 右左双旋 4.删除、查找和修改函数 查找结点 三.测试 1.判断是否是搜索树 …...

深度学习——TensorBoard的使用

官方文档torch.utils.tensorboard — PyTorch 2.3 documentation TensorBoard简介 TensorBoard是一个可视化工具&#xff0c;它可以用来展示网络图、张量的指标变化、张量的分布情况等。特别是在训练网络的时候&#xff0c;我们可以设置不同的参数&#xff08;比如&#xff1…...

【设计模式】观察者模式(行为型)⭐⭐⭐

文章目录 1.概念1.1 什么是观察者模式1.2 优点与缺点 2.实现方式3. Java 哪些地方用到了观察者模式4. Spring 哪些地方用到了观察者模式 1.概念 1.1 什么是观察者模式 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许对象在状态改…...

轻松搞定阿里云域名DNS解析

本文将会讲解如何设置阿里云域名DNS解析。在进行解析设置之前&#xff0c;你需要提前准备好需要设置的云服务器IP地址、域名以及CNAME记录。 如果你还没有云服务器和域名&#xff0c;可以参考下面的方法注册一个。 申请域名&#xff1a;《Namesilo域名注册》注册云服务器&…...

GAT1399协议分析(10)--单图像删除

一、官方接口 由于批量删除的接口&#xff0c;图像只能单独删除。 二、wireshark实例 这个接口比较简单&#xff0c;调用request delete即可 文本化&#xff1a; DELETE /VIID/Images/34078100001190001002012024060513561300065 HTTP/1.1 Host: 10.0.201.56:31400 User-Age…...

Hudi CLI 安装配置总结

前言 上篇文章 总结了Spark SQL Rollback, Hudi CLI 也能实现 Rollback,本文总结下 Hudi CLI 安装配置以及遇到的问题。 官方文档 https://hudi.apache.org/cn/docs/cli/ 版本 Hudi 0.13.0(发现有bug)、(然后升级)0.14.1Spark 3.2.3打包 mvn clean package -DskipTes…...

实验八、地址解析协议《计算机网络》

水逆退散&#xff0c;学业进步&#xff0c;祝我们都好&#xff0c;不止在夏天。 目录 一、实验目的 二、实验内容 &#xff08;1&#xff09;预备知识 &#xff08;2&#xff09;实验步骤 三、实验小结 一、实验目的 完成本练习之后&#xff0c;您应该能够确定给定 IP 地…...

Linux系统管理磁盘管理003

操作系统&#xff1a; CentOS Stream9 测试过程&#xff1a; 模拟磁盘被沾满&#xff0c; 创建文件 测试脚本 for i in seq 10do# echo $idd if/dev/zero of./$i-$RANDOM.txt bs1M count1024 Done[rootlocalhost ~]# vim 2.txt [rootlocalhost ~]# sh 2.txt 记录了10240 的…...

MLC工具是否适用AMD和ARM场景?如何测试内存性能?

MLC&#xff08;Memory Latency Checker&#xff09;主要是由Intel开发的工具&#xff0c;主要用于Intel平台上的内存性能测试&#xff0c;尤其是针对Intel处理器的内存延迟和带宽。尽管MLC主要针对Intel处理器设计&#xff0c;理论上它可以在任何支持Intel兼容指令集的系统上运…...

NodeJs实现脚本:将xlxs文件输出到json文件中

文章目录 前期工作和依赖笔记功能代码输出 最近有一个功能&#xff0c;将json文件里的内容抽取到一个xlxs中&#xff0c;然后维护xlxs文件。当要更新json文件时&#xff0c;就更新xlxs的内容并把它传回json中。这个脚本主要使用NodeJS写。 以下是完成此功能时做的一些笔记。 …...

【启程Golang之旅】网络编程与反射

欢迎来到Golang的世界&#xff01;在当今快节奏的软件开发领域&#xff0c;选择一种高效、简洁的编程语言至关重要。而在这方面&#xff0c;Golang&#xff08;又称Go&#xff09;无疑是一个备受瞩目的选择。在本文中&#xff0c;带领您探索Golang的世界&#xff0c;一步步地了…...

nginx location正则表达式+案例解析

1、nginx常用的正则表达式 ^ &#xff1a;匹配输入字符串的起始位置$ &#xff1a;匹配输入字符串的结束位置 *&#xff1a;匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll” &#xff1a;匹配前面的字符一次或多次。如“ol”能匹配“ol”及“oll”、“olll”…...

【YOLO系列】YOLOv10论文超详细解读(翻译 +学习笔记)

前言 研究AI的同学们面对的一个普遍痛点是&#xff0c;刚开始深入研究一项新技术&#xff0c;没等明白透彻&#xff0c;就又迎来了新的更新版本——就像我还在忙着逐行分析2月份发布的YOLOv9代码&#xff0c;5月底清华的大佬们就推出了全新的v10。。。 在繁忙之余&#xff0…...

植物大战僵尸杂交版2024潜艇伟伟迷

在广受欢迎的游戏《植物大战僵尸》的基础上&#xff0c;我最近设计了一款创新的杂交版游戏&#xff0c;简直是太赞了&#xff01;这款游戏结合了原有游戏的塔防机制&#xff0c;同时引入新的元素、角色和挑战&#xff0c;为玩家提供了全新的游戏体验。 植物大战僵尸杂交版最新绿…...

白话解读网络爬虫

网络爬虫&#xff08;Web Crawler&#xff09;&#xff0c;也称为网络蜘蛛、网络机器人或网络蠕虫&#xff0c;是一种自动化程序或脚本&#xff0c;被用来浏览互联网并收集信息。网络爬虫的主要功能是在互联网上自动地浏览网页、抓取内容并将其存储在本地或远程服务器上供后续处…...

支持向量机(SVM): 从理论到实践的指南(1)

支持向量机&#xff08;SVM&#xff09;被誉为数据科学领域的重量级算法&#xff0c;是机器学习中不可或缺的工具之一。SVM以其优秀的泛化能力和对高维数据的管理而备受推崇。本文旨在梳理SVM的核心概念以及其在实际场景中的应用。 SVM的核心理念 SVM专注于为二分类问题找到最…...

万字长文|OpenAI模型规范(全文)

本文是继《OpenAI模型规范概览》之后对OpenAI Model Spec的详细描述&#xff0c;希望能对各位从事大模型及RLHF研究的朋友有帮助。万字长文&#xff0c;建议收藏后阅读。 一、概述 在AI的世界里&#xff0c;确保技术的行为符合我们的期望至关重要。OpenAI最近发布了一份名为Mo…...

微服务架构-正向治理与治理效果

目录 一、正向治理 1.1 概述 1.2 效率治理 1.2.1 概述 1.2.2 基于流量录制和回放的测试 1.2.3 基于仿真环境的测试 1.3 稳定性治理 1.3.1 概述 1.3.2 稳定性治理模型 1.3.3 基于容器化的稳定性治理 1.3.3.1 概述 1.3.3.2 测试 1.3.3.3 部署 1.3.3.3.1 概述 1.3.3…...

normalizing flows vs 直方图规定化

normalizing flows名字的由来 The base density P ( z ) P(z) P(z) is usually defined as a multivariate standard normal (i.e., with mean zero and identity covariance). Hence, the effect of each subsequent inverse layer is to gradually move or “flow” the da…...

vite打包优化常用的技巧及思路

面试题&#xff1a;vitevue项目如何进行优化&#xff1f; 什么情况下会去做打包优化&#xff1f;一种是在搭建项目的时候就根据自己的经验把vite相关配置给处理好&#xff0c;另外一种是开发的过程中发现打包出来的静态资源越来越大&#xff0c;导致用户访问的时候资源加载慢&a…...

k8s学习--kubernetes服务自动伸缩之水平收缩(pod副本收缩)HPA详细解释与案例应用

文章目录 前言HPA简介简单理解详细解释HPA 的工作原理监控系统负载模式HPA 的优势使用 HPA 的注意事项应用类型 应用环境1.metircs-server部署2.HPA演示示例&#xff08;1&#xff09;部署一个服务&#xff08;2&#xff09;创建HPA对象&#xff08;3&#xff09;执行压测 前言…...

台式机ubuntu22.04安装nvidia驱动

总结一个极简易的安装方法 正常安装ubuntu 22.04正常更新软件 sudo apt update sudo apt upgrade -y参考ubuntu官方网站的说明https://ubuntu.com/server/docs/nvidia-drivers-installation#/ # 首先检查系统支持驱动的版本号 sudo ubuntu-drivers list我显示的内容如下&…...

永安网站建设/百度移动点击排名软件

python 文件太多打不开文件夹&#xff0c;取样少量的文件&#xff0c; 建立同样的文件目录结构 python 文件太多打不开文件夹&#xff0c;取样少量的文件 - 无左无右 - 博客园 import os import shutil import randomroot_file "/media/algo/data_1/everyday/20230203-有…...

如何评估一个网站/今天热搜前十名

目录&#xff08;8&#xff09;Aggregate详解&#xff08;9&#xff09;Join详解&#xff08;10&#xff09;Union详解&#xff08;8&#xff09;Aggregate详解 通过Aggregate Function将一组元素值合并成单个值&#xff0c;可以在整个DataSet数据集上使用。 Java代码实现&…...

广东网页制作网站/论坛如何做seo

裴波那切数在百度百科的定义是&#xff1a; 斐波那契数&#xff0c;亦称之为斐波那契数列&#xff08;意大利语&#xff1a; Successione di Fibonacci)&#xff0c;又称黄金分割数列、费波那西数列、费波拿契数、费氏数列&#xff0c;指的是这样一个数列&#xff1a;0、1、1、…...

临朐网站建设定制/搜索数据

第五十三天打卡 1143. 最长公共子序列 提示 中等 1.3K company 字节跳动 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 &#xff0c;返回 0 。 一个字符串的 子序列 是指这样一个新的字符串&#xff1a;它是…...

网站建设的发票怎么做会计分录/百度标记号码认证平台

用文本方式将数据装入数据库表中(例如D:/mysql.txt)mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE MYTABLE;做個補充&#xff1a;里面的mysql.txt文件&#xff0c;內容是以Tab符號分開导入.sql文件命令(例如D:/mysql.sql)mysql>use database;mysql>sour…...

响应式网站的建设/广告联盟下载app

链接: 源代码下载地址 下面展示 代码 爬取上海交通大学软科中国大学排名import requests from bs4 import BeautifulSoupif __name__ "__main__":destinationPath "html信息.txt"allUniv []# headers{User-Agent:Mozilla/5.0}url http://www.shanghai…...