02-knative-serving部署

  • 示例环境
    • Kubernetes: v1.27.1
    • Knative: v1.12
    • networking layer: istio
  • 可用的部署方式
    • 基于YAML配置文档直接部署
      • Serving和Eventing需要分别进行部署
    • 借助Knative Operator进行部署
      • 首先部署Knative Operator
      • 通过Operator的KnativeServing部署Serving
      • 通过Operator的KnativeEventing资源部署Eventing
  • 需要部署的Knative组件
    • Serving
    • Eventing
    • kn

1.1 部署serving

  • 环境要求

    • For prototyping purposes
      • 单节点的Kubernetes集群,有2个可用的CPU核心,以及4g内存;
    • For production purposes
      • 单节点的Kubernetes集群,需要至少有6个CPU核心、6G内存和30G磁盘空间
      • 多节点的Kubernetes集群中,每个节点至少有2个CPU核心,4G内存和20G磁盘空间
      • Kubernetes版本最低为v1.26
  • 安装步骤

    • 部署Serving核心组件
    • 部署网络层(networking layer)组件
      • Istio、Contour、Kourier三选一
    • (可选)配置DNS
    • (可选) 部署Serving扩展
      • HPA:用于支持Kubernetes的HPA
      • Cert Manager:用于为工作负载自动签发TLS证书
      • Encrypt HTTP01:用于为工作负载自动签发TLS证书
  • 以YAML文件进行Serving部署

    • 参考官方文档:https://knative.dev/docs/install/yaml-install/serving/install-serving-with-yaml/

    • 部署serving的crd:

      kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.12.0/serving-crds.yaml
      
    • 部署serving核心组件

      kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.12.0/serving-core.yaml
      
    • 安装 a networking layer(这里以istio为例)

      kubectl apply -l knative.dev/crd-install=true -f https://github.com/knative/net-istio/releases/download/knative-v1.12.0/istio.yaml
      kubectl apply -f https://github.com/knative/net-istio/releases/download/knative-v1.12.0/istio.yaml
      kubectl apply -f https://github.com/knative/net-istio/releases/download/knative-v1.12.0/net-istio.yaml
      kubectl --namespace istio-system get service istio-ingressgateway
      
    • 配置DNS,因为我们是测试环境,所以选择"no dns",来配置,可以从集群外部访问的域名

      kubectl patch configmap/config-domain \--namespace knative-serving \--type merge \--patch '{"data":{"example.com":""}}'
      
    • 安装HPA控制器

      kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.12.0/serving-hpa.yaml
      
    • 安装kn

      wget https://github.com/knative/client/releases/download/knative-v1.11.2/kn-linux-amd64cp kn-linux-amd64 /usr/local/bin/knchmod +x /usr/local/bin/kn
      
    • 确认下载成功

      root@k-master01:~# kubectl get pods -n knative-serving
      NAME                                    READY   STATUS    RESTARTS   AGE
      activator-58b9474547-7nnh6              1/1     Running   0          18m
      autoscaler-c88f8c8dc-zfvjv              1/1     Running   0          18m
      autoscaler-hpa-5877fb58d6-84m5j         1/1     Running   0          64s
      controller-84cd85bcc-wg9q8              1/1     Running   0          18m
      net-istio-controller-79f97565f4-dc6m8   1/1     Running   0          2m34s
      net-istio-webhook-f7c89b4fd-jwcqs       1/1     Running   0          2m34s
      webhook-6bbbc5867c-dw7vs                1/1     Running   0          18m
      
      root@k-master01:~# kubectl get pods -n istio-system
      NAME                                    READY   STATUS    RESTARTS   AGE
      istio-ingressgateway-584c594ff8-2f8mg   1/1     Running   0          5m2s
      istio-ingressgateway-584c594ff8-7clr9   1/1     Running   0          5m2s
      istio-ingressgateway-584c594ff8-w7tq5   1/1     Running   0          5m2s
      istiod-78c4f7f756-kv4mh                 1/1     Running   0          5m2s
      istiod-78c4f7f756-kxbjw                 1/1     Running   0          4m47s
      istiod-78c4f7f756-pldrm                 1/1     Running   0          4m47s
      
    • 暴露istio-ingressgateway

      给node01上邦一个ip地址:

      ip addr add 192.168.58.100/24 dev ens33
      
       kubectl edit svc istio-ingressgateway -n istio-system
      

      在这里插入图片描述

  • 运行一个demo的service

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:name: hello
    spec:template:metadata:# This is the name of our new "Revision," it must follow the convention {service-name}-{revision-name}name: hello-worldspec:containers:#- image: gcr.io/knative-samples/helloworld-go- image: ikubernetes/helloworld-goports:- containerPort: 8080env:- name: TARGETvalue: "World"

    测试请求

    kubectl get ksvc
    

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    本机测试:

    curl -H "Host: hello.default.example.com" 192.168.58.100Hello World!
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/285086.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

福德植保无人机工厂:创新科技与绿色农业的完美结合

亲爱的读者们,欢迎来到福德植保无人机工厂的世界。这里,科技与农业的完美结合为我们描绘出一幅未来农业的新篇章。福德植保无人机工厂作为行业的领军者,以其领先的无人机技术,创新的理念,为我们展示了一种全新的农业服…

在openSUSE-Leap-15.5-DVD-x86_64中使用deepin-wine-6.0.0.62再使用微信3.9.5

在openSUSE-Leap-15.5-DVD-x86_64中使用deepin-wine-6.0.0.62再使用微信3.9.5 参考文章: 《记录-下fedora 33安装deepin qq和微信 ,不需要安装deepinwine》 https://tieba.baidu.com/p/7279470269 《opensuse使用virtualbox安装win10》 https://blog.c…

Linux---编辑器 vim

1. vim 的介绍 vim 是一款功能强大的文本编辑器,也是早年 Vi 编辑器的加强版,它的最大特色就是使用命令进行编辑,完全脱离了鼠标的操作。 2. vim 的工作模式 命令模式编辑模式末行模式 说明: vim 打开文件进入的是命令模式 工作模式效果…

Axure情形动作篇(ERP登录效验)

目录 一、ERP系统用户登录效验 1.1 完成步骤 1.2 最终效果 二、省市区联动 三、ERP菜单栏页面跳转 四、下拉加载效果实现 4.1 加载动画实现步骤 4.2 下划界面加载实现 4.3 最终效果 一、ERP系统用户登录效验 1.1 完成步骤 首先搭建ERP系统的登录界面(输入…

Kafka 数据乱序

每个broker队列最多能缓存5个没有应答的请求: 发送数据1,2,3,4,5。发送到3的时候没有应答成功,要重发,结果4先过来了,就导致乱序。 解决:开启幂等性 max.in.flight.req…

lua语法

lua语法 1.lua数据类型 lua 脚本输出乱码,将lua脚本改为UTF-8编码,并且需要DOS下修改代码页:CHCP 65001 即可。 基本语法 注释 print("script lua win")-- 单行注释--[[多行注释]]--标识符 类似于:java当中 变量、…

05_Web框架之Django二

Web框架之Django二 学习目标和内容 1、能够使用类视图的写法 2、能够使用模板语言的相关语法 3、能够理解过滤器的作用 4、能够理解并使用模板继承 一、类视图 1、类视图介绍 视图是一个可调用的对象,它接收一个请求然后返回一个响应,这个可调用对象可…

jieba-fenci 结巴分词原理讲解 segment

拓展阅读 DFA 算法详解 为了便于大家学习,项目开源地址如下,欢迎 forkstar 鼓励一下老马~ 敏感词 sensitive-word 分词 segment 分词的必要性 我们平时做文本分析,或者我个人想做一个繁简体转换/同义词替换等工具,分词都是必须…

13.FTP

FTP FTP配置 添加一个本地用户 设置个密码 服务类型是FTP 工作路径授权给用户 设置用户角色为网络管理员 开启FTP服务 R2的路径下有这些文件 在R1进行测试,输入刚才创建的用户密码 get 获取文件 put上传文件 也可以在PC进行访问 可以升级路由器系…

超级计算机与天气预报:精准预测的科技革命

超级计算机与天气预报:精准预测的科技革命 一、引言 随着科技的飞速发展,超级计算机已经成为现代社会不可或缺的一部分。它们在科研、工业、军事等领域发挥着重要作用,其中天气预报是一个颇具代表性的应用领域。本文将探讨超级计算机在天气…

MongoDB中的关系

本文主要介绍MongoDB中的关系。 目录 MongoDB的关系嵌入关系引用关系 MongoDB的关系 MongoDB是一个非关系型数据库,它使用了键值对的方式来存储数据。因此,MongoDB没有像传统关系型数据库中那样的表、行和列的概念。相反,MongoDB中的关系是通…

Java对象结构

Java 对象(Object 实例)结构包括三部分:对象头、对象体、对齐字节。 Object的三个部分 对象头包括三个字段,第一个字段叫做 Mark Word(标记字),用于存储自身运行时的数据 例如 GC 标志位、哈希码、锁状态等信息。 第二个字段叫做 Class Pointer(类对象…