knative serving开发环境搭建

本文基官方knative serving的开发环境搭建文档,加自己的实践,给出以下knative serving开发环境的搭建方案。
开始之前请确保已按上面的开发环境搭建文档搭好Kubernetes(1.10以上)和istio。

安装开源docker registry

knative serving组件采用ko实现自动化的镜像构建,并将构建好的镜像上传到指定镜像仓库中。因此我们需要安装一个简单的开发用私有镜像仓库。
按照这个docker官方文档,下载并启动镜像仓库:

只有制定了bind address为0.0.0.0才能让kubernetes集群中的其他节点也能访问到该registry。
注意上面的镜像仓库默认对外提供http服务,如果需要提供https服务,则首先准备好https证书,然后按照这篇docker官方文档配置镜像仓库。由于我们手头没有https证书,因此在这里不配置镜像仓库的https服务。

修改所有需要访问私有镜像仓库的docker daemon配置文件

docker daemon默认采用https的方式访问镜像仓库,为了让docker daemon使用http访问镜像仓库,需要按照这篇docker官方文档配置docker daemon:

  1. 在/etc/docker/daemon.json添加如下内容

  2. 如果是已经运行中的docker daemon,则需要如下指令重启docker daemon:

修改ko源码,让它用http协议访问镜像仓库

ko默认采用https访问镜像仓库,并且无法通过配修改,只能通过修改源码。

  1. 下载ko源码

  2. 修改serving/pkg/name/repository.go第91行

    改为

  3. 重新编译ko工具

    完成后得到新的ko可执行文件

修改ko配置

修改ko保存镜像的repo+namespace名称:

修改ko build镜像用到的基础镜像,在未来运行ko的目录下新建.ko.yaml文件,并添加如下内容:

把镜像push到私有仓库上

下载gcr.io/distroless/base:latest,执行docker tag把镜像重命名为
前面的名字,即<镜像仓库的ip地址>:5000/distroless/base:latest

部署knative serving组件

在Kubernetes masster上git clone knative serving代码,然后在master上执行如下命令来部署knative-serving组件

应该可以在几秒钟内完成,结束之后执行kubectl get pods -n knative-serving,可以得到部署成功的pod,状态为RUNNING:

  1. activator-547f9c88f-7kpnq
  2. autoscaler-6f497c9777-22fz8
  3. controller-fd8c88d89-k66c5
  4. webhook-85b7c954f7-zl65q
Yiqun Ding

作者介绍:丁轶群,浙大SEL实验室创始人&带队老师,Cloud Native Computing Foundation会员。浙江省第一批青年科学家。《Docker容器与容器云》主要作者

浙江大学SEL实验室是本网站上所有页面设计、页面内容的著作权人,对该网站所载的作品,包括但不限于网站所载的文字、数据、图形、照片、有声文件、动画文件、音视频资料等拥有完整的版权,受著作权法保护。严禁任何媒体、网站、个人或组织以任何形式或出于任何目的在未经本实验室书面授权的情況下抄袭、转载、摘编、修改本网站內容,或链接、转帖或以其他方式复制用于商业目的或发行,或稍作修改后在其它网站上使用,前述行为均将构成对本网站版权之侵犯,本网站將依法追究其法律责任。
本网站与他人另有协议授权下载的或法律另有规定的,在下载使用时必须注明“稿件来源:浙江大学SEL实验室”。

Leave a Reply

Your email address will not be published. Required fields are marked *