Open little-helper-001 opened 3 days ago
This issue is currently awaiting triage.
If Ingress contributors determines this is a relevant issue, they will accept it by applying the triage/accepted
label and provide further guidance.
The triage/accepted
label can be added by org members by writing /triage accepted
in a comment.
/remove-kind bug
Can you check and confirm that the required ports are open between the nodes inside the cluster. grep for ports in the pod manifest
/kind support
Can you check and confirm that the required ports are open between the nodes inside the cluster. grep for ports in the pod manifest
Ports 80/TCP, 443/TCP and 8443/TCP are open between all nodes in the cluster.
I need to revise my comment. For sake of simplicity I turned the firewall, firewalld in this instance, completely off and deactivated it and now I can deploy the ingress. Can you maybe assist me what went wrong here, why was the connection not possible with ports 80, 443 and 8443 open but is possible with the firewall turned off. Did I open the wrong ports or is there something wrong with the firewall itself? Maybe people in the past ran into problems with firewalld but till now I am unable to find information about this searching the internet.
There is no code in the ingress-nginx controller for firewalld. Please ask in firewalld related forums. The controller runs webhook at 8443 and the kube-api-server needs to connect to that when the webhook is called.
Please close the issue if there are no questions on ingress-nginx controller.
Personally, I would practice difference options of firewalld and do a simple netcat or telnet between 2 pods (using image nginx:alpine) on 2 different nodes.
The healthcheck port is 10254
I will close this issue in a couple of days. I am still investigating this since I ran into the same issue when using Ubuntu 24.04 as a base OS and UFW as a firewall solution. If I can figure this out I want to post a comprehensive solution for people in the same situation.
What happened:
I setup a fresh Kubernetes cluster using kubeadm on baremetal hosts, with Calico as a networking solution. I have downloaded the baremetal manifest and only made two small modifications to it, and exposed the two ports of the ingress-nginx-controller service to unprivileged ports on the nodes.
Deploying an ingress now fails with the following error message:
Error from server (InternalError): error when creating "ingress.yaml": Internal error occurred: failed calling webhook "validate.nginx.ingress.kubernetes.io": failed to call webhook: Post "https://ingress-nginx-controller-admission.ingress-nginx.svc:443/networking/v1/ingresses?timeout=10s": context deadline exceeded
What you expected to happen:
The ingress file should have been validated and deployed.
NGINX Ingress controller version (exec into the pod and run nginx-ingress-controller --version.):
NGINX Ingress controller Release: v1.12.0-beta.0 Build: 80154a3694b52736c88de408811ebd1888712520 Repository: https://github.com/kubernetes/ingress-nginx nginx version: nginx/1.25.5
Kubernetes version (use
kubectl version
):Client Version: v1.29.9 Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3 Server Version: v1.31.2
Environment:
Cloud provider or hardware configuration: Baremetal
OS (e.g. from /etc/os-release): Fedora Server 41
Kernel (e.g.
uname -a
): 6.11.6-300.fc41.x86_6Install tools:
Basic cluster related info:
kubectl get nodes -o wide
How was the ingress-nginx-controller installed:
I have downloaded the baremetal manifest and only made two small modifications to it, and exposed the two ports of the ingress-nginx-controller service to unprivileged ports on the nodes.
kubectl describe ingressclasses
kubectl -n <ingresscontrollernamespace> get all -A -o wide
kubectl -n <ingresscontrollernamespace> describe po <ingresscontrollerpodname>
Current state of ingress object, if applicable: Not applicable
Others:
I can deploy ingresses by manually removing the admission controller, but instead of hacking this issue I would prefer to understand and fix it the proper way.
How to reproduce this issue:
Install Base OS
Install RHEL or Fedora based system. Disable SELinux, open Firewall. Install containerd + kubernetes tools.
Create cluster with kubeadm
sudo kubeadm init --upload-certs --control-plane-endpoint "kubernetes-loadbalancer.my-domain.com" --pod-network-cidr 10.0.0.0/16
kubernetes-loadbalancer.my-domain.com points to a haproxy that forwards port 80 to 30100 on the worker, port 443 to 30101 on the worker and port 6443 to port 6443 on the controlplane node.
Join a worker node with the command provided in the output.
Install Calico
Install the ingress controller
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/baremetal/deploy.yaml with a modification to expose the HTTP and HTTPS port as unprivileged node ports.
Try to create an ingress e.g.
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: test-ingress spec: rules:
path: /* pathType: Prefix backend: service: name: service-test port: number: 80