Не удается войти на сервер MySQL, развернутый в кластере k8s - PullRequest
1 голос
/ 09 мая 2019

Я использую k8s в Mac-Docker-Desktop.Я развернул модуль MySQL с нижеприведенным конфигом.

запустить с: kubectl apply -f mysql.yaml

# secret
apiVersion: v1 
kind: Secret
metadata:
  name: mysql
type: Opaque
data:
  # root
  mysql-root-password: cm9vdAo=
---
# configMap
apiVersion: v1
kind: ConfigMap
metadata:
  name: mysql-conf
data:
  database: app
---
apiVersion: apps/v1
kind: Deployment 
metadata:
  name: mysql
  labels:
    app: mysql
spec:
  selector:
    matchLabels:
      app: mysql
  strategy:
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: mysql
    spec:
      volumes:
      - name: mysql
        persistentVolumeClaim:
          claimName: mysql
      containers:
        - image: mysql:5.6
          name: mysql
          env:
            - name: MYSQL_ROOT_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: mysql
                  key: mysql-root-password
            - name: MYSQL_DATABASE
              valueFrom:
                configMapKeyRef:
                  name: mysql-conf
                  key: database
          ports:
            - containerPort: 3306
              name: mysql
          volumeMounts:
            - name: mysql
              mountPath: /var/lib/mysql
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql
  labels:
    app: mysql
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
---
# services
apiVersion: v1
kind: Service 
metadata:
  name: mysql
  labels:
    app: mysql
spec:
  selector:
    app: mysql
  ports:
    - port: 3306  
      targetPort: 3306 

После этого.это показывает хорошо.и затем я хочу подключить сервер MySQL с узлом IP, но не удалось.затем я исполняю в модуле, и мне тоже не удалось.

Я выполняю в модуле и не могу войти.



☁  gogs-k8s  kubectl get pods           
NAME                     READY     STATUS    RESTARTS   AGE
blog-59fb8cbd44-frmtx    1/1       Running   0          37m
blog-59fb8cbd44-gdskp    1/1       Running   0          37m
blog-59fb8cbd44-qrs8f    1/1       Running   0          37m
mysql-6c794ccb7b-dz9f4   1/1       Running   0          31s
☁  gogs-k8s  kubectl exec mysql-6c794ccb7b-dz9f4 -it bash 
root@mysql-6c794ccb7b-dz9f4:/# ls
bin  boot  dev  docker-entrypoint-initdb.d  entrypoint.sh  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@mysql-6c794ccb7b-dz9f4:/# mysql -u root -p 
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
root@mysql-6c794ccb7b-dz9f4:/# echo $MYSQL_ROOT_PASSWORD
root
root@mysql-6c794ccb7b-dz9f4:/# mysql -u root -p 
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Есть ли какие-либо проблемы с моим файлом конфигурации?

Ответы [ 2 ]

1 голос
/ 09 мая 2019

Возможно, у вас неверный пароль в кодировке base64. Попробуйте это:

data:
  pass: cm9vdA==
0 голосов
/ 09 мая 2019

Как отметил @Vasily Angapov, ваша кодировка base64 неверна.

Когда вы делаете следующее, вы кодируете базу для root \ n

echo "root" | base64

Вывод:

cm9vdAo =

Если вы хотите удалить символ новой строки, вы должны использовать опцию -n :

echo -n "root" | base64

Вывод:

cm9vdA ==

Еще лучше сделать следующее:

echo -n "root" | base64 -w 0

Таким образом base64 будетне вставлять новые строки в более длинные выходы.

Также вы можете проверить правильность кодировки, расшифровав закодированный текст:

echo "cm9vdA==" | base64 --decode

Выходные данные не должны создавать новую строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...