【发布时间】:2020-12-22 09:47:36
【问题描述】:
我想在我的自托管系统上构建一个 gitlab + kubernetes 小型 gitops。但是当我尝试从 gitlab kubernetes 部分安装 nginx 入口时,我收到了这个错误:
Service is not ready: gitlab-managed-apps/ingress-nginx-ingress-controller
因为我使用的是自托管的 kubernetes,所以我需要修补 LoadBalancer nginx-ingress 服务。
kubectl patch svc ingress-nginx-ingress-controller -n gitlab-managed-apps -p '{"spec": {"type": "LoadBalancer", "externalIPs":["10.0.0.5","10.0.0.6","10.0.0.7"]}}'
但这并不能解决问题。
我检查这个命名空间中的事件:
18m Normal Started pod/ingress-nginx-ingress-default-backend-78dd5dc449-fpvwb Started container nginx-ingress-default-backend
18m Normal Created pod/ingress-nginx-ingress-default-backend-78dd5dc449-fpvwb Created container nginx-ingress-default-backend
18m Normal Started pod/ingress-nginx-ingress-controller-7fdc67ff64-spxsn Started container nginx-ingress-controller
18m Normal Created pod/ingress-nginx-ingress-controller-7fdc67ff64-spxsn Created container nginx-ingress-controller
18m Normal Pulled pod/ingress-nginx-ingress-controller-7fdc67ff64-spxsn Container image "quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.28.0" already present on machine
18m Normal Pulled pod/ingress-nginx-ingress-default-backend-78dd5dc449-fpvwb Container image "k8s.gcr.io/defaultbackend-amd64:1.5" already present on machine
18m Normal ExternalIP service/ingress-nginx-ingress-controller Count: 0 -> 3
13m Normal Killing pod/ingress-nginx-ingress-controller-7fdc67ff64-spxsn Stopping container nginx-ingress-controller
13m Normal Killing pod/ingress-nginx-ingress-default-backend-78dd5dc449-fpvwb Stopping container nginx-ingress-default-backend
13m Warning Unhealthy pod/ingress-nginx-ingress-default-backend-78dd5dc449-fpvwb Readiness probe failed: Get "http://192.168.126.172:8080/healthz": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
12m Warning Unhealthy pod/ingress-nginx-ingress-controller-7fdc67ff64-spxsn Readiness probe failed: HTTP probe failed with statuscode: 500
12m Warning Unhealthy pod/ingress-nginx-ingress-controller-7fdc67ff64-spxsn Liveness probe failed: HTTP probe failed with statuscode: 500
安装入口 pod 时生成的 Readines 和 Liveness 行,终止所有相关的 pod、服务。
来自安装入口 pod 的日志:
...
[tiller] 2020/09/02 22:41:21 performing install for ingress
[tiller] 2020/09/02 22:41:21 executing 0 crd-install hooks for ingress
[tiller] 2020/09/02 22:41:21 hooks complete for crd-install ingress
[tiller] 2020/09/02 22:41:21 executing 0 pre-install hooks for ingress
[tiller] 2020/09/02 22:41:21 hooks complete for pre-install ingress
[storage] 2020/09/02 22:41:21 getting release history for "ingress"
[storage] 2020/09/02 22:41:21 creating release "ingress.v1"
[kube] 2020/09/02 22:41:21 building resources from manifest
[kube] 2020/09/02 22:41:21 creating 10 resource(s)
[kube] 2020/09/02 22:41:21 beginning wait for 10 resources with timeout of 5m0s
[kube] 2020/09/02 22:41:23 Service is not ready: gitlab-managed-apps/ingress-nginx-ingress-controller
[kube] 2020/09/02 22:41:25 Service is not ready: gitlab-managed-apps/ingress-nginx-ingress-controller
[kube] 2020/09/02 22:41:27 Service is not ready: gitlab-managed-apps/ingress-nginx-ingress-controller
[kube] 2020/09/02 22:41:29 Service is not ready: gitlab-managed-apps/ingress-nginx-ingress-controller
...
当我开始安装 ingress 并修补服务时,ingress 工作,我可以对 ingressm 等进行查询。
【问题讨论】:
-
似乎 K8s 无法到达 pod 进行 helthcheck。那么,你为什么要修补入口? ingress 仅适用于云提供商,或者您使用
MetalLB之类的东西。 -
因为gitlab无法安装ingress其他模式。
标签: docker nginx kubernetes gitlab