-
Notifications
You must be signed in to change notification settings - Fork 8.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Admission Controller not functional in default baremetal deployment #12336
Comments
This issue is currently awaiting triage. If Ingress contributors determines this is a relevant issue, they will accept it by applying the The Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
/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 |
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 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: 80154a3
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:
uname -a
): 6.11.6-300.fc41.x86_6kubectl get nodes -o wide
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:
http:
paths:
pathType: Prefix
backend:
service:
name: service-test
port:
number: 80
The text was updated successfully, but these errors were encountered: