如何在Kubernetes中暴露MariaDB ?



我有一个Docker容器与MariaDB运行在Microk8s(运行在单个Unix机器上)。

# Hello World Deployment YAML
apiVersion: apps/v1
kind: Deployment
metadata:
name: mariadb
spec:
selector:
matchLabels:
app: mariadb
template:
metadata:
labels:
app: mariadb
spec:
containers:
- name: mariadb
image: mariadb:latest
env:
- name: MARIADB_ROOT_PASSWORD
value: sa
ports:
- containerPort: 3306

这些是日志:

(...)
2021-09-30  6:09:59 0 [Note] mysqld: ready for connections.
Version: '10.6.4-MariaDB-1:10.6.4+maria~focal'  socket: '/run/mysqld/mysqld.sock'  port: 3306  mariadb.org binary distribution

现在

  • 连接到机器的3306端口不工作。
  • 在端口8081上使用服务(任何类型)暴露pod后连接也不工作。

如何接通?

答案已经写在评论区,但为了澄清,我在这里发布解决方案作为社区维基。

在这种情况下,通过设置spec.selector解决了连接问题。

.spec.selector字段定义了部署如何找到要管理的pod。在本例中,您选择在Pod模板(app: nginx)中定义的标签。

.spec.selector是一个必选字段,用于指定此部署所针对的pod的标签选择器。

您需要使用带有适当标签的服务

示例服务

apiVersion: v1
kind: Service
metadata:
name: mariadb
spec:
selector:
name: mariadb
ports:
- protocol: TCP
port: 3306
targetPort: 3306
type: ClusterIP

您可以使用服务名称来连接或更改服务类型为LoadBalancer

apiVersion: v1
kind: Service
metadata:
name: mariadb
spec:
selector:
name: mariadb
ports:
- protocol: TCP
port: 3306
targetPort: 3306
type: LoadBalancer

相关内容

  • 没有找到相关文章

最新更新