rancher: NGINX ingress controller 0.25 does not work on CPUs without SSE4.2 instruction set support

What kind of request is this (question/bug/enhancement/feature request):

bug

Steps to reproduce (least amount of steps as possible):

setup a fresh rancher 2.3 with a custom cluster on the same machine

Result:

nginx-ingress-controller not ready Screenshot 2019-10-09 at 16 29 50

W1009 14:27:01.767297 6 queue.go:130] requeuing initial-sync, err
-------------------------------------------------------------------------------
Error: signal: illegal instruction (core dumped)
-------------------------------------------------------------------------------
I1009 14:27:01.894015 6 main.go:158] Error during shutdown: signal: illegal instruction (core dumped)
I1009 14:27:01.894125 6 main.go:162] Handled quit, awaiting Pod deletion
E1009 14:27:11.285497 6 checker.go:41] healthcheck error: Get http+unix://nginx-status/healthz: dial unix /tmp/nginx-status-server.sock: connect: no such file or directory
I1009 14:27:11.894291 6 main.go:165] Exiting with 1

Other details that may be helpful:

retried 3 fresh full install (rancher + cluster), was working fine with v2.2.8

I used the recommended docker port mapping not to mix up with ingress :

sudo docker run -d --restart=unless-stopped -p 8080:80 -p 8443:443 -v /etc/rancher/ssl/:/etc/rancher/ssl/ -v /opt/rancher:/var/lib/rancher --name rancher-manager rancher/rancher:v2.3.0

Environment information

  • Rancher version (rancher/rancher/rancher/server image tag or shown bottom left in the UI):

v2.3.0

  • Installation option (single install/HA):

single install

Cluster information

  • Cluster type (Hosted/Infrastructure Provider/Custom/Imported):

Custom

  • Machine type (cloud/VM/metal) and specifications (CPU/memory):

metal Ubuntu 16.04.6 2 cores 4GB

  • Kubernetes version (use kubectl version):
v1.15.4
  • Docker version (use docker version):
18.09.9

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Reactions: 4
  • Comments: 15 (3 by maintainers)

Most upvoted comments

At now, we have to change DaemonSet for nginx-ingress-controller after install/update cluster:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  ...
  name: nginx-ingress-controller
  namespace: ingress-nginx
  ...
spec:
  ...
      containers:
      ...
        image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.27.1
        ...
        name: nginx-ingress-controller
        securityContext:
          ...
          runAsUser: 101
        ...

And it works fine (faster scaling, because the image has become 80mb smaller). Tested on 3 clusters.

We also encountered this issue when deploying a fresh install of Rancher 2.3.x

I guess workaround is to stay with Rancher 2.2 or to wait for #14007. Or @superseb suggestion of #15669 is still valid for Rancher 2.3 ?

At now, we have to change DaemonSet for nginx-ingress-controller after install/update cluster:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  ...
  name: nginx-ingress-controller
  namespace: ingress-nginx
  ...
spec:
  ...
      containers:
      ...
        image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.27.1
        ...
        name: nginx-ingress-controller
        securityContext:
          ...
          runAsUser: 101
        ...

And it works fine (faster scaling, because the image has become 80mb smaller). Tested on 3 clusters.

I did not manage to run your solution. There are no fatal errors, just warnings, but the result is the same.

We will look at and can likely do that as part of regular upgrades of dependencies for 2.4.

@vincent99 Maybe it would be much better to upgrade the version of the image to at least 0.27.1 (or 0.28.0)? This version works great on 10+ year old CPUs.