Ingress not working
Ingress is not working and I am not sure why.
Details:
I have two deployments running four pods:
i@cp:~$ k get pods -n prod NAME READY STATUS RESTARTS AGE hello-dep-58d75f88f-75j9w 1/1 Running 0 6m47s hello-dep-58d75f88f-tsjq6 1/1 Running 0 2d4h hello2-dep-6df5f875d6-fjlgx 1/1 Running 0 2d4h hello2-dep-6df5f875d6-rg8xf 1/1 Running 0 6m47s
And their respective services:
i@cp:~$ k get svc -n prod NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-srv ClusterIP 10.107.219.251 <none> 80/TCP 2d4h hello2-srv ClusterIP 10.110.36.35 <none> 80/TCP 2d4h
I have created an ingress:
i@cp:~$ k get ing -n prod
NAME CLASS HOSTS ADDRESS PORTS AGE
hello-ingress nginx hello.com 80 2d4h
i@cp:~$ k describe ing -n prod
Name: hello-ingress
Labels: <none>
Namespace: prod
Address:
Ingress Class: nginx
Default backend: <default>
Rules:
Host Path Backends
---- ---- --------
hello.com
/v1 hello-srv:80 (192.168.0.121:8080,192.168.0.144:8080)
/v2 hello2-srv:80 (192.168.0.244:8080,192.168.0.49:8080)
Annotations: <none>
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Sync 3m48s nginx-ingress-controller Scheduled for sync
Curling any of the addresses works just fine:
i@cp:~$ curl 192.168.0.121:8080 Hello, world! Version: 1.0.0 Hostname: hello-dep-58d75f88f-tsjq6
But the port 80 is closed:
i@cp:~$ curl hello.com curl: (7) Failed to connect to hello.com port 80 after 0 ms: Connection refused i@cp:~$ curl hello.com/v1 curl: (7) Failed to connect to hello.com port 80 after 0 ms: Connection refused i@cp:~$ curl localhost curl: (7) Failed to connect to localhost port 80 after 0 ms: Connection refused i@cp:~$ ping hello.com PING hello.com (192.168.138.129) 56(84) bytes of data. 64 bytes from k8scp (192.168.138.129): icmp_seq=1 ttl=64 time=0.083 ms i@cp:~$ curl k8scp curl: (7) Failed to connect to k8scp port 80 after 0 ms: Connection refused i@cp:~$ curl 192.168.138.129 curl: (7) Failed to connect to 192.168.138.129 port 80 after 0 ms: Connection refused
I thought it was a problem of a lack of an Ingress Controller, so I installed one:
i@cp:~$ helm list NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION myingress default 1 2024-09-23 22:03:56.346203937 +0000 UTC deployed ingress-nginx-4.11.2 1.11.2 i@cp:~$ k get pods NAME READY STATUS RESTARTS AGE myingress-ingress-nginx-controller-bxwpv 1/1 Running 0 47h myingress-ingress-nginx-controller-xrlxc 1/1 Running 2 (8m59s ago) 47h
But the result is the same.
What can be happening? Do I have to link the ingress Controller to my ingress somehow?
Thanks.
Comments
-
curl -H "Host: hello.com" $CLUSTER_IP/v1
0 -
The cluster IPs work. What I need is to access the ingress.
I have "hello.com" configured to point to the control plane.0 -
Hi @ilmx,
For external access, either use a NodePort Service for the ingress controller, or enable the hostPort on the myingress ingress controller Pods.
Regards,
-Chris0 -
Thanks @chrispokorni What does it mean "enable the hostPort on the myingress ingress controller Pods"? How can I do that?
In other clusters I have used (already installed), ingress used to work automatically so probably I am missing some step0 -
Mmmm... I have tried to create a NodePort, but I am not sure I understood how it should be created:
--- apiVersion: v1 kind: Service metadata: name: hello-nodeport namespace: prod spec: type: NodePort ports: - appProtocol: http name: http nodePort: 80 port: 80 protocol: TCP targetPort: http - appProtocol: https name: https nodePort: 443 port: 443 protocol: TCP targetPort: https selector: app.kubernetes.io/name: myingress-ingress-nginx-controllerThis fails with:
Invalid value: 80: provided port is not in the valid range. The range of valid ports is 30000-32767
But I would like to use port 80 to access the ingress service that will route to my cluster IP.
0 -
Hi @ilmx,
In order to expose your ingress controller on port 80 you would need to verify that
hostPort: 80is declared in themyingress-ingress-nginx-controllermanifest. If it is not, then declare it. Assuming you closely followed the ingress deployment and selected the DaemonSet controller in the chart'svalues.yamlmanifest, you could simply edit the controller object with:kubectl edit daemonset myingress-ingress-nginx-controller
Otherwise you could enable the
hostPortin the chart'svalues.yamlmanifest.The
hostPortset on the ingress controller Pod allows the ingress proxy to capture traffic on port 80 and forward it to either of the Servicesweb-oneorweb-twoexposing their respective webserver Deployments. This method allows Pods to directly map to a port of the host, without the need for the NodePort Service.Discover more about the
hostPort:kubectl explain --recursive pod.spec.containers.ports kubectl explain --recursive pod.spec.containers.ports.hostPort
Regards,
-Chris0
Categories
- All Categories
- 177 LFX Mentorship
- 177 LFX Mentorship: Linux Kernel
- 750 Linux Foundation IT Professional Programs
- 373 Cloud Engineer IT Professional Program
- 169 Advanced Cloud Engineer IT Professional Program
- 74 DevOps IT Professional Program - Discontinued
- 4 DevOps & GitOps IT Professional Program
- 99 Cloud Native Developer IT Professional Program
- 7.6K Training Courses & Learning Paths
- 1 AI & ML Training
- 1 Blockchain & Decentralized Identity Training
- 4 Cloud & Containers Training
- 1 Cybersecurity Training
- 2 DevOps & Site-Reliability Training
- 1 Linux Kernel Development Training
- 1 Networking Training
- 2 Open Source Best Practice Training
- 1 System Administration Training
- 1 System Engineering Training
- 1 Web & Application Development Training
- 792 Hardware
- 202 Drivers
- 68 I/O Devices
- 37 Monitors
- 95 Multimedia
- 173 Networking
- 91 Printers & Scanners
- 87 Storage
- 769 Linux Distributions
- 81 Debian
- 68 Fedora
- 22 Linux Mint
- 13 Mageia
- 24 openSUSE
- 150 Red Hat Enterprise
- 31 Slackware
- 13 SUSE Enterprise
- 356 Ubuntu
- 465 Linux System Administration
- 31 Cloud Computing
- 73 Command Line/Scripting
- Github systems admin projects
- 98 Linux Security
- 78 Network Management
- 101 System Management
- 46 Web Management
- 106 Mobile Computing
- 18 Android
- 73 Development
- 1.2K New to Linux
- 1K Getting Started with Linux
- 392 Off Topic
- 121 Introductions
- 181 Small Talk
- 29 Study Material
- 955 Programming and Development
- 310 Kernel Development
- 627 Software Development
- 983 Software
- 375 Applications
- 182 Command Line
- 5 Compiling/Installing
- 68 Games
- 317 Installation
- Archived
- 2 LFD140 Class Forum
- 1.4K LFS258 Class Forum
Upcoming Training
-
August 20, 2018
Kubernetes Administration (LFS458)
-
August 20, 2018
Linux System Administration (LFS301)
-
August 27, 2018
Open Source Virtualization (LFS462)
-
August 27, 2018
Linux Kernel Debugging and Security (LFD440)
