Estoy tratando de ejecutar mysql 5.7 en kubernetes y obtuve este error mysql: unknown option '--"'
Mi base de datos.yaml se ve así
apiVersion: v1 kind: Pod metadata: name: app-db labels: app: app-db spec: containers: - name: mysql image: mysql:5.7 ports: - name: mysql-port containerPort: 3306 env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: app-secrets key: rootPassword - name: MYSQL_USER valueFrom: secretKeyRef: name: app-secrets key: username - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: app-secrets key: password - name: MYSQL_DATABASE valueFrom: secretKeyRef: name: app-secrets key: defaultDatabase¿Quizás me perdí algo?
Traté de cambiar de versión, traté de usar muestras del sitio oficial de Kubernetes, nada funciona para mí.
Los últimos registros con error:
2020-07-19 20:51:01 100 [Note] Event Scheduler: Loaded 0 events 2020-07-19 20:51:01 100 [Note] mysqld: ready for connections. Version: '5.6.49' socket: '/var/run/mysqld/mysqld.sock' port: 0 MySQL Community Server (GPL) 2020-07-19 20:51:01+00:00 [Note] [Entrypoint]: Temporary server started. Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/leap-seconds.list' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/zone1970.tab' as time zone. Skipping it. 2020-07-19 20:51:04 100 [Warning] 'proxies_priv' entry '@ root@app-db' ignored in --skip-name-resolve mode. 2020-07-19 20:51:04+00:00 [Note] [Entrypoint]: Creating database app_db mysql: unknown option '--"'Me encontré con el mismo problema y después de mucha depuración frustrante, finalmente lo resolví.
El problema fue que creé mis secretos con el echo 'secret' | base64 El comando echo 'secret' | base64 y el comando echo insertan automáticamente una nueva línea final.
Utilice echo -n 'secret' | base64 en su lugar. ✔️
Desafortunadamente, esto no era en absoluto lo que esperaba y, por lo tanto, no noté que había un salto de línea en la salida del registro. Con suerte, esto puede ayudar a algunas personas que también usan el comando echo para codificar en base64.
Miré el script entrypont.sh para este contenedor 👀. Y el error está ocurriendo aquí en la sección 'Creando base de datos':
# Creates a custom database and user if specified if [ -n "$MYSQL_DATABASE" ]; then mysql_note "Creating database ${MYSQL_DATABASE}" 👈 docker_process_sql --database=mysql <<<"CREATE DATABASE IF NOT EXISTS \`$MYSQL_DATABASE\` ;" 👈 fi if [ -n "$MYSQL_USER" ] && [ -n "$MYSQL_PASSWORD" ]; then mysql_note "Creating user ${MYSQL_USER}" ... docker_process_sql() { passfileArgs=() if [ '--dont-use-mysql-root-password' = "$1" ]; then passfileArgs+=( "$1" ) shift fi # args sent in can override this db, since they will be later in the command if [ -n "$MYSQL_DATABASE" ]; then set -- --database="$MYSQL_DATABASE" "$@" fi mysql --defaults-extra-file=<( _mysql_passfile "${passfileArgs[@]}") --protocol=socket -uroot -hlocalhost --socket="${SOCKET}" "$@" }También probé con la ventana acoplable simple y funciona bien con esto:
docker run --name some-mysql -d -e MYSQL_ROOT_PASSWORD=my-secret-pw -e MYSQL_DATABASE="app" -e MYSQL_USER="user1" mysql:5.7Así que lo más probable es que haya algo corrupto en tus secretos 💀.
✌️
La configuración de YAML es bastante simple. Supongo que el problema podría estar en los secretos de la aplicación.
Deshabilite todos los envs y luego agregue uno por uno, lo que podría ayudarlo a encontrar la configuración del problema.
En caso de que sus secretos no sean correctos, puede configurar env directamente, como:
env: - name: MYSQL_ROOT_PASSWORD value: somePassYouLikePorque muchos agregan secretos de Kubernetes copiando archivos base64 generados manualmente. Asegúrese de que no haya espacios después de que se haya copiado la cadena base64. Vaya al panel de control de Kubernetes para verificar la longitud de los secretos.