【发布时间】:2021-02-04 21:49:42
【问题描述】:
我是following theses instructions(第 181 页)来创建持久卷和声明、mysql 副本集和服务。我在 yaml 文件中为副本集指定了 mysql v5.6。
查看 pod 的日志后,看起来是成功了。那么我
kubectl run -it --rm --image=mysql --restart=Never mysql-client -- bash
mysql -h mysql -p 3306 -u root
它提示我输入密码,然后我收到此错误:
ERROR 1130 (HY000): Host '10.1.0.17' is not allowed to connect to this MySQL server
显然 MySQL 有一个默认情况下不允许远程连接的功能,我必须更改配置文件,但我不知道如何在 yaml 文件中执行此操作。下面是我的 YAML。如何更改它以允许远程连接?
谢谢
齐格飞
cat <<END-OF-FILE | kubectl apply -f -
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: mysql
# labels so that we can bind a Service to this Pod
labels:
app: mysql
spec:
replicas: 1
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: tododata
image: mysql:5.6
resources:
requests:
cpu: 1
memory: 2Gi
env:
# Environment variables are not a best practice for security,
# but we're using them here for brevity in the example.
# See Chapter 11 for better options.
- name: MYSQL_ROOT_PASSWORD
value: some-password-here
livenessProbe:
tcpSocket:
port: 3306
ports:
- containerPort: 3306
volumeMounts:
- name: tododata
# /var/lib/mysql is where MySQL stores its databases
mountPath: "/var/lib/mysql"
volumes:
- name: tododata
persistentVolumeClaim:
claimName: tododata
END-OF-FILE
美国东部夏令时间 2020 年 10 月 24 日星期六下午 3 点更新:试用 Bitnami MySQL
我喜欢 Ben 的 using bitnami mysql 想法,因为这样我就不必创建自己的自定义 docker 映像了。但是,当使用 bitnami 并尝试连接到他们的 mysql 服务器时,我得到了
ERROR 2003 (HY000): Can't connect to MySQL server on 'my-release-mysql.default.svc.cluster.local' (111)
这发生在我使用此命令成功获取 bash shell 后:
kubectl run my-release-mysql-client --rm --tty -i --restart='Never' --image docker.io/bitnami/mysql:8.0.22-debian-10-r0 --namespace default --command -- bash
然后,按照说明,我这样做并得到上面的 HY000 错误。
mysql -h my-release-mysql.default.svc.cluster.local -uroot -p
2020 年 11 月 4 日星期三更新:
谢谢 Ben.. 是的 -- 我已经在 10 月 24 日(大约)尝试过,当我执行k describe pod 时,我得到了mysqladmin: connect to server at 'localhost' failed error: 'Can't connect to local MySQL server through socket '/opt/bitnami/mysql/tmp/mysql.sock' (2)' Check that mysqld is running and that the socket: '/opt/bitnami/mysql/tmp/mysql.sock' exists!。
当然,当我按照很好生成的说明运行mysql客户端时,客户端无法连接,因为mysqld已经死了。
这是在删除 pvcs 和 stss 并在通过 helm 重新安装之前执行 helm delete my-release 之后。
不幸的是,当我第一次尝试时(几周前)我没有设置 root 密码并使用了默认生成的密码,我认为它仍在尝试使用它。
在创建新的 azure kubernetes 集群后,这确实适用于 azure kubernetes。如何在我的 docker for desktop windows 中重置我的 kubernetes 集群?我尝试了谷歌搜索,但到目前为止没有运气。
谢谢 齐格飞
【问题讨论】:
-
任何人都可以将我指向现有的 github 或(更好的)绑定地址已设置为 0.0.0.0 的 dockerhub 映像,以便我可以从 kubernetes 集群外部登录吗?
-
你在哪里运行那个 mysql 命令?运行
kubectl get services以查看服务在哪个端口上运行。然后运行mysql -h localhost -uroot -p <port-number> -
另一件事是使用 kubernetes 确保您正在运行连接到部署的服务
-
请详细说明您的最后评论。最近我一直在使用
helm install my-release bitnami/mysql并且没有部署。这是一个问题吗?如果我回到之前遵循 Kubernetes Up And Running 2nd Ed 一书的策略,我将如何确认服务和部署之间的联系?
标签: mysql kubernetes docker-desktop