在Knative中部署的服務異常了怎麼辦?不要擔憂,本文教你在 Knative 中一步步排查問題。web
檢查執行部署的命令輸出是否成功,若是執行命令部署中斷,能夠在輸出信息中查看部署失敗的緣由。通常這樣的錯誤都是因爲配置文件配置有問題致使的。例以下面的錯誤信息是因爲配置的流量比例不等於100致使的。api
Error from server (InternalError): error when applying patch: {"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"serving.knative.dev/v1alpha1\",\"kind\":\"Route\",\"metadata\":{\"annotations\":{},\"name\":\"route-example\",\"namespace\":\"default\"},\"spec\":{\"traffic\":[{\"configurationName\":\"configuration-example\",\"percent\":50}]}}\n"}},"spec":{"traffic":[{"configurationName":"configuration-example","percent":50}]}} to: &{0xc421d98240 0xc421e77490 default route-example STDIN 0xc421db0488 264682 false} for: "STDIN": Internal error occurred: admission webhook "webhook.knative.dev" denied the request: mutation failed: The route must have traffic percent sum equal to 100. ERROR: Non-zero return code '1' from command: Process exited with status 1
通常狀況下服務異常,能夠直接查看當前應用 Pod日誌信息。推薦使用日誌服務對日誌進行收集。這樣能夠直接在日誌服務中查看當前應用異常信息。app
查看當前應用 Pod 中 user-container 容器的日誌信息:oop
kubectl logs <pod-name> user-container
能夠經過下面的命令查看 Route 的 status 信息:spa
kubectl get route <route-name> --output yaml
經過status進行判斷,異常的狀況下能夠看到reason 信息命令行
檢查 Ingress 路由日誌
查看 Istio 網關 IP 地址信息code
kubectl get svc -n istio-system istio-ingressgateway
檢查是否有 EXTERNAL-IP ip, 若是沒有的話,通常狀況是因爲配額不足致使的。server
查看 Revision 信息,執行以下命令:ip
kubectl get revision <revision-name> --output yaml
若是服務正常,應該是以下信息:
conditions: - lastTransitionTime: 2019-08-20T07:52:59Z status: "True" type: Ready
執行命令:
$ kubectl get pods NAME READY STATUS RESTARTS AGE configuration-example-00001-deployment-659747ff99-9bvr4 2/2 Running 0 3h configuration-example-00002-deployment-5f475b7849-gxcht 1/2 CrashLoopBackOff 2 36s
繼續查看 Pod 的狀態:
kubectl get pod <pod-name> --output yaml
若是發現了containerStatuses中 user-container 異常,能夠經過上述【查看應用日誌】進行分析。
查看當前 Controller 組件是否正常
$kubectl -n knative-serving get pod NAME READY STATUS RESTARTS AGE activator-75b69857b7-6rnln 2/2 Running 2 21d autoscaler-674d79f79c-2zlmh 2/2 Running 1 21d autoscaler-hpa-679868bd9-zlk6t 1/1 Running 0 21d controller-5855f47556-qrfgd 1/1 Running 0 21d networking-istio-6c8d6774f8-944b7 1/1 Running 0 21d webhook-65f55b444f-stq28 1/1 Running 0 21d
查看 controller 中是否有異常信息輸出
kubectl -n knative-serving logs --tail=1000 controller-5855f47556-qrfgd
在部署 Knative 服務中可能會遇到各類問題,但願經過上面介紹的排查手段給你提供幫助。
本文爲雲棲社區原創內容,未經容許不得轉載。