Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Knative 入门系列5:Knative 安装

Knative 入门系列5:Knative 安装

作者头像
崔秀龙
发布于 2019-07-23 08:19:25
发布于 2019-07-23 08:19:25
4K03
代码可运行
举报
文章被收录于专栏:伪架构师伪架构师
运行总次数:3
代码可运行

Knative 是一个基于 Kubernetes 的,用于构建、部署和管理现代 serverless 应用的平台。Getting Started with Knative 是一本由 Pivotal 公司赞助 O’Reilly 出品的电子书,公众号后台回复“knative”获取英文版下载地址。本书中文版由 ServiceMesher 社区自发翻译系列文章,这是该系列的第5章。

在开始使用 Knative 构建和托管工作负载前,你需要安装它。你还应该运行一些命令来验证它是否正常运行并按预期工作。本章将介绍从 Mac 或 Linux shell 安装和验证 Knative 的必要步骤。

建立一个 Knative 集群

首先,你需要已经有一个 Kubernetes 集群。Knative 要求 Kubernetes 的版本在1.11以上。你必须在集群上启用 MutatingAdmissionWebhook admission controller。为了简单,你可以在本地机器上使用 Minikube 或者在云上运行集群。

为什么我们需要安装 Istio

迄今为止,我们还没讨论过 Istio,但是它作为安装的一部分出现了。Istio 是什么?Knative 为什么需要它?

Istio 是一个服务网络。它在 Kubernetes 之上提供了很多特性,包括流量管理、网络策略执行和可观察性。我们不认为 Istio 是 Knative 的组件,而是它的依赖项之一,就像 Kubernetes 一样。所以 Knative 最终使用 Istio 运行在 Kubernetes 集群之上。


本报告的目的不是详细说明 Istio 的内部工作。在这一章中,我们将介绍 Istio 与 Knative 一起使用时要用到的关于 Istio 的所有知识。如果你想了解更多,可以从 What is Istio? 以及 Istio documentation 开始。

须知

建立 Kubernetes 集群有许多选择。决定使用哪种工具取决于您的需求和提供者对特定工具集的熟悉程度。在 GitHub 中参考 Knative’s installation documentation 以获得特定提供者的指令。

在您的本地机器上,请确保您已经安装了 kubectl v1.11或更高版本。将上下文设置指向 Knative 设置的集群。您将使用 kubectl 以 YAML 文件的形式应用于所有的 crd。


集群建立之后,使用以下两个命令设置 Istio:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl apply --filename https://storage.googleapis.com/knative-releases/serving/latest/istio.yaml

kubectl label namespace default istio-injection=enabled

第一个命令将所有必需的 Istio 对象导入集群。第二个命令在 default 命名空间中启用 Istio 自动注入。这可以确保 Istio 在 default 命名空间中为每个 Pod 创建时自动注入边车(sidecar)。(你会注意到所有 Pod 至少都有两个容器。一个是用户的容器;一个是 istio-proxy。) Knative 依赖于 Istio 组件。使用以下命令验证 Istio 安装,直到所有 Pod 显示为运行或完成:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl get pods -n istio-system --watch

现在您已经使用 Istio 运行了集群,可以开始安装 Knative。使用 kubectl 命令安装 Knative 的核心组件 Serving 和 Build。YAML 声明文件可以从 Google Storage 或 GitHub 获取。您可以使用特定的版本或使用最新的 release 版本。下面的命令将从 Google Storage 中获取最新的版本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl apply --filename https://storage.googleapis.com/knative-releases/serving/latest/release.yaml

kubectl apply --filename https://storage.googleapis.com/knative-releases/build/latest/release.yaml

再次验证这些对象是否正确导入。使用以下命令监视它们,直到所有 Pod 显示为运行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl get pods --namespace knative-serving --watch

kubectl get pods --namespace knative-build --watch

小贴士:轻量安装

如果您正在本地机器上安装 Knative 或刚刚开始安装,您可能希望在不使用内置监控(在 monitoring 命名空间下)组件的情况下安装 Knative。在这种情况下,您可以使用以下命令来安装服务:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl apply --filename https://storage.googleapis.com/knative-releases/serving/latest/release-no-mon.yaml

这避免了在 monitoring 命名空间中安装任何组件。想要获取更多信息,请看 第7章指标和日志。


Serving 和 Build 安装完成并运行后,按照类似的步骤启动 Eventing 模块:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl apply --filename https://storage.googleapis.com/knative-releases/eventing/latest/release.yaml

kubectl get pods --namespace knative-eventing --watch

最后,你可以选择安装你需要的 Build 模板。这一步与第三章中的步骤完全相同。下面是安装 Kaniko 和 Buildpacks 模板的命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl apply -f https://raw.githubusercontent.com/knative/build-templates/master/kaniko/kaniko.yaml

kubectl apply -f https://raw.githubusercontent.com/knative/build-templates/master/buildpack/buildpack.yaml

须知

如果你计划使用 Build 模块将源代码打包到镜像中,你需要一个容器仓库来推送。在安装 Knative 的同时,考虑设置对所选容器仓库的访问。容器仓库你可以选择 Docker Hub 或谷歌容器仓库这样的公共托管方式,或者你也可以设置自己的私有仓库。有关访问和将镜像推送到仓库的更多信息,请参阅第4章中的 Build 组件。


您可以使用 kubectl get buildtemplates 命令验证 Build 模板是否已成功安装。这将返回 default 命名空间中安装的所有构建模板的列表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ kubectl get knative
NAME AGE
buildpack 1m
kaniko 1m

删除 Knative 对象

您可能希望在添加某些 Knative 组件之后删除它们。可以使用 kubectl delete 命令从集群中删除任何 Knative 对象。正如您使用 kubectl apply 引用 YAML 文件一样,您也可以使用 kubectl delete 执行相同的操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl delete -f https://raw.githubusercontent.com/knative/build-templates/master/kaniko/kaniko.yaml

Kubernetes 集群已启动。Istio 已经安装。已添加了 Serving 、 Build 和 Eventing 组件。您可能已经添加了一两个 Build 模板。您几乎已经准备好开始使用 Knative 了。剩下的只需要获取一些关于如何在网络上访问它的信息。

安装方法选择

本章中的步骤展示了如何使用本地的 kubectl apply 命令分别安装 Knative 组件。然而,一些构建在 Knative 之上的无服务器框架也可能包含安装系统的快捷方式。例如, riff 提供了一个在 Kubernetes 集群上安装和运行 Knative 的一行程序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
riff system install

这需要 riff CLI 和 Kubernetes 集群已经建立且 kubectl 已经指向正确的上下文。


访问 Knative 集群

设置好 Knative 集群之后,就可以将应用程序部署到 Knative 上了。但你需要知道如何使用它们。它们如何暴露在集群中?Knative 在 istio-system 命名空间中使用 LoadBalancer 方式。使用以下命令获取外部 IP 地址,列名:EXTERNAL-IP

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ kubectl get svc istio-ingressgateway --namespace istio-system
NAME                 TYPE         CLUSTER-IP   EXTERNAL-IP
istio-ingressgateway LoadBalancer 10.23.247.74 35.203.155.229

正如您将在第6章中看到的,这个 IP 地址加上正确的 HTTP HOST 头就可以向集群上的应用程序发起请求。为了方便使用,可以把外部 IP 地址设置为 KNATIVE_INGRESS 这个环境变量:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ export KNATIVE_INGRESS=$(kubectl get svc istio-ingressgateway --namespace istio-system --output 'jsonpath={.status.loadBalancer.ingress[0].ip}')

$ echo $KNATIVE_INGRESS
35.203.155.229

现在,使用与我们在第2章中看到的类似的 curl 命令,我们可以使用这个环境变量向 Knative 环境中的服务发出请求:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl -H "Host: my-knative-service-name.default.example.com" http://$KNATIVE_INGRESS

不支持 Load Balancer?

如果你的 Kubernetes 实例不支持 load balancer(比如:Minikube),命令会略有不同因为 EXTERNAL-IP 会显示为。使用以下命令返回节点的 IP 和端口:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ export KNATIVE_INGRESS=$(kubectl get node  --output 'jsonpath={.items[0].status.addresses[0].address}'):$(kubectl get svc istio-ingressgateway>  --namespace istio-system --output 'jsonpath={.spec.ports[?(@.port==80)].nodePort}')

$ echo $KNATIVE_IN
10.10.0.10:32380

结论

现在已经设置好了一切,可以将应用程序部署到 Knative 了。在第6章,您将看到一些不同的示例。您还将了解通过设置静态 IP、自定义域名以及 DNS 配置来公开集群的更健壮的方式。

END

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 伪架构师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Knative 入门系列1:knative 概述
Knative 是一个基于 Kubernetes 的,用于构建、部署和管理现代 serverless 应用的平台。Getting Started with Knative 是一本由 Pivotal 公司赞助 O’Reilly 出品的电子书,公众号后台回复”knative“获取下载地址。本书中文版由 ServiceMesher 社区自发翻译,从今天起 ServiceMesher 社区将陆续为大家推出本书的中文译文。
崔秀龙
2019/07/23
2.5K0
Knative 入门系列1:knative 概述
Knative入门系列6:Knative的使用
Knative 是一个基于 Kubernetes 的,用于构建、部署和管理现代 serverless 应用的平台。Getting Started with Knative 是一本由 Pivotal 公司赞助 O’Reilly 出品的电子书,公众号后台回复“knative”获取英文版下载地址。本书中文版由 ServiceMesher 社区自发翻译系列文章,这是该系列的第6章。
崔秀龙
2019/07/23
3.9K0
Isito 入门(二):Istio 的部署
本教程已加入 Istio 系列:https://istio.whuanle.cn
痴者工良
2023/07/21
1.7K0
Isito 入门(二):Istio 的部署
Knative 入门系列8:拓展与展望
Knative 是一个基于 Kubernetes 的,用于构建、部署和管理现代 serverless 应用的平台。Getting Started with Knative 是一本由 Pivotal 公司赞助 O’Reilly 出品的电子书,公众号后台回复“knative”获取英文版下载地址。本书中文版由 ServiceMesher 社区自发翻译系列文章,这是该系列的第8章,至此全书翻译完毕,我们将后续为大家提供PDF。
崔秀龙
2019/07/23
1.1K0
外包精通--Istio Ingress Gateway
在kubernetes环境中,kubernetes Ingress Resource常用来指定应该暴露给集群外部的服务。在一个Istio的服务网格中,最好的办法就是使用不同的配置模型,也就是Istio Gateway。一个gateway允许Istio的功能,比如监控和路由规则去应用到进入集群的流量 。
Godev
2023/06/22
8300
Knative 入门系列7:实战演练
Knative 是一个基于 Kubernetes 的,用于构建、部署和管理现代 serverless 应用的平台。Getting Started with Knative 是一本由 Pivotal 公司赞助 O’Reilly 出品的电子书,公众号后台回复“knative”获取英文版下载地址。本书中文版由 ServiceMesher 社区自发翻译系列文章,这是该系列的第7章。
崔秀龙
2019/07/23
1.8K0
Knative 入门系列7:实战演练
Knative 入门系列3:Build 介绍
Knative 的 Serving(服务)组件是解决如何从容器到 URL 的,而 Build 组件是解决如何从源代码到容器的。Build resource 允许您定义如何编译代码和构建容器,而不是指向预构建的容器镜像。这确保了在将代码发送到容器镜像库之前以一致的方式编译和打包代码。在本章中将会向你介绍一些新的组件:
崔秀龙
2019/07/23
2.6K0
Istio 系列篇二 | Istio 的安装以及入门使用
前面的 Istio 系列篇一 | 服务网格和 Istio ,主要让大家对 服务网格和 Istio 有个大概的了解。
gopher云原生
2022/02/23
4.6K0
Istio 系列篇二 | Istio 的安装以及入门使用
Knative 入门系列2:Serving 介绍
即便使用无服务器架构,处理和响应 HTTP 请求的能力依然重要。在开始写代码使用事件触发一个函数之前,您需要有地方来运行代码。
崔秀龙
2019/07/23
1.9K0
Knative 入门系列2:Serving 介绍
mac 上学习k8s系列(34)knative part I
knative是google基于k8s crd打造的serverless平台,knative 把整个系统分成了三个部分:
golangLeetcode
2022/08/02
3320
istio(1) - 安装测试
1. istio 版本选择 - 最新版 istio,参考 istio官网; - 历史版 istio,参考 istio 历史版本归档档案; - kubernetes 与 istio版本适配 最新版 (1.4.3), 由下图可知, 其支持kubernetes 1.13, 1.14, 1.15 三个版本. 5eb1edfc1dd642c095920a79a4184126-0338d77a7b9a4b9faa3ea8d09d47e089.png 历史版 (1.1.9), 由下图可知, 其支持kubernetes
惊羽-布壳儿
2022/06/15
8150
istio(1) - 安装测试
Istio 入门(三):体验 Istio、微服务部署、可观测性
在本章中,我们正式迈入学习 Istio 的第一步。因为 Istio 的知识体系是较为庞大的,因此我们可以先通过本章的入门教程快速了解如何使用 Istio 部署一套微服务,以及 Istio 核心功能的使用方法,了解 Istio 可以为微服务解决什么问题。
痴者工良
2023/07/24
2.1K0
Istio 入门(三):体验 Istio、微服务部署、可观测性
Knative快速入门与实践
Knative服务模块提供了简化的部署语法来使服务在Kubernetes集群中运行,并且这些服务具备根据HTTP负载自动扩容或者缩容到零的能力
yeedomliu
2022/03/29
1.6K0
Knative快速入门与实践
迈向 serverless 开发的第一步[每日前端夜话0xEE]
在本文的第一部分中,我们将讨论设置适合 Knative 0.6.0 版的开发环境。第二部分介绍第一个 serverless 微服务的部署。使用 Knative 创建 serverless 应用程序的基本要求是对 Kubernetes 的扎实知识。如果你没有经验,则应该学习官方的基本 Kubernetes 教程[1]。
疯狂的技术宅
2019/11/25
9120
istio-ingressgateway 学习
除了支持 Kubernetes Ingress,Istio还提供了另一种配置模式,Istio Gateway。与Ingress相比,Gateway提供了更广泛的自定义和灵活性,并允许将 Istio 功能(例如监控和路由规则)应用于进入集群的流量。
tanmx
2023/10/18
1.2K0
istio-ingressgateway 学习
Mesh1# istio安装与部署
Istio作为service mesh控制面的实施标准,先部署起来。然而会有一个坑要注意,否则无法访问到页面。这个坑是个示例的bug,已被人提了issue,我也被坑了一把。
瓜农老梁
2021/09/23
7670
Mesh1# istio安装与部署
(译)Knative:在 Kubernetes 上构建可移植 Serverless 平台
Kubernetes 目前如日中天,这一项目不仅在容器编排方面独占鳌头,还给基础设施自动化进程提供了可实践的原语。
崔秀龙
2019/07/23
1.7K0
(译)Knative:在 Kubernetes 上构建可移植 Serverless 平台
Service Mesh - Istio安装与部署
在当前版本Istio的安装与部署已经变得非常简单了,只需要几个简单的步骤就能将Istio环境搭建起来。首先要做的是下载Istio(在文档中核对Istio支持的k8s版本):
端碗吹水
2020/12/23
1.4K0
Service Mesh - Istio安装与部署
istio-4:使用istioctl方式部署istio-1.8.3全组件
2.2.2.安装grafana/jaeger/kiali/prometheus组件
千里行走
2021/03/18
1.4K0
istio 部署
下载地址:https://github.com/istio/istio/releases
星哥玩云
2022/09/15
1.1K0
istio 部署
相关推荐
Knative 入门系列1:knative 概述
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档