Skip to content

Latest commit

 

History

History
195 lines (152 loc) · 5.29 KB

install.md

File metadata and controls

195 lines (152 loc) · 5.29 KB

本指南将引导您完成最新版本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.安装网络层

- 安装contour

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

- 安装knative contour controller

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

- 配置knativeserving使用Contour

kubectl patch configmap/config-network \
  --namespace knative-serving \
  --type merge \
  --patch '{"data":{"ingress.class":"contour.ingress.networking.knative.dev"}}'
  
- 获取ip

kubectl --namespace contour-external get service envoy
  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