Tengo una imagen acoplable simple basada en nginx:alpine . En mi docker-deamon local puedo iniciarlo sin ningún problema. Pero cuando lo implemento a través de k8s, el contenedor no se inicia con el siguiente error:
2020/03/04 08:01:38 [emerg] 1#1: open() "/var/run/nginx.pid" falló (13: Permiso denegado)
nginx: [emerg] open() "/var/run/nginx.pid" falló (13: Permiso denegado)
¿Alguien tiene idea de lo que pasó? Apuesto a que hay algo mal con el grupo k8s.
Y mi dockerfile se ve así:
#Dockerfile # build nginx-container FROM nginx:alpine # delete nginx-default-page and creates non root user RUN rm -rf /usr/share/nginx/html/* \ && addgroup --gid 98761 nonroot \ && adduser -u 9876 -G nonroot --disabled-password nonroot \ && touch /var/run/nginx.pid \ && chown 9876:98761 /var/run/nginx.pid \ && chown -R 9876:98761 /var/cache/nginx # copy our conf and web into nginx COPY nginx/nginx.conf /etc/nginx/conf.d/default.conf COPY static-webfiles/* /usr/share/nginx/html/ USER 9876:98761 Aquí está el yaml para la implementación. No hay una implementación con el mismo nombre y la asigno a k8s con kubectl apply -f deloyment.yaml . Estoy seguro de que la implementación utilizando la imagen acoplable.
#deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: frontend labels: app: frontend environment: review spec: replicas: 1 revisionHistoryLimit: 1 selector: matchLabels: app: frontend environment: review template: metadata: labels: app: frontend environment: review spec: containers: - name: frontend image: frontend:latest imagePullPolicy: Always ports: - containerPort: 8080En mi mini-kube-cluster, la misma imagen se ejecuta sin ningún problema.
Creo que hay problemas de almacenamiento en caché de la capa acoplable. Todos los entornos, que son anteriores al uso de la imagen raíz, fallan en este error. Cuando construyo la imagen acoplable localmente y la empujo, todo está bien.
Lo único que cambié en Dockerfile fueron las actualizaciones que no son de raíz.
Eliminaré todas las versiones almacenadas en caché en nuestros repositorios y lo intentaré nuevamente.
Estoy bastante seguro de que el error proviene de kaniko.
Ver esto https://github.com/GoogleContainerTools/kaniko/issues/550
y https://github.com/GoogleContainerTools/kaniko/issues/647
Por lo tanto, no podemos construir con nuestros Pipelines y construir imágenes locales hasta que actualicemos nuestro kaniko.