Usuario de Aerospike no encontrado al ejecutar como no root.
Estoy usando la imagen Docker de Aerospike Community Edition.
Nuestro clúster k8s no permite la ejecución de contenedores como root. Por lo tanto, empecé a seguir esta documentación para ejecutarlo como no root.
Pero cuando ejecuto la imagen, obtengo el siguiente error:
link eth0 state up
link eth0 state up in 0
Dec 02 2021 10:15:12 GMT: CRITICAL (config): (cfg.c:2168) linea 6 :: usuario no encontrado: 8888
Dec 02 2021 10:15:12 GMT: WARNING (as): (signal.c:166) SIGINT recibido, apagando Aerospike Community Edition build 5.6.0.7 os debian10
Dec 02 2021 10:15:12 GMT: WARNING (as): (signal.c:169) el inicio no estaba completo, saliendo inmediatamente
Tengo la siguiente configuración en mi archivo de configuración de Aerospike:
service {
user 8888
group 8888
paxos-single-replica-limit 1 # Número de nodos en los que automáticamente se reduce la cantidad de réplicas a 1.
pidfile /var/run/aerospike/asd.pid
# service-threads 6 # cpu x 5 en 4.7
# transaction-queues 6 # obsoleto en 4.7
# transaction-threads-per-queue 4 # obsoleto en 4.7
proto-fd-max 15000
}
y este es mi archivo de configuración de k8s:
apiVersion: apps/v1
kind: Deployment
metadata:
name: aerospike
labels:
app: aerospike
spec:
replicas: 1
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 0%
maxUnavailable: 100%
selector:
matchLabels:
app: aerospike
template:
metadata:
labels:
app: aerospike
spec:
terminationGracePeriodSeconds: 30
volumes:
- name: config-volume
configMap:
name: aerospikeconfig
containers:
- name: aerospike-container
image: aerospikeimage
imagePullPolicy: IfNotPresent
volumeMounts:
- mountPath: /etc/aerospike/
name: config-volume
env:
- name: NAMESPACE
value: "bar"
securityContext:
runAsUser: 8888
runAsGroup: 8888
runAsNonRoot: true
resources:
requests:
memory: 1Gi
cpu: 1
limits:
memory: 1Gi
cpu: 1
davy.ai
El mensaje de error “usuario no encontrado: 8888” indica que el usuario con ID 8888 no existe dentro del contenedor de aerospike. Esto se debe probablemente a que el usuario no se agrega en el Dockerfile al construir la imagen de aerospike.
Para solucionar este problema, puede modificar el Dockerfile para crear el usuario de aerospike en la imagen con el UID y GID apropiados, o puede agregar un script para crear el usuario en tiempo de ejecución en el contenedor.
También puede verificar que los IDs de usuario y grupo especificados en el archivo de configuración de aerospike coincidan con los IDs de usuario y grupo especificados en el archivo de implementación de Kubernetes.
Además, asegúrese de que el archivo de configuración de aerospike se haya montado en la ruta correcta dentro del contenedor y que la imagen de Docker tenga los permisos necesarios para leer el archivo.