无法登录在K8S集群中部署的mysql服务器

时间:2019-05-09 10:18:45

标签: mysql docker kubernetes

我正在mac-docker-desktop中使用k8s。我用下面的配置部署一个mysql pod。

运行于: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 个答案:

答案 0 :(得分:1)

可能您的base64编码密码无效。试试这个:

data:
  pass: cm9vdA==

答案 1 :(得分:0)

正如@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

输出不应创建新行。