前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >knative serving 入门 - hello world

knative serving 入门 - hello world

作者头像
有点技术
发布2020-07-13 11:25:18
8070
发布2020-07-13 11:25:18
举报
文章被收录于专栏:有点技术有点技术

Knative有两个组件,可以独立安装或一起使用。为了帮助您挑选适合自己的组件,以下是每个组件的简要说明:

•Serving 为基于无状态请求的服务提供了一种零扩展抽象。•Eventing提供了抽象来启用绑定事件源(例如Github Webhooks,Kafka)和使用者(例如Kubernetes或Knative Services)的绑定。

Knative还具有一个Observability插件,该插件提供了标准工具,可用于查看Knative上运行的软件的运行状况

本文将安装Serving后运行一个hello world程序

先决条件

本指南假定您要在Kubernetes群集上安装上游Knative版本。越来越多的供应商已经管理Knative产品。有关完整列表,请参见Knative产品页面。

Knative v0.15.0需要Kubernetes集群v1.15或更高版本,以及兼容的kubectl。本指南假定您已经创建了Kubernetes集群,并且在Mac或Linux环境中使用bash。在Windows环境中需要调整一些命令

安装Serving组件

1.使用以下命令安装crd

代码语言:javascript
复制
kubectl apply --filename https://github.com/knative/serving/releases/download/v0.15.0/serving-crds.yaml

2.serving的安装核心组件

代码语言:javascript
复制
kubectl apply --filename https://github.com/knative/serving/releases/download/v0.15.0/serving-core.yaml

3.安装网络层

•安装contour

代码语言:javascript
复制
kubectl apply --filename https://github.com/knative/net-contour/releases/download/v0.15.0/contour.yaml

•安装knative contour controller

代码语言:javascript
复制
kubectl apply --filename https://github.com/knative/net-contour/releases/download/v0.15.0/net-contour.yaml

•配置knativeserving使用Contour

代码语言:javascript
复制
kubectl patch configmap/config-network \
  --namespace knative-serving \
  --type merge \
  --patch '{"data":{"ingress.class":"contour.ingress.networking.knative.dev"}}'

•获取ip

代码语言:javascript
复制
kubectl --namespace contour-external get service envoy

1.配置DNS

因为我们使用kind安装此步骤跳过

配置服务

代码语言:javascript
复制
配置文件指定有关应用程序的元数据,指向要部署的应用程序的托管镜像,并允许deployment可配置,
创建一个名为service.yaml的新文件。

apiVersion: serving.knative.dev/v1 # Current version of Knative
kind: Service
metadata:
  name: helloworld-go # The name of the app
  namespace: default # The namespace the app will use
spec:
  template:
    spec:
      containers:
        - image: gcr.io/knative-samples/helloworld-go # The URL to the image of the app
          env:
            - name: TARGET # The environment variable printed out by the sample app
              value: "Go Sample v1"

部署应用

kubectl apply --filename service.yaml

现在,您的服务已创建,Knative将执行以下步骤:

•为此版本的应用程序创建一个新的不变版本。•执行网络编程,为您的应用创建路由,ingress,service,load balancer。•根据流量自动扩缩Pod,包括将活动Pod调整为零

刚部署完pod数量为1,过一段时间后可以看到pod索容为0

与应用交互

•交互 因为我们使用的是kind所以启动一个centos与我们的服务进行交互

代码语言:javascript
复制
kubectl run centos --image=centos -- sleep 10d
kubectl exec -it centos bash
curl helloworld-go.default
Hello Go Sample v1!

•查看contour httpproxy

代码语言:javascript
复制
kubectl get httpproxy
NAME                                                    FQDN                                      TLS SECRET   STATUS   STATUS DESCRIPTION
helloworld-go-helloworld-go.default                     helloworld-go.default                                  valid    valid HTTPProxy
helloworld-go-helloworld-go.default.example.com         helloworld-go.default.example.com                      valid    valid HTTPProxy
helloworld-go-helloworld-go.default.svc                 helloworld-go.default.svc                              valid    valid HTTPProxy
helloworld-go-helloworld-go.default.svc.cluster.local   helloworld-go.default.svc.cluster.local                valid    valid HTTPProxy

•查看svc

代码语言:javascript
复制
 kubectl get svc
NAME                          TYPE           CLUSTER-IP       EXTERNAL-IP                                PORT(S)                             AGE
helloworld-go                 ExternalName   <none>           envoy.contour-internal.svc.cluster.local   <none>                              63s

可见knative coutour controller 创建了一个ExternalName类型的svc,cname到了envoy.contour-internal.svc.cluster.local,也就是我们的代理服务,这样我们在内部就可以通过内部域名直接访问我们的服务

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

本文分享自 有点技术 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 先决条件
  • 安装Serving组件
  • 配置服务
  • 部署应用
    • 与应用交互
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档