Hyper 源码分析------Hyper client创建与执行

本文深入分析了Hyper客户端的工作流程,包括Hyper的C/S架构,客户端的创建,flag参数解析,命令分发,特别是HyperCmdRun函数在启动Pod和container配置中的作用,以及RunPod函数如何将命令转化为HTTP请求发送给守护进程。
摘要由CSDN通过智能技术生成

一、Hyper总体架构

Hyper是典型的C/S架构.首先需要启动守护进程hyperd,用于接收来自client的请求,从而进行真正的hyper虚拟机创建工作以及对其的一系列操作.而作为client端的hyper命令则更像是一个命令解析器.它的作用仅仅只是对用户的hyper指令进行解析和封装,然后将其通过HTTP请求的形式传递给hyperd进程.下面就通过一条具体的hyper虚拟机启动命令:hyper run ubuntu:14.04 /bin/bash 对hyper client端的运作流程进行分析.


二、Hyper client创建

当用户输入如上所示的一条命令时,程序首先会进入./hyper.go文件中的main函数开始执行.第一步:通过cli := client.NewHyperClient(proto, addr, nil) 创建一个HyperClient的实例.其中两个参数protoaddr分别代表了hyper clienthyper server之间通信所采用的协议以及通信地址,默认的是使用unix socket domain,proto = "unix",addr="/var/run/hyper.sock".第三个参数代表是否使用https安全传输,默认为nil,即只使用http传输协议.这里需要注意的是,用户每次输入hyper命令都会重新创建一个hyper client实例,每个实例的生命周期只有接受用户命令,解析,发送给hyper daemon并接受hyper daemon的反馈这么长而已.

NewHyperClient函数中主要操作就是通过net.DialTimeout(proto, addr, timeout)函数与hyperd建立连接,然后再填充HyperClient这个数据结构.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值