0

我正在尝试 knative 序列/并行流。

我从官方网站中提到的发布 v1.1 的序列示例开始,我创建了文档中提到的步骤、序列和 pingSource,但 pingSource 失败,因为序列未启动。

序列有以下异常

Events:
  Type     Reason        Age              From                 Message
  ----     ------        ----             ----                 -------
  Warning  UpdateFailed  8s (x6 over 8s)  sequence-controller  Failed to update status for "sequence": Sequence.flows.knative.dev "sequence" is invalid: [status.channelStatuses: Invalid value: "null": status.channelStatuses in body must be of type array: "null", status.subscriptionStatuses: Invalid value: "null": status.subscriptionStatuses in body must be of type array: "null"]
  Warning  UpdateFailed  3s (x5 over 8s)  sequence-controller  Failed to update status for "sequence": Sequence.flows.knative.dev "sequence" is invalid: [status.subscriptionStatuses: Invalid value: "null": status.subscriptionStatuses in body must be of type array: "null", status.channelStatuses: Invalid value: "null": status.channelStatuses in body must be of type array: "null"]

但步骤运行良好

NAME                                     TYPE           CLUSTER-IP      EXTERNAL-IP                            PORT(S)                                      AGE
service/first                            ExternalName   <none>          first.varadhi.example.com              80/TCP                                       9m46s
service/first-00001                      ClusterIP      10.96.116.201   <none>                                 80/TCP                                       9m51s
service/first-00001-private              ClusterIP      10.96.155.146   <none>                                 80/TCP,9090/TCP,9091/TCP,8022/TCP,8012/TCP   9m51s
service/second                           ExternalName   <none>          second.varadhi.example.com             80/TCP                                       9m45s
service/second-00001                     ClusterIP      10.96.208.230   <none>                                 80/TCP                                       9m51s
service/second-00001-private             ClusterIP      10.96.171.83    <none>                                 80/TCP,9090/TCP,9091/TCP,8022/TCP,8012/TCP   9m51s
service/third                            ExternalName   <none>          third.varadhi.example.com              80/TCP                                       9m45s
service/third-00001                      ClusterIP      10.96.131.110   <none>                                 80/TCP                                       9m51s
service/third-00001-private              ClusterIP      10.96.55.219    <none>                                 80/TCP,9090/TCP,9091/TCP,8022/TCP,8012/TCP   9m51s

NAME                                                READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/first-00001-deployment              0/0     0            0           9m52s
deployment.apps/second-00001-deployment             0/0     0            0           9m52s
deployment.apps/third-00001-deployment              0/0     0            0           9m52s

NAME                                                           DESIRED   CURRENT   READY   AGE
replicaset.apps/first-00001-deployment-594dc84cb8              0         0         0       9m52s
replicaset.apps/second-00001-deployment-79d9f8b7b8             0         0         0       9m52s
replicaset.apps/third-00001-deployment-7479456fdf              0         0         0       9m51s

NAME                                                  URL   AGE   READY     REASON
channel.messaging.knative.dev/varadhi-inmem-channel         26h   Unknown   NewObservedGenFailure

NAME                                           URL                                           LATESTCREATED            LATESTREADY              READY     REASON
service.serving.knative.dev/first              http://first.varadhi.example.com              first-00001              first-00001              Unknown   IngressNotConfigured
service.serving.knative.dev/second             http://second.varadhi.example.com             second-00001             second-00001             Unknown   IngressNotConfigured
service.serving.knative.dev/third              http://third.varadhi.example.com              third-00001              third-00001              Unknown   IngressNotConfigured

NAME                                                  CONFIG NAME        K8S SERVICE NAME   GENERATION   READY   REASON             ACTUAL REPLICAS   DESIRED REPLICAS
revision.serving.knative.dev/first-00001              first                                 1            True                       0                 0
revision.serving.knative.dev/second-00001             second                                1            True                       0                 0
revision.serving.knative.dev/third-00001              third                                 1            True                       0                 0

NAME                                                 LATESTCREATED            LATESTREADY              READY   REASON
configuration.serving.knative.dev/first              first-00001              first-00001              True
configuration.serving.knative.dev/second             second-00001             second-00001             True
configuration.serving.knative.dev/third              third-00001              third-00001              True

NAME                                         URL                                           READY     REASON
route.serving.knative.dev/first              http://first.varadhi.example.com              Unknown   IngressNotConfigured
route.serving.knative.dev/second             http://second.varadhi.example.com             Unknown   IngressNotConfigured
route.serving.knative.dev/third              http://third.varadhi.example.com              Unknown   IngressNotConfigured

在 knative 序列上花了很多时间后,我决定尝试 knative 并行

我参考了 v1.1 的并行官方文档并使用了多个分支示例我创建了过滤器、转换器、并行和 pingSource 但这里并行也没有出现以下异常

Events:
  Type     Reason        Age                   From                 Message
  ----     ------        ----                  ----                 -------
  Warning  UpdateFailed  6m37s (x18 over 17m)  parallel-controller  Failed to update status for "odd-even-parallel": Parallel.flows.knative.dev "odd-even-parallel" is invalid: status.branchStatuses: Invalid value: "null": status.branchStatuses in body must be of type array: "null"

在这里,并行和序列也正常运行。

有没有人遇到过类似的问题,或者我错过了官方文档中的任何内容?

环境信息:

  • 使用种类集群
  • 使用本地 docker 注册表(已绕过对图像的摘要检查)
  • 命名空间:varadhi
  • Serving 和 Eventing CRDS 是 knative v1.1

编辑#1

我没有显式创建任何通道,也没有看到控制器隐式创建任何通道

kubectl get channel -n varadhi 
No resources found in varadhi namespace. 

我的默认频道也是 InMemoryChannel

anil.gowda@faas-dev-kafka-8420816:~/knative$ kubectl get configmaps -n knative-eventing  default-ch-webhook -o yaml
apiVersion: v1
data:
  default-ch-config: |
    clusterDefault:
      apiVersion: messaging.knative.dev/v1
      kind: InMemoryChannel
    namespaceDefaults:
      varadhi:
        apiVersion: messaging.knative.dev/v1
        kind: InMemoryChannel
kind: ConfigMap

平行 :

使用示例:https ://github.com/knative/docs/tree/main/code-samples/eventing/parallel/multiple-branches

地位

NAME                                     TYPE           CLUSTER-IP      EXTERNAL-IP                            PORT(S)                                      AGE
service/even-filter                      ExternalName   <none>          even-filter.varadhi.example.com        80/TCP                                       4d19h
service/even-filter-00001                ClusterIP      10.96.85.252    <none>                                 80/TCP                                       4d19h
service/even-filter-00001-private        ClusterIP      10.96.98.109    <none>                                 80/TCP,9090/TCP,9091/TCP,8022/TCP,8012/TCP   4d19h
service/even-transformer                 ExternalName   <none>          even-transformer.varadhi.example.com   80/TCP                                       4d19h
service/even-transformer-00001           ClusterIP      10.96.152.53    <none>                                 80/TCP                                       4d19h
service/even-transformer-00001-private   ClusterIP      10.96.130.58    <none>                                 80/TCP,9090/TCP,9091/TCP,8022/TCP,8012/TCP   4d19h
service/event-display                    ExternalName   <none>          event-display.varadhi.example.com      80/TCP                                       4d19h
service/event-display-00001              ClusterIP      10.96.237.175   <none>                                 80/TCP                                       4d19h
service/event-display-00001-private      ClusterIP      10.96.81.3      <none>                                 80/TCP,9090/TCP,9091/TCP,8022/TCP,8012/TCP   4d19h
service/odd-filter                       ExternalName   <none>          odd-filter.varadhi.example.com         80/TCP                                       4d19h
service/odd-filter-00001                 ClusterIP      10.96.84.239    <none>                                 80/TCP                                       4d19h
service/odd-filter-00001-private         ClusterIP      10.96.16.17     <none>                                 80/TCP,9090/TCP,9091/TCP,8022/TCP,8012/TCP   4d19h
service/odd-transformer                  ExternalName   <none>          odd-transformer.varadhi.example.com    80/TCP                                       4d19h
service/odd-transformer-00001            ClusterIP      10.96.61.11     <none>                                 80/TCP                                       4d19h
service/odd-transformer-00001-private    ClusterIP      10.96.203.185   <none>                                 80/TCP,9090/TCP,9091/TCP,8022/TCP,8012/TCP   4d19h
service/odd-transformer-00002            ClusterIP      10.96.115.147   <none>                                 80/TCP                                       4d19h
service/odd-transformer-00002-private    ClusterIP      10.96.235.117   <none>                                 80/TCP,9090/TCP,9091/TCP,8022/TCP,8012/TCP   4d19h

NAME                                                READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/even-filter-00001-deployment        0/0     0            0           4d19h
deployment.apps/even-transformer-00001-deployment   0/0     0            0           4d19h
deployment.apps/event-display-00001-deployment      0/0     0            0           4d19h
deployment.apps/odd-filter-00001-deployment         0/0     0            0           4d19h
deployment.apps/odd-transformer-00001-deployment    0/0     0            0           4d19h
deployment.apps/odd-transformer-00002-deployment    0/0     0            0           4d19h

NAME                                                           DESIRED   CURRENT   READY   AGE
replicaset.apps/even-filter-00001-deployment-6b7bdd866f        0         0         0       4d19h
replicaset.apps/even-transformer-00001-deployment-666bf9d776   0         0         0       4d19h
replicaset.apps/event-display-00001-deployment-758c9f7595      0         0         0       4d19h
replicaset.apps/odd-filter-00001-deployment-c86bd4799          0         0         0       4d19h
replicaset.apps/odd-transformer-00001-deployment-6bf46bc88f    0         0         0       4d19h
replicaset.apps/odd-transformer-00002-deployment-5c5f7b8b75    0         0         0       4d19h

NAME                                           URL   AGE     READY   REASON
parallel.flows.knative.dev/odd-even-parallel         4d19h

NAME                                  URL   AGE   READY   REASON

NAME                                                 LATESTCREATED            LATESTREADY              READY   REASON
configuration.serving.knative.dev/even-filter        even-filter-00001        even-filter-00001        True
configuration.serving.knative.dev/even-transformer   even-transformer-00001   even-transformer-00001   True
configuration.serving.knative.dev/event-display      event-display-00001      event-display-00001      True
configuration.serving.knative.dev/odd-filter         odd-filter-00001         odd-filter-00001         True
configuration.serving.knative.dev/odd-transformer    odd-transformer-00002    odd-transformer-00002    True

NAME                                         URL                                           READY     REASON
route.serving.knative.dev/even-filter        http://even-filter.varadhi.example.com        Unknown   IngressNotConfigured
route.serving.knative.dev/even-transformer   http://even-transformer.varadhi.example.com   Unknown   IngressNotConfigured
route.serving.knative.dev/event-display      http://event-display.varadhi.example.com      Unknown   IngressNotConfigured
route.serving.knative.dev/odd-filter         http://odd-filter.varadhi.example.com         Unknown   IngressNotConfigured
route.serving.knative.dev/odd-transformer    http://odd-transformer.varadhi.example.com    Unknown   IngressNotConfigured

NAME                                           URL                                           LATESTCREATED            LATESTREADY              READY     REASON
service.serving.knative.dev/even-filter        http://even-filter.varadhi.example.com        even-filter-00001        even-filter-00001        Unknown   IngressNotConfigured
service.serving.knative.dev/even-transformer   http://even-transformer.varadhi.example.com   even-transformer-00001   even-transformer-00001   Unknown   IngressNotConfigured
service.serving.knative.dev/event-display      http://event-display.varadhi.example.com      event-display-00001      event-display-00001      Unknown   IngressNotConfigured
service.serving.knative.dev/odd-filter         http://odd-filter.varadhi.example.com         odd-filter-00001         odd-filter-00001         Unknown   IngressNotConfigured
service.serving.knative.dev/odd-transformer    http://odd-transformer.varadhi.example.com    odd-transformer-00002    odd-transformer-00002    Unknown   IngressNotConfigured

NAME                                                  CONFIG NAME        K8S SERVICE NAME   GENERATION   READY   REASON             ACTUAL REPLICAS   DESIRED REPLICAS
revision.serving.knative.dev/even-filter-00001        even-filter                           1            True                       0                 0
revision.serving.knative.dev/even-transformer-00001   even-transformer                      1            True                       0                 0
revision.serving.knative.dev/event-display-00001      event-display                         1            True                       0                 0
revision.serving.knative.dev/odd-filter-00001         odd-filter                            1            True                       0                 0
revision.serving.knative.dev/odd-transformer-00001    odd-transformer                       1            False   ImagePullBackOff   0
revision.serving.knative.dev/odd-transformer-00002    odd-transformer                       2            True                       0                 0

NAME                                         SINK   SCHEDULE      AGE     READY   REASON
pingsource.sources.knative.dev/ping-source          */1 * * * *   4d19h   False   NotFound

编辑#2 我安装了更多的事件 crds (eventing.yaml)

我现在可以看到的变化很少。

正在创建频道并且其状态为 true

NAME                                                                    URL                                                                           AGE   READY   REASON
inmemorychannel.messaging.knative.dev/odd-even-parallel-kn-parallel     http://odd-even-parallel-kn-parallel-kn-channel.varadhi.svc.cluster.local     73m   True
inmemorychannel.messaging.knative.dev/odd-even-parallel-kn-parallel-0   http://odd-even-parallel-kn-parallel-0-kn-channel.varadhi.svc.cluster.local   73m   True
inmemorychannel.messaging.knative.dev/odd-even-parallel-kn-parallel-1   http://odd-even-parallel-kn-parallel-1-kn-channel.varadhi.svc.cluster.local   73m   True
inmemorychannel.messaging.knative.dev/sequence-kn-sequence-0            http://sequence-kn-sequence-0-kn-channel.varadhi.svc.cluster.local            70m   True
inmemorychannel.messaging.knative.dev/sequence-kn-sequence-1            http://sequence-kn-sequence-1-kn-channel.varadhi.svc.cluster.local            50m   True
inmemorychannel.messaging.knative.dev/sequence-kn-sequence-2            http://sequence-kn-sequence-2-kn-channel.varadhi.svc.cluster.local            50m   True

但序列和并行尚未处于真实状态,他们说订阅未就绪

$ kubectl -n varadhi get sequence
NAME       URL                                                                  AGE   READY     REASON
sequence   http://sequence-kn-sequence-0-kn-channel.varadhi.svc.cluster.local   71m   Unknown   SubscriptionsNotReady
$ kubectl -n varadhi get parallel
NAME                URL                                                                         AGE     READY   REASON
odd-even-parallel   http://odd-even-parallel-kn-parallel-kn-channel.varadhi.svc.cluster.local   5d21h   False   SubscriptionsNotReady

在进一步调试时,我可以依次看到以下消息

Ready:
      Last Transition Time:  2022-01-12T08:19:17Z
      Message:               Failed to get subscription status: subscription "sequence-kn-sequence-0" not present in channel "sequence-kn-sequence-0" subscriber's list
      Reason:                SubscriptionNotMarkedReadyByChannel
      Status:                Unknown
      Type:                  Ready
    Subscription:
      Name:       sequence-kn-sequence-0
      Namespace:  varadhi

并在查看频道时,它会给出以下消息

   Last Transition Time:  2022-01-12T08:19:17Z
    Message:               The status of Dispatcher Deployment is False: MinimumReplicasUnavailable : Deployment does not have minimum availability.
    Reason:                DispatcherDeploymentFalse
    Severity:              Info
    Status:                False
    Type:                  DispatcherReady

看起来频道无法获取服务部署状态

我也安装了 Kourier 但我看不到外部 IP。请注意,我正在为此运行我自己的集群。

$ kubectl --namespace kourier-system get service kourier
NAME      TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
kourier   LoadBalancer   10.96.112.238   <pending>     80:32002/TCP,443:32733/TCP   73m
$
$ kubectl get pods -n knative-serving
NAME                                      READY   STATUS    RESTARTS   AGE
activator-d4cd7dfd5-mcxsl                 1/1     Running   0          7d18h
autoscaler-69689d8b7-rx75h                1/1     Running   0          7d18h
controller-766f74d9f8-fwdk9               1/1     Running   0          7d18h
domain-mapping-7dbbb5c7d-xk5m5            1/1     Running   0          7d18h
domainmapping-webhook-747f79dbdc-qm5nn    1/1     Running   0          7d18h
net-kourier-controller-5657664b99-zr9cj   1/1     Running   0          73m
webhook-8f6866966-8z8tt                   1/1     Running   0          7d18h

安装 kourier 后服务几乎没有变化

$ kubectl get service.serving.knative.dev -n varadhi
NAME               URL                                           LATESTCREATED            LATESTREADY              READY     REASON
even-filter        http://even-filter.varadhi.example.com        even-filter-00001        even-filter-00001        Unknown
even-transformer   http://even-transformer.varadhi.example.com   even-transformer-00001   even-transformer-00001   Unknown
event-display      http://event-display.varadhi.example.com      event-display-00001      event-display-00001      Unknown
first              http://first.varadhi.example.com              first-00001              first-00001              Unknown
odd-filter         http://odd-filter.varadhi.example.com         odd-filter-00001         odd-filter-00001         Unknown
odd-transformer    http://odd-transformer.varadhi.example.com    odd-transformer-00002    odd-transformer-00002    Unknown
second             http://second.varadhi.example.com             second-00001             second-00001             Unknown
third              http://third.varadhi.example.com              third-00001              third-00001              Unknown

IngressNotConfigured 状态消失。

4

2 回答 2

0

在您的序列和并行输出中,可以发现服务问题:

service.serving.knative.dev/even-filter        http://even-filter.varadhi.example.com        even-filter-00001        even-filter-00001        Unknown   IngressNotConfigured

尽管 Knative Eventing 不依赖于 Serving,但序列/并行的示例需要正确安装,因为它们使用无服务器服务:

  • 序列示例:事件显示,第一,第二和第三
  • 并行示例:事件显示、偶数滤波器、偶数转换器、奇数滤波器偶数转换器。

Eventing 可以使用常规的 kubernetes 服务而不是 knative 服务,但我认为让示例为您工作的最佳方法是确保 Knative Serving 按预期工作。

您是否为 Knative Serving 配置了网络提供商?如果你没有,你可以通过这个步骤:

https://knative.dev/docs/install/serving/install-serving-with-yaml/#install-a-networking-layer

如果您对选择哪一个有疑问,我会选择由 Knative 项目维护的 Kourier。

于 2022-01-11T16:31:18.190 回答
0

对于序列示例,我认为您的默认频道配置可能有问题。

序列创建通道以在每个步骤之间进行通信,预计为该示例创建三个通道:

$ kubectl get channel

inmemorychannel.messaging.knative.dev/sequence-kn-sequence-0           http://sequence-kn-sequence-0-kn-channel.default.svc.cluster.local           56s   True    
inmemorychannel.messaging.knative.dev/sequence-kn-sequence-1           http://sequence-kn-sequence-1-kn-channel.default.svc.cluster.local           56s   True    
inmemorychannel.messaging.knative.dev/sequence-kn-sequence-2           http://sequence-kn-sequence-2-kn-channel.default.svc.cluster.local           56s   True    

您能否查看为您创建的频道及其状态?

您还可以确保您的默认频道设置正确吗?请参阅: https ://knative.dev/docs/eventing/channels/channel-types-defaults/

您也可以在此处发布您正在使用的Parallel吗?状态由控制器来填充,这听起来像是一个问题。

于 2022-01-06T13:16:39.677 回答