kubernetes - Knative 大使 Ingress
问题描述
我正在尝试将 Knative 与大使一起使用。按照以下步骤安装 Knative,
安装 Knative
kubectl apply --filename https://github.com/knative/serving/releases/download/v0.13.0/serving-crds.yaml
kubectl apply --filename https://github.com/knative/serving/releases/download/v0.13.0/serving-core.yaml
配置大使,
kubectl set env --namespace ambassador deployments/ambassador AMBASSADOR_KNATIVE_SUPPORT=true
配置 Knative 使用 ambassdor 作为入口,
kubectl patch configmap/config-network --namespace knative-serving --type merge --patch '{"data":"ingress.class":"ambassador.ingress.networking.knative.dev"}}'
我已经在“ambassador-ns”命名空间下安装了大使。它工作正常。
部署 hello world 应用程序,
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"
当我检查 ksvc 的状态时,
NAME URL LATESTCREATED LATESTREADY READY REASON
helloworld-go http://helloworld-go.default.example.com helloworld-go-6794c helloworld-go-6794c Unknown IngressNotConfigured
Knative 控制器日志
{"level":"info","ts":"2020-03-25T09:54:43.255Z","logger":"controller.route-controller","caller":"route/route.go:125","msg":"Updating targeted revisions.","commit":"804b3bb","knative.dev/controller":"route-controller","knative.dev/traceid":"65e30cd6-9192-4eac-9d8f-a7f5e8bfa554","knative.dev/key":"default/helloworld-go"}
{"level":"info","ts":"2020-03-25T09:54:43.255Z","logger":"controller.route-controller","caller":"route/route.go:139","msg":"Creating placeholder k8s services","commit":"804b3bb","knative.dev/controller":"route-controller","knative.dev/traceid":"65e30cd6-9192-4eac-9d8f-a7f5e8bfa554","knative.dev/key":"default/helloworld-go"}
{"level":"info","ts":"2020-03-25T09:54:43.275Z","logger":"controller.serverlessservice-controller","caller":"controller/controller.go:403","msg":"Reconcile succeeded. Time taken: 51.103056ms.","commit":"804b3bb","knative.dev/controller":"serverlessservice-controller","knative.dev/traceid":"240b98b2-337a-442a-b9f3-b7900a56ddd8","knative.dev/key":"default/helloworld-go-6794c"}
{"level":"error","ts":"2020-03-25T09:54:43.275Z","logger":"controller.revision-controller","caller":"revision/reconciler.go:190","msg":"returned an error","commit":"804b3bb","knative.dev/controller":"revision-controller","knative.dev/traceid":"fe1694e1-576d-4cd5-9bbb-e97ee6d89a1c","knative.dev/key":"default/helloworld-go-6794c","targetMethod":"ReconcileKind","error":"failed to update deployment \"helloworld-go-6794c-deployment\": Operation cannot be fulfilled on deployments.apps \"helloworld-go-6794c-deployment\": the object has been modified; please apply your changes to the latest version and try again","stacktrace":"knative.dev/serving/pkg/client/injection/reconciler/serving/v1/revision.(*reconcilerImpl).Reconcile\n\tknative.dev/serving/pkg/client/injection/reconciler/serving/v1/revision/reconciler.go:190\nknative.dev/serving/vendor/knative.dev/pkg/controller.(*Impl).processNextWorkItem\n\tknative.dev/serving/vendor/knative.dev/pkg/controller/controller.go:394\nknative.dev/serving/vendor/knative.dev/pkg/controller.(*Impl).Run.func2\n\tknative.dev/serving/vendor/knative.dev/pkg/controller/controller.go:343"}
{"level":"error","ts":"2020-03-25T09:54:43.275Z","logger":"controller.revision-controller","caller":"controller/controller.go:409","msg":"Reconcile error","commit":"804b3bb","knative.dev/controller":"revision-controller","error":"failed to update deployment \"helloworld-go-6794c-deployment\": Operation cannot be fulfilled on deployments.apps \"helloworld-go-6794c-deployment\": the object has been modified; please apply your changes to the latest version and try again","stacktrace":"knative.dev/serving/vendor/knative.dev/pkg/controller.(*Impl).handleErr\n\tknative.dev/serving/vendor/knative.dev/pkg/controller/controller.go:409\nknative.dev/serving/vendor/knative.dev/pkg/controller.(*Impl).processNextWorkItem\n\tknative.dev/serving/vendor/knative.dev/pkg/controller/controller.go:395\nknative.dev/serving/vendor/knative.dev/pkg/controller.(*Impl).Run.func2\n\tknative.dev/serving/vendor/knative.dev/pkg/controller/controller.go:343"}
{"level":"info","ts":"2020-03-25T09:54:43.276Z","logger":"controller.revision-controller","caller":"controller/controller.go:396","msg":"Reconcile failed. Time taken: 23.651364ms.","commit":"804b3bb","knative.dev/controller":"revision-controller","knative.dev/traceid":"fe1694e1-576d-4cd5-9bbb-e97ee6d89a1c","knative.dev/key":"default/helloworld-go-6794c"}
{"level":"info","ts":"2020-03-25T09:54:43.276Z","logger":"controller.revision-controller.event-broadcaster","caller":"record/event.go:274","msg":"Event(v1.ObjectReference{Kind:\"Revision\", Namespace:\"default\", Name:\"helloworld-go-6794c\", UID:\"541cb07f-b8b2-4943-b9d8-a40c1cca8058\", APIVersion:\"serving.knative.dev/v1\", ResourceVersion:\"8558492\", FieldPath:\"\"}): type: 'Warning' reason: 'InternalError' failed to update deployment \"helloworld-go-6794c-deployment\": Operation cannot be fulfilled on deployments.apps \"helloworld-go-6794c-deployment\": the object has been modified; please apply your changes to the latest version and try again","commit":"804b3bb","knative.dev/controller":"revision-controller"}
{"level":"info","ts":"2020-03-25T09:54:43.277Z","logger":"controller.serverlessservice-controller","caller":"serverlessservice/serverlessservice.go:209","msg":"Endpoints helloworld-go-6794c has no ready endpoints","commit":"804b3bb","knative.dev/controller":"serverlessservice-controller","knative.dev/traceid":"71367ff7-4c31-4c20-aff3-5bc7afd7b652","knative.dev/key":"default/helloworld-go-6794c"}
{"level":"info","ts":"2020-03-25T09:54:43.277Z","logger":"controller.serverlessservice-controller","caller":"controller/controller.go:403","msg":"Reconcile succeeded. Time taken: 1.982714ms.","commit":"804b3bb","knative.dev/controller":"serverlessservice-controller","knative.dev/traceid":"71367ff7-4c31-4c20-aff3-5bc7afd7b652","knative.dev/key":"default/helloworld-go-6794c"}
{"level":"info","ts":"2020-03-25T09:54:43.283Z","logger":"controller.revision-controller","caller":"revision/reconcile_resources.go:135","msg":"Reconciling PA: helloworld-go-6794c","commit":"804b3bb","knative.dev/controller":"revision-controller","knative.dev/traceid":"5b724298-8fd8-4c5d-8cd2-630de6d4c211","knative.dev/key":"default/helloworld-go-6794c"}
{"level":"info","ts":"2020-03-25T09:54:43.283Z","logger":"controller.revision-controller","caller":"controller/controller.go:403","msg":"Reconcile succeeded. Time taken: 7.477253ms.","commit":"804b3bb","knative.dev/controller":"revision-controller","knative.dev/traceid":"5b724298-8fd8-4c5d-8cd2-630de6d4c211","knative.dev/key":"default/helloworld-go-6794c"}
{"level":"info","ts":"2020-03-25T09:54:43.292Z","logger":"controller.revision-controller","caller":"revision/reconcile_resources.go:135","msg":"Reconciling PA: helloworld-go-6794c","commit":"804b3bb","knative.dev/controller":"revision-controller","knative.dev/traceid":"dc621289-1c4c-4d7b-a56f-b07354a8b713","knative.dev/key":"default/helloworld-go-6794c"}
{"level":"info","ts":"2020-03-25T09:54:43.292Z","logger":"controller.revision-controller","caller":"controller/controller.go:403","msg":"Reconcile succeeded. Time taken: 8.72266ms.","commit":"804b3bb","knative.dev/controller":"revision-controller","knative.dev/traceid":"dc621289-1c4c-4d7b-a56f-b07354a8b713","knative.dev/key":"default/helloworld-go-6794c"}
{"level":"info","ts":"2020-03-25T09:54:43.352Z","logger":"controller.route-controller","caller":"route/route.go:163","msg":"Updating placeholder k8s services with ingress information","commit":"804b3bb","knative.dev/controller":"route-controller","knative.dev/traceid":"65e30cd6-9192-4eac-9d8f-a7f5e8bfa554","knative.dev/key":"default/helloworld-go"}
{"level":"warn","ts":"2020-03-25T09:54:43.352Z","logger":"controller.route-controller","caller":"route/reconcile_resources.go:159","msg":"Failed to update k8s service: failed to fetch loadbalancer domain/IP from ingress status","commit":"804b3bb","knative.dev/controller":"route-controller","knative.dev/traceid":"65e30cd6-9192-4eac-9d8f-a7f5e8bfa554","knative.dev/key":"default/helloworld-go"}
{"level":"info","ts":"2020-03-25T09:54:43.352Z","logger":"controller.route-controller","caller":"route/route.go:169","msg":"Route successfully synced","commit":"804b3bb","knative.dev/controller":"route-controller","knative.dev/traceid":"65e30cd6-9192-4eac-9d8f-a7f5e8bfa554","knative.dev/key":"default/helloworld-go"}
{"level":"info","ts":"2020-03-25T09:54:43.352Z","logger":"controller.route-controller","caller":"controller/controller.go:403","msg":"Reconcile succeeded. Time taken: 97.72538ms.","commit":"804b3bb","knative.dev/controller":"route-controller","knative.dev/traceid":"65e30cd6-9192-4eac-9d8f-a7f5e8bfa554","knative.dev/key":"default/helloworld-go"}
{"level":"info","ts":"2020-03-25T09:54:43.360Z","logger":"controller.revision-controller","caller":"revision/reconcile_resources.go:135","msg":"Reconciling PA: helloworld-go-6794c","commit":"804b3bb","knative.dev/controller":"revision-controller","knative.dev/traceid":"b198d7b8-f2d9-46a0-80d5-4f43e7ddf340","knative.dev/key":"default/helloworld-go-6794c"}
{"level":"info","ts":"2020-03-25T09:54:43.361Z","logger":"controller.revision-controller","caller":"controller/controller.go:403","msg":"Reconcile succeeded. Time taken: 10.355072ms.","commit":"804b3bb","knative.dev/controller":"revision-controller","knative.dev/traceid":"b198d7b8-f2d9-46a0-80d5-4f43e7ddf340","knative.dev/key":"default/helloworld-go-6794c"}
你能告诉我我做错了什么吗?
解决方案
大使 CRD 集群角色存在问题。
确保您在大使中有以下条目
- apiGroups: [ "networking.internal.knative.dev" ]
resources: [ "clusteringresses", "ingresses" ]
verbs: ["get", "list", "watch"]
- apiGroups: [ "networking.internal.knative.dev" ]
resources: [ "ingresses/status", "clusteringresses/status" ]
verbs: ["update"]
推荐阅读
- javascript - 输入中特定字符串的 CSS 规则
- react-native - 如何在 react-native 中实现动画搜索栏
- docker - Jenkins 无法安装插件 unknownhost
- unity3d - 在统一中,在运行时第二次烘焙导航网格会导致导航网格仅部分构建
- cassandra - 如何在 Javalin 应用程序中创建长寿的 cassandra CqlSession
- mysql - 为什么 MySql 的响应时间与数据库中的时间不同?
- reactjs - Antd 请求中的 CORS 问题未通过 CORS 但 fetch() 确实通过
- javascript - 使用 React 版本 17.xx 的 PWA
- javascript - 将 Alpine 组件转换为 React
- string - 如何将字符串格式与数组/列表结合起来?