系列文章:


总目录索引:九析带你轻松完爆 Knative 系列教程

目录

1 前言

2 邀约

3 Knative 简介

4 组件安装

    4.1 安装服务组件(Serving)

        4.1.1 安装 Custom Resource Definitions(CRDs)

        4.1.2 安装服务核心组件

        4.1.3 安装网络层

        4.1.4 配置服务默认使用 Kourier

5 部署 hello world 应用

    5.1 编写 hello world 应用

    5.2 部署 hello world 应用

    5.3 访问 hello world 应用


1 前言

        如果你对博客有任何疑问,请告诉我。

第一章 九析带你轻松完爆 Knative 安装_knative serverless


2 邀约

        你可以从 b 站搜索 “九析”,获取免费的、更生动的视频资料:

第一章 九析带你轻松完爆 Knative 安装_knative_02


3 Knative 简介

        本文档将带您完成最新版的 Knative 安装。

        Knative 有两个主要组件 —— 服务(Serving )和事件(Eventing):

服务(Serving)组件(版本 0.9):为基于无状态请求的从零扩展服务提供了一种抽象

事件(Eventing)组件(版本 0.16):为启用事件源(例如 Github Webhooks,kafka)和事件使用者(例如 k8s)绑定提供了一种抽象

        Knative 还有一个 Observability 插件(目前该插件已过期,版本 0.14)。该插件作用是提供标准工具去查看运行在 knative 上的服务健康情况。

        上面概念模糊的同学不用太追究,后续会逐步介绍。目前先有个概念即可。


4 组件安装

4.1 安装服务组件(Serving)

4.1.1 安装 Custom Resource Definitions(CRDs)

kubectl apply -f https://github.com/knative/serving/releases/download/v0.17.0/serving-crds.yaml

4.1.2 安装服务核心组件

kubectl apply -f https://github.com/knative/serving/releases/download/v0.17.0/serving-core.yaml

4.1.3 安装网络层

        Knative 新版本已经不再强依赖 Istio,所以这里我们使用 Knative 社区自己开发的网络层 Kourier。

kubectl apply -f https://github.com/knative/net-kourier/releases/download/v0.17.0/kourier.yaml

        调整 Kourier 服务的类型为 NodePort,指令如下:

kubectl patch svc -n kourier-system kourier -p '{"spec": {"type": "NodePort"}}'

4.1.4 配置服务默认使用 Kourier

        默认 Serving 配置位于 config-network 的 configmap 中,执行如下命令将 ingress.class 从 Istio 替换为 kourier。

kubectl patch configmap/config-network \

--namespace knative-serving \

--type merge \

--patch '{"data":{"ingress.class":"kourier.ingress.networking.knative.dev"}}'


5 部署 hello world 应用

        在部署 hello world 应用之前,首先确保 Knative 和 Kourier 都运行成功,如下图所示:

第一章 九析带你轻松完爆 Knative 安装_knative_03第一章 九析带你轻松完爆 Knative 安装_knative_04

5.1 编写 hello world 应用

        编写 Knative service 的 helloworld.yaml 文件:

---

apiVersion: v1

kind: Namespace

metadata:

  name: helloworld

---

apiVersion: serving.knative.dev/v1alpha1

kind: Service

metadata:

  name: hello

  namespace: helloworld

spec:

  template:

    metadata:

      labels:

        app: hello

    annotations:

      autoscaling.knative.dev/target: "10"

    spec:

       containers:

         - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/simple-app:132e07c14c49

       env:

       - name: TARGET

          value: "World!"

5.2 部署 hello world 应用

        执行如下语句部署 Knative service 应用:

kubectl apply -f helloworld.yaml

        执行完,使用如下命令查看 Knative service 应用部署结果:

kubectl get ksvc -n helloworld

        命令执行结果如下图所示:

第一章 九析带你轻松完爆 Knative 安装_serverless_05

5.3 访问 hello world 应用

        使用 curl 客户端工具访问部署的 Knative service 服务,命令如下:

curl -H "Host: hello.helloworld.example.com" http://10.110.101.98:32349

        因为我们使用了基于 Kourier 网络层,所以此处的 32349 就是 Kourier service 对外开放的访问端口,如下图所示:第一章 九析带你轻松完爆 Knative 安装_knative_03第一章 九析带你轻松完爆 Knative 安装_kourier_07

        最终 curl 命令执行成功结果如下图所示:

第一章 九析带你轻松完爆 Knative 安装_knative 安装_08

        自此,九析带你轻松完爆 Knative 安装。