修改keadm支持离线部署KubeEdge

1、在线部署时候cloud端需要下载的文件,所以想要离线部署,先提前将这些文件下载好放到固定路径下:

以下5个文件提前下载放到:/etc/kubeedge/下
devices_v1alpha2_device.yaml
devices_v1alpha2_devicemodel.yaml
cluster_objectsync_v1alpha1.yaml
objectsync_v1alpha1.yaml
kubeedge-v1.5.0-linux-amd64.tar.gz

//放置的位置如下:/etc/kubeedge/
[root@master kubeedge]# tree 
.
├── cloudcore.service
├── config
│   └── cloudcore.yaml
├── crds
│   ├── devices
│   │   ├── devices_v1alpha2_devicemodel.yaml
│   │   └── devices_v1alpha2_device.yaml
│   └── reliablesyncs
│       ├── cluster_objectsync_v1alpha1.yaml
│       └── objectsync_v1alpha1.yaml
|
└── kubeedge-v1.5.0-linux-amd64.tar.gz



上述均下载好后,keadm在部署的时候还是会拉取一个这个包,所以修改源码时候简单粗暴的方法就是将这个在线checksum逻辑删除,高级些你可以改成离线checksum。

因而修改keadm源码如下:checkSum的逻辑/* 注释掉

vim keadm/cmd/keadm/app/cmd/util/common.go

 if _, err = os.Stat(filePath); err == nil {
        fmt.Printf("Expected or Default KubeEdge version %v is already downloaded and will checksum for it. \n", version)
        fmt.Println("Expected or Default KubeEdge version", version, "is already downloaded")
        /*if success, _ := checkSum(filename, checksumFilename, version, options.TarballPath); !success {
            fmt.Printf("%v in your path checksum failed and do you want to delete this file and try to download again? \n", filename)
            for {
                confirm, err := askForconfirm()
                if err != nil {
                    fmt.Println(err.Error())
                    continue
                }   
                if confirm {
                    cmdStr := fmt.Sprintf("cd %s && rm -f %s", options.TarballPath, filename)
                    if err := NewCommand(cmdStr).Exec(); err != nil {
                        return err 
                    }   
                    klog.Infof("%v have been deleted and will try to download again", filename)
                    if err := retryDownload(filename, checksumFilename, version, options.TarballPath); err != nil {
                        return err 
                    }   
                } else {
                    klog.Warningf("failed to checksum and will continue to install.")
                }   
                break
            }   
        } else {
            fmt.Println("Expected or Default KubeEdge version", version, "is already downloaded")
        }*/ 
    }

2、在线部署时候edge端需要下载的文件,所以想要离线部署,先提前将这些文件下载好放到固定路径下

下载文件1个,放入/etc/kubeedge 目录下
kubeedge-v1.5.0-linux-amd64.tar.gz

但是edge端会在线安装两个rpm包:两个包,所以需要提前将这俩包在边缘节点安装好。然后修改keadm源码不安装这俩包即可//"yum -y install epel-release",  //"yum -y install mosquitto", 注释掉即可

vim keadm/cmd/keadm/app/cmd/util/rpminstaller.go

func (r *RpmOS) InstallMQTT() error {
    // check MQTT
    cmd := NewCommand("ps aux |awk '/mosquitto/ {print $1}' | awk '/mosquit/ {print}'")
    if err := cmd.Exec(); err != nil {
        return err 
    }   

    if stdout := cmd.GetStdOut(); stdout != "" {
        fmt.Println("Host has", stdout, "already installed and running. Hence skipping the installation steps !!!")
        return nil 
    }   

    // install MQTT
    for _, command := range []string{
        //"yum -y install epel-release",
        //"yum -y install mosquitto",
        "systemctl start mosquitto",
        "systemctl enable mosquitto",
    } { 
        cmd := NewCommand(command)
        if err := cmd.Exec(); err != nil {
            return err 
        }   
    }   
    fmt.Println("install MQTT service successfully.")

    return nil 
}

然后编译keadm即可。

剩下的keadm安装教程 可以参考官网 或着其他文档即可。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值