1. knative简介
knative是一个将serverless的能力扩展到k8s中的开源项目。serverless让开发者无需关注容器、镜像、运维等事项,集中精力于开发代码本身,即将代码通过免运维的形式交付给serverless平台。代码会在设定的条件下运行,并自动实现扩缩容。
2. knative的组件
knative主要包含三个部分:
-
build: 将代码转换为容器,主要包括
- 将源代码从git仓库拉取下来,安装相关的依赖
- 构建容器镜像
- 将容器镜像推送到镜像仓库
-
Serving:创建一个可伸缩的部署。
- 配置定义了服务的状态,包括版本管理,每次修改都创建一个新版本部署,并保留旧版本。
- 灵活的路由控制,可以控制百分比的路由到新版本和旧版本服务。
- 自动弹性伸缩,可以快速创建上千个实例或快速调整实例数为0。
-
Eventing:事件触发,通过定义各种事件使用knative自动来完成这些任务,而无需手动编写脚本。
3. 部署knative
部署knative主要是部署Serving和Eventing两个组件,可以单独部署也可以同时部署。
3.1. 部署Serving
-
部署CRD
1
kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.10.1/serving-crds.yaml
-
部署Serving
1
kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.10.1/serving-core.yaml
-
部署HPA autoscaling(可选)
1
kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.10.1/serving-hpa.yaml
查看部署结果
1 | # kgdep -n knative-serving |
3.2. 部署Eventing
-
部署CRD
1
kubectl apply -f https://github.com/knative/eventing/releases/download/knative-v1.10.0/eventing-crds.yaml
-
部署Eventing
1
kubectl apply -f https://github.com/knative/eventing/releases/download/knative-v1.10.0/eventing-core.yaml
查看部署结果
1 | # kgdep -n knative-eventing |
4. 部署knative客户端
1 | wget https://github.com/knative/client/releases/download/knative-v1.10.0/kn-linux-amd64 |
kn命令:
1 | kn |
5. 创建示例服务
以下通过yaml的方式演示。
vi hello.yaml
1 | apiVersion: serving.knative.dev/v1 |
创建文件
1 | kubectl apply -f hello.yaml |
查看服务
1 | # kubectl get ksvc |
参考:
赞赏一下