摘要:

network.xml;atc_mdp_offline.xml;atc_qnh_offline.xml;route -n;nmcli;mysqldump;mariadbd;ClusterIP;WorkloadGroup;localhost;nsswitch.conf;NOTFOUND=return;128 系列退出码(128+n);ctr -n=k8s.io;Unix Domain Sockets ;TCP sockets;sandbox;config.toml

Tip:

  • *:SDD上network.xml和mid.xml中服务器主机名称大小写须一致(都改成小写),否则SDD为红色EMG模式;
  • pv不属于任何命名空间,PVC是命名空间对象; 动态创建PV,PVC不能加 labels,否则由于不匹配,Bound失败;
  • secret有命名空间限制;
  • AirNet系统MySQL数据库的IP在/home/cdatc/AirNet/config/atc_global_offline.xml配置;端口程序内置固定3306,没有作为参数;
  • VM加入服务网格,测试不满足集群内外都可用的需求——即不满足使用域名和ClusterIP以及宿主机IP都OK的需求
  • 服务器主备状态的控制与组播通信正常与否有关。
  • SMC监控数据库状态,各节点的mnt进程从/home/cdatc/AirNet/config/atc_global_offline.xml读取配置数据库节点IP,节点的IP一样的话,该节点的mnt检测MySQL状态,并告知SMC。
  • fdp/mdp进程读取配置文件/home/cdatc/AirNet/config/atc_global_offline.xml连接数据库,测试value值不支持域名,只能是数据库所在主机的IP,所以导致数据库主机也不能启用istio加入网格(启用istio后不支持宿主机IP,只能是域名)。
  • SMC监控时不时变灰,应该是监控周期太短导致,但周期时间是写死的,监控数据是500毫秒,扇区数据是50毫秒。


1、测试,将虚拟机FDP1主机名改为fdp-1,value="FDP-1"这里不区分大小写,主要是主机名加字符杠:- ;此外,SMC的network.xml中hostname="fdp-1"也得改,否则监控不到

  • SMC上network.xml可以写域名ip_a="sdfp-1.sdfp.vm-airnet",但是其它服务进程不行,因为监控是别人给他发消息,他不给别人发消息,SMC是观察者,别人无法收到他的数据。
1、/home/cdatc/AirNet/config/network.xml
  <node hostname="fdp-1"  	showname="fdp-1" ......
  <nport nportid="1" ip="192.168.10.30" netname="A" showname="NPORT-A" relatednode="FDP-1"  position="ACC">
2、/home/cdatc/AirNet/config/atc_mdp_offline.xml
  <node param="MDP1HOSTNAME" tip="服务器1主机名" value="FDP-1"/>
3、/home/cdatc/AirNet/config/atc_qnh_offline.xml
  <node param="QNH1HOSTNAME" tip="服务器1主机名" value="FDP-1"/>
  • network.xml中例如fdp-1和fdp-2的ip_a="x.x.x.x"双向IP必须配置通,否则SMC上两个fdp-1和fdp-2都是主态;原因是mnt从network.xml获取对方的IP,建立TCP链接互通主备状态。

2、主用和备用FDP的mnt进程都会判断afp,rfp的状态,两个都down,系统判断逻辑为应急EMG(SMC上显示状态);/home/AirNet/config/gconf/mid/mid.xml,也要修改该文件的主机名hostname="sdfp-1......",主机名称(包括大小写)一致后,SMC上状态显示NORM。

  • 这里区分大小写,否则提示:check local model success,all pro[0][afp,rfp,brfp,bafp] is down。
<!--系统本地模式判断 多个hostname以逗号隔开,程序名能配置多个,ALL程序down了算down,最底层标签之间或关系判判断    -->
  <systemmode>
	<degradeds position="ACC">
		<degraded hostname="fdp-1,fdp2" proname="fdp"/>
		<degraded hostname="fdp-1,fdp2" proname="mdp"/>
		<degraded hostname="msdp-1,msdp-2" proname="snet"/>
	 </degradeds>
	<bypasses position ="ACC">
		<bypass hostname="sdfp-1,sdfp-2" proname="afp,rfp"/>
		<bypass hostname="msdp-1,msdp-2" proname="msdp"/>
		<bypass hostname="msdp-1,msdp-2" proname="adp,rdp"/>
	 </bypasses>
	<emergencys position ="ACC">
		<emergency hostname="sdfp-1,sdfp-2,BSFP1" proname="afp,rfp,brfp,bafp"/>
		<emergency hostname="sdfp-1,sdfp-2,BSDP1" proname="afp,rfp,brdp,badp"/>
		<emergency hostname="sdfp-1,sdfp-2,BSDP1" proname="afp,rfp,bsdp"/>
		<emergency hostname="msdp-1,msdp-2,BSDP1" proname="msdp,bsdp"/>
		<emergency hostname="msdp-1,msdp-2,BSFP1" proname="msdp,brfp,bafp"/>
		<emergency hostname="msdp-1,msdp-2,BSDP1" proname="adp,rdp,brdp,badp"/>
		<emergency hostname="msdp-1,msdp-2,BSFP1" proname="adp,rdp,brfp,bafp"/>
	 </emergencys>
  </systemmode>

AirNet使用笔记12(! AirNet服务器容器化-续)_服务器AirNet使用笔记12(! AirNet服务器容器化-续)_主机名_02

右图是SDD上network.xml和mid.xml主机名称都改成小写后的显示

  • 如上右图显示,是因为SDD目前不支持小写的主机名右图窗口里状态如果更新过来的主机名是小写的,就更新不了,sdd内部用的主机名是大写的;这里sdd上计划切到loc模式了,但是后台是正常的, 实际上计划的状态跟显示的不一样,测试数据是写到后台了,SDD上创建修改计划,FDD上都会更新到。修改代码支持小写主机名后(md5sum sdd:ac567b3f8d37d70825b923b7c4cbc047--> daf60f03020d5a84db7e27a09313b7e2),如下图,状态OK!
  • SDD上network.xml和mid.xml中服务器主机名称大小写须一致(都改成小写),否则SDD为红色EMG模式。

AirNet使用笔记12(! AirNet服务器容器化-续)_主机名_03

  • fdp服务器的mnt日志“check local model success,all pro[0][afp,rfp,brfp,bafp] is down”,mnt是通过组播端口40001获取进程状态的,抓包显示:rfp*.NORMAL
[root@fdp-1 log]# tail -f fdp-1_mnt_20240220.log |grep local
2024-02-20 08:04:26      debug     check local model success,all pro[0][afp,rfp,brfp,bafp] is down
[root@k8s-node02 ~]# tcpdump -i enp4s0f0 port 40001 -n -vv -XX 
15:56:18.749023 IP (tos 0xb8, ttl 31, id 32289, offset 0, flags [DF], proto UDP (17), length 431)
    192.168.31.220.24021 > 225.1.0.1.40001: [udp sum ok] UDP, length 403
        0x0000:  0100 5e01 0001 ac16 2db0 4cd8 0800 45b8  ..^.....-.L...E.
        0x0010:  01af 7e21 4000 1f11 19de c0a8 1fdc e101  ..~!@...........
        0x0020:  0001 5dd5 9c41 019b 411a 704d 9c41 0400  ..]..A..A.pM.A..
        0x0030:  2721 fc98 2a93 2a0c 017b 0000 4875 0000  '!..*.*..{..Hu..
        0x0040:  486d 0000 ff00 0000 0000 0001 7000 3130  Hm..........p.10
        0x0050:  3030 3170 726f 6461 7461 0000 0000 0000  001prodata......
        0x00e0:  0000 0000 0000 0000 0000 0041 4343 0000  ...........ACC..
        0x00f0:  0000 0000 bc7f 4699 7f00 0031 0a4b 0a04  ......F....1.K..
        0x0100:  3130 3030 1206 7364 6670 2d31 1a0d 3137  1000..sdfp-1..17
        0x0110:  322e 3237 2e32 392e 3133 3022 0c31 3932  2.27.29.130".192
        0x0120:  2e31 3638 2e36 2e35 302a 0c31 3932 2e31  .168.6.50*.192.1
        0x0130:  3638 2e37 2e35 303a 0132 4206 4d61 7374  68.7.50:.2B.Mast
        0x0140:  6572 4804 5203 4143 4312 1a08 98ee 0310  erH.R.ACC.......
        0x0150:  0922 036d 6964 2a06 4e4f 524d 414c 3205  .".mid*.NORMAL2.
        0x0160:  322e 302e 3612 1c08 dcee 0310 0518 0122  2.0.6.........."
        0x0170:  0372 6670 2a06 4e4f 524d 414c 3205 312e  .rfp*.NORMAL2.1.
        0x0180:  302e 3312 1c08 e0ee 0310 0518 0222 0361  0.3..........".a
        0x0190:  6670 2a06 4e4f 524d 414c 3205 312e 302e  fp*.NORMAL2.1.0.
        0x01a0:  3312 1a08 c3ed 0318 0322 036d 6e74 2a06  3........".mnt*.
        0x01b0:  4e4f 524d 414c 3205 322e 312e 31         NORMAL2.2.1.1

3、路由的问题,在k8s-node02上直接加路由route add -net 192.168.10.0/24 dev enp4s0f0,ping不通,加同网段IP:ip addr add 192.168.10.160/24  dev enp4s0f0,有的能Ping通(在k8s-node04上:192.168.10.159)有的不行(Nport:192.168.10.30),检查由于加同网段IP自动又生成一个相同的路由,删除只留下一个后OK。

[root@k8s-node02 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 enp4s0f0
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 enp4s0f0
[root@k8s-node02 ~]# ip route del 192.168.10.0/24 dev enp4s0f0     //del后没有全删除,只剩一个
[root@k8s-node02 ~]# route -n   
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.5.0     0.0.0.0         255.255.255.0   U     0      0        0 enp4s0f0

4、将Linux debian 6.1.0-15-amd64作为二所数据库服务器,使用默认安装的MariaDB Server version: 10.11.4-MariaDB-1~deb12u1 Debian 12;首先按网上方法添加root的密码,否则登录不上去。

root@debian:/home# mysql  -u root -pabc
>  GRANT ALL ON *.* TO 'fdd'@'%' IDENTIFIED BY 'abc'; FLUSH PRIVILEGES;   //按二所文档,添加多个用户
>  Create database atcdb;
#  mysql -uroot -pabc -f atcdb < airnetdb.sql
  • Debian添加静态IP命令 :      "/etc/NetworkManager/system-connections/Wired connection 1"
nmcli connection modify 'Wired connection 1' ipv4.address 192.168.5.58/24

5、selector VM的workloadentry,Service不能是clusterIP: None,域名只能解析到ClusterIP,解析不到VM的IP;在加入服务网格的FDP2使用域名测试OK,使用ClusterIP测试也OK,说明需要使用域名解析到ClusterIP使用。不能使用VM的IP。

# selector VM的workloadentry,Service不能是clusterIP: None,域名只能解析到ClusterIP,解析不到VM的IP
apiVersion: v1
kind: Service
metadata:
  name: db-istio
  labels:
    app: airnet-db
  namespace: vm-airnet
spec:
  selector:
    app: airnet-db
  ports:
  - name: mysql
    port: 3306
    protocol: TCP
    targetPort: 3306   
  - name: http
    port: 80
    protocol: HTTP
    targetPort: 8080           
  type: ClusterIP
---
#  kv exec -ti tool-97f9cfd66-4j9b2  -- nslookup  db-istio.vm-airnet.svc.cluster.local                //OK
#  kv exec -ti tool-97f9cfd66-4j9b2  -- curl       http://db-istio.vm-airnet.svc.cluster.local:/api/users     //OK
# root@mysql-7fd7c45564-hn8cr:/# mysql -uroot -pabc -h db-istio.vm-airnet
# mysql: [Warning] Using a password on the command line interface can be insecure.
# root@debian:/home# curl http://localhost/api/users                                //OK
# root@debian:/home# curl  http://db-istio.vm-airnet.svc.cluster.local/api/users    //OK 
# [root@k8s-master01 home]#  k exec -ti mysql-7fd7c45564-hn8cr -- mysql -ufdd -pabc -h db-istio.vm-airnet
# [root@k8s-master01 home]# mysql -ufdd -pabc -h 192.168.31.222         //NOK
# [root@FDP2 log]# mysql -ufdd -pabc -h db-istio.vm-airnet   //在加入服务网格的FDP2使用域名测试OK,,说明需要使用域名!!!
# [root@FDP2 ~]# mysql -ufdd -pabc -h  10.16.225.28      //在加入服务网格的FDP2使用ClusterIP测试也OK,说明需要使用ClusterIP!!!
# [root@FDP2 ~]# mysql -ufdd -pabc -h 192.168.31.222    // IP不行
#   mysql: [Warning] Using a password on the command line interface can be insecure.
# [root@k8s-master01 debian-222]# k exec -ti mysql-7fd7c45564-hn8cr -- mysql -ufdd -pabc -h 192.168.31.222   //NOK 
#    mysql: [Warning] Using a password on the command line interface can be insecure.

6、debian VM加入sitio,使用域名和ClusterIP不通;使用宿主机IP则OK。ISTIO_INBOUND_PORTS=6666或注释掉时都一样。

/var/lib/istio/envoy/sidecar.env
 ISTIO_INBOUND_PORTS=6666
 --->以下不通  (FDP2是虚拟机,加入了网格)
[root@FDP2 fdp2-airnet]# curl   db-istio.vm-airnet.svc.cluster.local:6666
[root@FDP2 fdp2-airnet]# curl   10.16.225.28:6666
curl: (56) Recv failure: 连接被对方重设
[root@k8s-master01 /]# curl  10.16.225.28:6666
curl: (7) Failed connect to 10.16.225.28:6666; 拒绝连接
[root@k8s-master01 /]# k -n vm-airnet exec -ti tool-97f9cfd66-4j9b2  -- curl 10.16.225.28:6666
[root@k8s-master01 /]# k -n vm-airnet exec -ti tool-97f9cfd66-4j9b2  -- curl db-istio.vm-airnet.svc.cluster.local:6666
curl: (56) Recv failure: Connection reset by peer
command terminated with exit code 56
--->以下通
[root@FDP2 fdp2-airnet]#  curl 192.168.5.222:6666
[root@FDP2 fdp2-airnet]#  curl 192.168.31.222:6666
[root@k8s-master01 /]#  k -n vm-airnet exec -ti tool-97f9cfd66-4j9b2  -- curl 192.168.5.222:6666
  • 但是对于INBOUND的端口,使用域名和ClusterIP ok;使用宿主机IP则不通。
  • stop istio后,域名和ClusterIP不通,宿主机IP通。
/var/lib/istio/envoy/cluster.env
ISTIO_INBOUND_PORTS='8080,3306'
 --->  db-istio服务中定义port: 80     targetPort: 8080
[root@FDP2 fdp2-airnet]# curl  10.16.225.28:80/api/healthz
[root@FDP2 fdp2-airnet]# curl  db-istio.vm-airnet.svc.cluster.local:80/api/healthz
[root@k8s-master01 /]# k -n vm-airnet exec -ti tool-97f9cfd66-4j9b2 -- curl   10.16.225.28:80/api/healthz
Nok[root@k8s-master01 /]# k -n vm-airnet exec -ti tool-97f9cfd66-4j9b2 -- curl 192.168.31.222:80/api/healthz
upstream connect error or disconnect/reset before headers. reset reason: remote connection failure, transport failure reason: delayed connect error: 111
Nok[root@k8s-master01 /]#  k exec -ti mysql-7fd7c45564-hn8cr  -- mysql -ufdd -pabc -h 192.168.31.222
mysql: [Warning] Using a password on the command line interface can be insecure.
--->systemctl stop istio后,以下OK!
[root@k8s-master01 /]#  k exec -ti mysql-7fd7c45564-hn8cr  -- mysql -ufdd -pabc -h 192.168.31.222
  • 针对VM加入服务网格,集群内外都可用的需求——即不满足使用域名和ClusterIP以及宿主机IP都OK的需求。要使用域名和ClusterIP,service的PORT(S)按需添加,例如以下访问MySQL数据库需添加:3306/TCP
# k exec -ti mysql-7fd7c45564-hn8cr -- mysql -usa -pabc -h fdp2-istio.vm-airnet.svc.cluster.local

7、SMC监控Surveillance没有雷达列表:雷达状态端口40202

AirNet使用笔记12(! AirNet服务器容器化-续)_xml_04

  • 原因是SMC的/home/cdatc/AirNet/config/atc_sfp_radar_offline.xml中,SDFP主机名称不对,改成sdfp-1就有了。但是一直是灰色的。
<node param="HOSTNAME" tip="服务器名称" value="sdfp-1"/>

AirNet使用笔记12(! AirNet服务器容器化-续)_主机名_05

  • 使用工具测试,输入./mid_test smc打开之后,接收测试,数据类型里面输入202,能收到数据,如下图。
[root@SMC1 bin]# md5sum mid_test     //md5sum为f5772897f471d795f8ade38e15ae469e的mid_test,加参数smc运行异常core 
94383e3339d0c1f54a5426a949f861fb
./mid_test smc

AirNet使用笔记12(! AirNet服务器容器化-续)_xml_06AirNet使用笔记12(! AirNet服务器容器化-续)_主机名_07

  • SMC上鼠标点开“About”,在窗口按一下,Ctrl+Shift+d,smc日志里面有更多的Debug内容,Ctrl+Shift+i关闭。

8、在Linux上,当使用 localhost 来连接数据库的时候,Mysql会使用Unix domain socket来传输数据,这是一种进程内通信(IPC)机制,不需要经过网络协议栈,因此速度会更快。而使用 127.0.0.1 时,Mysql仍然会使用TCP/IP协议栈来进行数据传输。

  • 测试,ifdown掉网卡,ping不通127.0.0.1,Mysql也不能使用127.0.0.1,因为需经过网络协议栈,但协议栈关闭了;这时Mysql可以使用 localhost,说明是使用Unix domain socket来传输数据。(Unix域套接字的平均延迟为2微秒,而TCP套接字为6微秒
  • unix域套接字(Unix domain socket有时简称为unix套接字)在一台机器上运行。侦听套接字位于文件系统层次结构中,对它们的访问可以由文件系统权限控制。不是通过 “IP地址 + TCP或UDP端口号” 的方式进程通信,而是使用 socket 类型的文件来完成通信。
  • TCP/IP套接字用于通过TCP/IP网络进行通信。连接的TCP套接字通过本地IP、本地端口、远程IP和远程端口的组合来标识。侦听TCP套接字由本地端口和可能的本地IP标识。TCP/IP套接字通过使用环回接口与在同一台计算机上运行的进程进行通信: TCP 环回接口可以跳过完整 TCP/IP 网络堆栈的一些复杂性,但它保留了许多其他(ACK、TCP 流量控制等)功能,这些复杂性是为可靠的跨机器通信而设计的,但在单个主机上它们是不必要的负担。

9、外网断开后,SMC主机的mnt运行失败:

/etc/nsswitch.conf   --->重启 restart network 生效;files指/etc/hosts
hosts:      myhostname  files [NOTFOUND=return] dns 
//必须在files后加[NOTFOUND=return]或者删除 dns ,否则断公网后network.xml使用域名时运行mnt有以下报错,且mid运行失败:
[ERROR]  writedata  failed,datatype=1,reason=zmq_send data failed  :  [Socket is invavilable in a non-blocking manner]
# The entry '[NOTFOUND=return]' means that the search for an
# entry should stop if the search in the previous entry turned
# up nothing. Note that if the search failed due to some other reason
# (like no NIS server responding) then the search continues with the
# next entry.
  • 必须在files后加[NOTFOUND=return]或者删除 dns ,否则断公网后network.xml使用域名时运行mnt报错,且mid运行失败:

10、ctr命令格式记录:

ctr -n=k8s.io i export pause.tar registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.7 
ctr -n=k8s.io i import pause.tar
ctr -n=k8s.io i ls |grep pause
  core.harbor.domain/mizy/pause:3.7 
ctr -n=k8s.io i tag --force registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.7  core.harbor.domain/mizy/pause:3.7
#  ctr -n=k8s.io i push -k  -u admin:Harbor12345 --platform linux/amd64 core.harbor.domain/mizy/pause:3.7

11、互联网断开后Pod重启状态Init:0/2,describe提示:

Warning  FailedCreatePodSandBox  53s (x19357 over 4d23h)  kubelet  (combined from similar events): Failed to create pod sandbox: rpc error: code = Unknown desc = failed to get sandbox image "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.7"

修改对应node节点的containerd配置文件/etc/containerd/config.toml,使用内网的镜像,然后systemctl restart containerd,OK!

sandbox_image = "core.harbor.domain/mizy/pause:3.7"