服务尚未就绪:gitlab-managed-apps / ingress-nginx-ingress-controller

问题描述

我想在自己的托管系统上构建一个gitlab + kubernetes小gitop。但是当我尝试从gitlab kubernetes部分安装nginx ingress时,出现此错误:

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终止所有相关的pod,服务时,将生成Readines和Liveness行。

来自安装入口容器的日志:

...

[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

...

当我开始安装入口并修补服务时,入口就可以正常工作了,我可以查询入口等。

解决方法

发布日志(安装过程中):

kubectl logs pod/install-ingress-nginx -n gitlab-managed-apps

我有同样的问题。对于裸机安装,请使用MetalLB:https://metallb.universe.tf/installation/https://metallb.universe.tf/configuration/

您可以使用头盔:https://github.com/bitnami/charts/tree/master/bitnami/metallb,然后必须更改名称空间和名称:

apiVersion: v1
kind: ConfigMap
metadata:
  namespace: default
  name: metallb
data:
  config: |
      address-pools:
      - addresses:
        - 192.168.1.100-192.168.88.110
        name: default
        protocol: layer2

您需要获取用于服务/ ingress-nginx-ingress-controller的外部IP:

kubectl get svc --all-namespaces

有关负载平衡支持的更多信息:https://rancher.com/docs/rancher/v2.x/en/k8s-in-rancher/load-balancers-and-ingress/load-balancers/

https://kubernetes.github.io/ingress-nginx/deploy/baremetal/

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...