首页 > 其他分享 >千级边缘节点应用分钟级部署测试验证

千级边缘节点应用分钟级部署测试验证

时间:2023-04-08 16:11:22浏览次数:56  
标签:http nil err 验证 fmt 千级 Println docker 节点

1.测试组网

一台主节点master部署k8s,mef-center组件,cloud core

7台服务器模拟边缘节点部署docker,edge core

2.模拟边缘节点步骤

2.1 制作边缘容器镜像

拉取官网ubuntu镜像,更新镜像源,安装docker.io,安装 systemd 所需要的 Init 重新提交docker镜像

2.2 执行特权容器

docker run -itd  --privileged myubuntu:v1.0  /usr/sbin/init

2.3 执行编写的脚本

#!/bin/bash
systemctl start docker
docker load -i /mnt/kubeedge-pause.tar
docker load -i /mnt/busybox-131.tar
hostname=$(cat /etc/hostname)
sed -i "s/myubuntu/$hostname/g"  /etc/kubeedge/config/edgecore.yaml
echo $(pwd)
/mnt/edgecore >> edgecore.log 2>&1

2.3 执行批量部署容器脚本

#!/bin/bash
imageName="myubuntu:v1.0" 
total=$(docker ps -a|grep $imageName|wc -l)
echo $total
while(($dockerCount<=10))
do
    totalCnt=$(($total+$dockerCount))
    createName="node1-"$totalCnt
    docker run -itd  --privileged --name="${createName}" $imageName /usr/sbin/init 
    containerID=$(docker ps|grep $imageName|grep "$createName"|awk '{print $1}') 
    let "dockerCount++"
done

2.4 批量单独部署脚本

#!/bin/bash

imageName="myubuntu:v1.0"
containerIDs=$(docker ps|grep $imageName|awk '{print $1}')
for containerID in $containerIDs
do 
	docker exec -itd $containerID /bin/bash -c run.sh
done;

faq

1.Failed to allocate directory watch: Too many open files

vim /etc/sysctl.conf

fs.inotify.max_user_instances=512
fs.inotify.max_user_watches=262144

sysctl -psysctl fs.inotify

2 ws.go:32] 2023/04/06 01:02:23 http: Accept error: accept tcp [::]:10000: accept4: too many open files; retrying in 1s

/etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535

ulimit -n

[Service] 
LimitNOFILE=10000 

3.批量纳管节点

package main

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"math"
	"net/http"
	"strconv"
	"strings"
)

func main() {

	client := &http.Client{}

	unmanagedUrl := "http://10.44.115.108:30034/edgemanager/v1/node/list/unmanaged?pageNum=1&pageSize=100"
	unmanagedMethod := "GET"

	unmanagedReq, err := http.NewRequest(unmanagedMethod, unmanagedUrl, nil)

	if err != nil {
		fmt.Println(err)
		return
	}
	unmanagedRes, err := client.Do(unmanagedReq)
	if err != nil {
		fmt.Println(err)
		return
	}
	defer unmanagedRes.Body.Close()

	unmanagedBody, err := ioutil.ReadAll(unmanagedRes.Body)
	if err != nil {
		fmt.Println(err)
		return
	}
	type Result struct {
		Status int32                  `json:"status"`
		Msg    string                 `json:"msg"`
		Data   map[string]interface{} `json:"data"`
	}
	unmanagedSlice := &Result{}
	json.Unmarshal(unmanagedBody, &unmanagedSlice)
	unmanagedSliceData, _ := unmanagedSlice.Data["nodes"].([]interface{})
	for _, item := range unmanagedSliceData {
		s, _ := item.(map[string]interface{})
		if math.Max(s["id"].(float64), 3) != 3 {
			addId, _ := s["id"].(float64)
			addNodeName, _ := s["nodeName"].(string)
			addUrl := "http://10.44.115.108:30034/edgemanager/v1/node/add"
			addMethod := "POST"

			addNode := strconv.Itoa(int(addId))
			addName := addNodeName + "-" + addNode

			postStr := `{"nodeID":` + addNode + `, "name":"` + addName + `", "groupIDs":[2]}`
			fmt.Println(postStr)
			payload := strings.NewReader(postStr)
			addReq, err := http.NewRequest(addMethod, addUrl, payload)

			if err != nil {
				fmt.Println(err)
				return
			}
			addReq.Header.Add("Content-Type", "text/plain")

			addRes, err := client.Do(addReq)
			if err != nil {
				fmt.Println(err)
				return
			}
			defer addRes.Body.Close()

			addBody, err := ioutil.ReadAll(addRes.Body)
			if err != nil {
				fmt.Println(err)
				return
			}
			fmt.Println(string(addBody))
		}
	}
}

4.边缘节点包地址

10.44.115.106@:/root/gwx/edge.zip 解压即可

5.maxNode个数现在修改点

5.1 cloudcore.yaml 修改

参考资料

https://kubeedge.io/zh/blog/scalability-test-report/

5.2 edgemanager 修改

pkg/nodemanger/node_const.go

 目前是1024根据部署模拟节点进行修改
const ( 
	maxNode            = 1024 
) 

修改后重新编译部署即可

标签:http,nil,err,验证,fmt,千级,Println,docker,节点
From: https://www.cnblogs.com/gongxianjin/p/17298693.html

相关文章

  • 链表中的节点每k个一组翻转
    classSolution{publicListNodereverseKGroup(ListNodehead,intk){ListNodedummy=newListNode(0);//定义虚拟节点dummy.next=head;ListNodeprev=dummy;//定义一个前置节点prev,用于保存已经翻转完成的部分的尾部节点......
  • 带头节点的单链表的思路及代码实现
    带头节点的单链表的思路及代码实现(JAVA)一、什么是的单链表①标准定义单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象)+指针(指示后继元素存储位置,元素就是存储数据的存储单......
  • 节点加入到单链表时按需求排序
    JAVA实现节点加入到单链表时按需求排序回顾在上文《带头节点的单链表的思路及代码实现(JAVA)》中我们想要去实现让数据节点不考虑加入顺序实现数据节点排序效果。那么我们要如何实现这一需求呢?一、实现思路①理论思路假设我们要根据数据节点的ID进行排序,那么我们可以通过使用......
  • JAVA实现单链表修改和删除数据节点
    JAVA实现单链表修改和删除数据节点一、修改单链表中的一个节点①实现思路因为带头节点的链表中头节点的next域不能发生改变(始终指向单链表的头节点),否则将找不到该链表。所以我们需要先找一个辅助节点temp来进行节点代理操作。通过遍历链表,使辅助节点temp后移,找到要修改的节点......
  • Chrome浏览器不同版本兼容性的验证方法
    Chrome浏览器不同版本兼容性的验证方法背景上周客户现场有出现使用国产信创设备上面的奇安信浏览器出现兼容性的问题.开发认为是测试不全面导致.认为测试应该必须测试过特定浏览器才可以进行说明.最开始国产设备上面仅能够支持firefox52.3ESR的版本当时在进行银河麒麟和UO......
  • 1797. 设计一个验证系统
    题目链接:1797.设计一个验证系统方法:哈希解题思路注意:在判断\(tokenId\)是否出现过时,使用\(Time.count(tokenId)\),而不是使用\(Time[tokenId]\),因为只要使用之后,\(tokenId\)就会被添加进\(map\)中,影响后续计数的结果。代码classAuthenticationManager{private:......
  • 概念:四种基于模型的嵌入式软件开发、测试与验证方法
    ​嵌入式软件(如航空电子和汽车系统)的设计、开发、测试和验证正变得越来越复杂。传统的文档驱动式环境中,一旦开发人员之间缺乏协调,软件程序生命周期的质量和成本就会受到严重影响,显然已经无法应对日益复杂的嵌入式软件生产。正确使用基于模型的设计(Model-BasedDesign,以下简称MBD......
  • k8s节点变配pod驱逐操作
    说明:日常运维中或多或少遇到k8s节点调整配置,或者k8s集群中某节点有问题,需要下架操作。以k8s集群中节点172.24.80.2节点需要扩容为例,共三步:#暂停节点172.24.80.2调度,使节点172.24.80.2不可用,使节点不接收新的podkubectlcordon172.24.80.2#驱逐节点上运行的pod到其他节点,kube......
  • MySQL新身份验证插件caching_sha2_password
     用sequelpro工具登录,连接失败~!“Authenticationplugin'caching_sha2_password'cannotbeloaded”失败原因:mysql8之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password解决办法:把mysql用户登录密码加密规则还原成mysql_nati......
  • 动力节点王鹤SpringBoot3笔记——第四章 访问数据库
    视频:动力节点SpringBoot3从入门到项目实战第四章访问数据库SpringBoot框架为SQL数据库提供了广泛的支持,既有用JdbcTemplate直接访问JDBC,同时支持“objectrelationalmapping”技术(如Hibernate,MyBatis)。SpringData独立的项目提供对多种关系型和非关系型数据库的访问支持。......