安装Knative

本指南将引导您完成最新版本Knative的安装。

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

  • Serving 为基于无状态请求的服务提供了一种零扩展抽象。

  • Eventing提供了抽象来启用绑定事件源(例如Github Webhooks,Kafka)和使用者(例如Kubernetes或Knative Services)的绑定。

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

在你开始之前

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

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

安装Serving组件

1.使用以下命令安装crd

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

2.serving的安装核心组件

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

3.安装网络层

  1. 配置DNS

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

安装Eventing组件

1.安装crd

kubectl apply  --selector knative.dev/crd-install=true \
--filename https://github.com/knative/eventing/releases/download/v0.15.0/eventing.yaml

2.安装Eventing组件

kubectl apply --filename https://github.com/knative/eventing/releases/download/v0.15.0/eventing.yaml

3.安装默认channel

这里选用kafka

  • 创建kafka命名空间

  kubectl create namespace kafka
  • 安装Strimzi operator

  curl -L "https://github.com/strimzi/strimzi-kafka-operator/releases/download/0.16.2/strimzi-cluster-operator-0.16.2.yaml" \
    | sed 's/namespace: .*/namespace: kafka/' \
    | kubectl -n kafka apply -f -
  • 查看kafka的yaml

  apiVersion: kafka.strimzi.io/v1beta1
  kind: Kafka
  metadata:
    name: my-cluster
  spec:
    kafka:
      version: 2.4.0
      replicas: 1
      listeners:
        plain: {}
        tls: {}
      config:
        offsets.topic.replication.factor: 1
        transaction.state.log.replication.factor: 1
        transaction.state.log.min.isr: 1
        log.message.format.version: "2.4"
      storage:
        type: ephemeral
    zookeeper:
      replicas: 3
      storage:
        type: ephemeral
    entityOperator:
      topicOperator: {}
      userOperator: {}
  • 部署

    kubectl apply -n kafka -f kafka.yaml
  • 检查kafka集群状态

    $ kubectl get pods -n kafka
    NAME                                          READY   STATUS    RESTARTS   AGE
    my-cluster-entity-operator-65995cf856-ld2zp   3/3     Running   0          102s
    my-cluster-kafka-0                            2/2     Running   0          2m8s
    my-cluster-zookeeper-0                        2/2     Running   0          2m39s
    my-cluster-zookeeper-1                        2/2     Running   0          2m49s
    my-cluster-zookeeper-2                        2/2     Running   0          2m59s
    strimzi-cluster-operator-77555d4b69-sbrt4     1/1     Running   0          3m14s
  • 安装kafkachannel

    curl -L "https://github.com/knative/eventing-contrib/releases/download/v0.15.0/kafka-channel.yaml" \
    | sed 's/REPLACE_WITH_CLUSTER_URL/my-cluster-kafka-bootstrap.kafka:9092/' \
    | kubectl apply --filename -
  • 安装broker

    kubectl apply --filename https://github.com/knative/eventing/releases/download/v0.15.0/channel-broker.yaml
  • 配置使用的broker

    apiVersion: v1
    kind: ConfigMap
    metadata:
    name: config-br-defaults
    namespace: knative-eventing
    data:
    default-br-config: |
      # This is the cluster-wide default broker channel.
      clusterDefault:
        brokerClass: ChannelBasedBroker
        apiVersion: v1
        kind: ConfigMap
        name: kafka-channel
        namespace: knative-eventing
  • broker具体配置

  apiVersion: v1
  kind: ConfigMap
  metadata:
    name: imc-channel
    namespace: knative-eventing
  data:
    channelTemplateSpec: |
      apiVersion: messaging.knative.dev/v1beta1
      kind: InMemoryChannel
  ---
  apiVersion: v1
  kind: ConfigMap
  metadata:
    name: kafka-channel
    namespace: knative-eventing
  data:
    channelTemplateSpec: |
      apiVersion: messaging.knative.dev/v1alpha1
      kind: KafkaChannel
      spec:
        numPartitions: 3
        replicationFactor: 1

查看 eventing组件状态

kubectl get pods --namespace knative-eventing

Last updated