Troubleshooting HAProxy Kubernetes Ingress Controller
Here are some techniques you can use to troubleshooting the ingress controller.
View the logs
-
Get the names of the kubernetes-ingress pods:
$ kubectl get pods NAME READY STATUS RESTARTS AGE kubernetes-ingress-7d84545b45-fpzm9 1/1 Running 0 3m49s kubernetes-ingress-7d84545b45-wq426 1/1 Running 0 3m49s
-
Use
kubectl logs
to view the logs of a pod:$ kubectl logs kubernetes-ingress-7d84545b45-fpzm9 2020/07/17 17:07:47 _ _ _ ____ _____ _____ | | | | / \ | _ \ _ __ _____ ___ _ | ____| ____| | |_| | / _ \ | |_) | '__/ _ \ \/ / | | | | _| | _| | _ |/ ___ \| __/| | | (_) > <| |_| | | |___| |___ |_| |_/_/ \_\_| |_| \___/_/\_\\__, | |_____|_____| _ __ _ |___/ ___ ____ | |/ / _| |__ ___ _ __ _ __ ___| |_ ___ ___ |_ _/ ___| | ' / | | | '_ \ / _ \ '__| '_ \ / _ \ __/ _ \/ __| | | | | . \ |_| | |_) | __/ | | | | | __/ || __/\__ \ | | |___ |_|\_\__,_|_.__/ \___|_| |_| |_|\___|\__\___||___/ |___\____| 2020/07/17 17:07:47 HAProxy Ingress Controller v1.4.5-ee1 c2b5156 2020/07/17 17:07:47 Build from: ssh://git@gitlab.int.haproxy.com/haproxy-controller/kubernetes-ingress-ee 2020/07/17 17:07:47 Build date: 2020-07-12T00:00:53 2020/07/17 17:07:47 ConfigMap: default/kubernetes-ingress 2020/07/17 17:07:47 Ingress class: 2020/07/17 17:07:47 Publish service: 2020/07/17 17:07:47 Default backend service: default/kubernetes-ingress-default-backend 2020/07/17 17:07:47 Default ssl certificate: default/kubernetes-ingress-default-cert 2020/07/17 17:07:47 Controller sync period: 5s 2020/07/17 17:07:47 controller.go:262 Running with HA-Proxy version 2.1.0-1.0.0-223.185 2020/06/18 - https://haproxy.org/ 2020/07/17 17:07:47 INFO controller.go:267 Starting HAProxy with /etc/haproxy/haproxy.cfg 2020/07/17 17:07:47 INFO controller.go:272 Running on kubernetes-ingress-7d84545b45-fpzm9 [NOTICE] 198/170747 (21) : New worker #1 (22) forked 2020/07/17 17:07:48 INFO controller.go:95 Running on Kubernetes version: v1.18.3 linux/amd64 2020/07/17 17:07:48 INFO monitor.go:35 executing syncPeriod every 5s 2020/07/17 17:07:54 INFO controller.go:220 HAProxy reloaded
-
For debug logs, install the ingress controller with the log argument set to debug.
$ helm install haproxy haproxytech/kubernetes-ingress \ --set controller.logging.level=debug
-
By default, the ingress controller’s logs do not include traffic logs, but you can enable them by setting the syslog-server option to stdout.
View pod details
-
View the details of the ingress controller pod by using
kubectl describe pod
:$ kubectl describe pod kubernetes-ingress-7d84545b45-fpzm9 Name: kubernetes-ingress-7d84545b45-fpzm9 Namespace: haproxy-controller Priority: 0 Node: minikube/192.168.99.116 Start Time: Fri, 17 Jul 2020 13:06:37 -0400 Labels: app.kubernetes.io/instance=kubernetes-ingress app.kubernetes.io/name=kubernetes-ingress pod-template-hash=7d84545b45
-
You can also view the YAML that was used to deploy the ingress controller by using
kubectl get deployment
:$ kubectl get deployment kubernetes-ingress -o yaml apiVersion: apps/v1 kind: Deployment metadata: annotations: deployment.kubernetes.io/revision: "1" creationTimestamp: "2020-07-17T17:06:37Z" generation: 1 labels: app.kubernetes.io/instance: kubernetes-ingress app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: kubernetes-ingress app.kubernetes.io/version: 1.4.5 helm.sh/chart: kubernetes-ingress-1.4.2
Log into the pod
-
Use
kubectl exec
to log into the ingress controller pod to inspect the HAProxy files:$ kubectl exec -it kubernetes-ingress-7d84545b45-fpzm9 /bin/bash $ cd /etc/haproxy $ ls certs haproxy.cfg maps modsec