对fission进行测试分析组件日志:

进行测试如下:

  1. 创建语言环境镜像、给函数创建路由route trigger、上传函数、测试函数、请求函数、查看函数日志
  2. 编译多个文件组成的源码函数:对源码进行打包上传,根据压缩包创建函数、创建路由、通过fission进行解释或编译链接、查看bulid日志
  3. 编译artifacts(已打包函数),创建函数、创建路由、测试函数、查看全部函数
  4. 创建语言环境镜像、创建builder、查看环境
  5. 自动扩容(需要未安装工具hey)
  6. 创建trigger:包括http trigger,time trigger,message queue trigger
  7. 传源码包:通过fission创建由多个文件组成的函数压缩包,创建package,查看package信息,通过package创建函数
  8. 创建部署包:通过fission创建由一个文件组成的函数压缩包,创建package,查看package信息,通过package创建函数
  9. 测试函数对k8s中secret和ConfigMaps的访问(demo中的secret路径出现问题,还没找到对的路径)
  10. fission的workflow测试

组件分析如下:

builder:

  • 作用:编译链接上传的源码package
  • 日志包括:记录创建builder service、builder deployment、builder pod、build程序包(注意给build.dh加权限)、上传部署包、更新部署包、build失败报错信息

controller:

  • 作用:每次http请求函数的信息
  • 日志包括:服务器状态,端口,返回http请求的head信息,每次向fission请求时http信息(包括请求错误url的proxy error)如
    1
    2
    3
    4
    127.0.0.1 - - [07/Jun/2018:01:50:33 +0000] "GET /v2/packages/demo-src-pkg-zip-8lwt?namespace=default HTTP/1.1" 404 9
    以及(应该是)每次请求的函数地址和传入参数的地址如
    github.com/fission/fission/controller.(*API).respondWithError(0xc420082ae0, 0x7f5c883e4e60, 0xc4201a4960, 0x178ea60, 0xc420510b40)
    /Volumes/MacintoshHD/Dropbox/Dropbox/goWorkspace/src/github.com/fission/fission/controller/api.go:98 +0x29

executor:

  • 作用:创建函数
  • 日志包括:检查是缓冲中跑起来的函数,没有找到的话创建一个,为函数分配环境,设置一个数据结构记录函数信息(如函数名,GenerateName:命名空间;SelfLink,Generation;创建时间戳,删除时间戳,存活时间(DeletionGracePeriodSeconds),标签,实例化url),从pool中得到这个函数,选择pod,通过pod ip实例化pod,从pool中找到可以实例化的pod,对函数和pod进行映射,对pod加上标签,选择pod,调用fetcher 拷贝函数到指定url上,实例化pod,用环境镜像实例化pod,为pod加上ip,创建对应语言的pool,拉取fetcher镜像等。

kubewatcher:

没有查到日志

router:

  • 作用:对http请求进行转发
  • 日志包括:
    1
    2
    3
    4
    5
    6
    7
    2018/06/07 05:47:12 Calling getServiceForFunction for function: hello
    2018/06/07 05:47:30 Tapped 1 services in batch
    2018/06/07 05:47:30 Tapped 1 services in batch
    2018/06/07 05:48:00 Tapped 1 services in batch
    2018/06/07 05:48:00 Tapped 1 services in batch
    2018/06/07 05:48:15 Tapped 1 services in batch
    2018/06/07 05:48:15 Tapped 1 services in batch

storagesvc:

  • 作用:储存服务
  • 日志包括:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    time="2018-06-06T07:24:53Z" level=info msg="Storage service started"
    time="2018-06-06T07:24:53Z" level=info msg="listening to archiveChannel to prune archives"
    time="2018-06-06T08:24:53Z" level=info msg="getting orphan archives"
    time="2018-06-06T09:24:53Z" level=info msg="getting orphan archives"
    time="2018-06-06T09:32:41Z" level=info msg="Handling upload for /packages/demo-src-pkg-zip-fbza-o3s5sk-icbzii.zip"
    172.16.76.86 - - [06/Jun/2018:09:32:41 +0000] "POST /v1/archive HTTP/1.1" 200 72
    172.16.76.115 - - [06/Jun/2018:09:40:01 +0000] "GET /v1/archive?id=%2Ffission%2Ffission-functions%2Fde313c06-247e-44a5-83a6-0d257d224212 HTTP/1.1" 200 103852
    time="2018-06-06T10:24:53Z" level=info msg="getting orphan archives"
    time="2018-06-07T01:50:32Z" level=info msg="Handling upload for /packages/demo-src-pkg-zip-d20x-rnhpna-i8fmoq.zip"
    172.16.76.95 - - [07/Jun/2018:01:50:32 +0000] "POST /v1/archive HTTP/1.1" 200 72
    time="2018-06-07T02:24:53Z" level=info msg="getting orphan archives"

timer:

  • 作用:一个基于时间的triggers,定时向请求指定函数。这里是每30s请求一次。
  • 日志包括:
    2018/06/07 08:17:30 Making HTTP request to http://router.fission/fission-function/hello
    主要是记录时间

Comments

⬆︎TOP