Scandinave
Scandinave

Reputation: 1438

Mariadb on kubernetes Got an error reading communication packets

I try to deploy an application with a mariadb database on my k8s cluster. This is the deployment i use:

apiVersion: v1
kind: Service
metadata:
  name: app-back
  labels:
    app: app-back
  namespace: dev
spec:
  type: ClusterIP
  ports:
    - port: 8080
      name: app-back
  selector:
    app: app-back
---
apiVersion: v1
kind: Service
metadata:
  name: app-db
  labels:
    app: app-db
  namespace: dev
spec:
  type: ClusterIP
  clusterIP: None
  ports:
    - port: 3306
      name: app-db
  selector:
    app: app-db
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: mysql
  labels:
    app: mysql
data:
  60-server.cnf: |
    [mysqld]
    bind-address = 0.0.0.0
    skip-name-resolve
    connect_timeout = 600
    net_read_timeout = 600
    net_write_timeout = 600
    max_allowed_packet = 256M
    default-time-zone = +00:00
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-db
  namespace: dev
spec:
  replicas: 1
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: app-db
  template:
    metadata:
      labels:
        app: app-db
    spec:
      containers:
        - name: app-db
          image: mariadb:10.5.8
          env:
            - name: MYSQL_DATABASE
              value: app
            - name: MYSQL_USER
              value: app
            - name: MYSQL_PASSWORD
              value: app
            - name: MYSQL_RANDOM_ROOT_PASSWORD
              value: "true"
          ports:
            - containerPort: 3306
              name: app-db
          resources:
            requests:
              memory: "200Mi"
              cpu: "100m"
            limits:
              memory: "400Mi"
              cpu: "200m"
          volumeMounts:
            - name: config-volume
              mountPath: /etc/mysql/conf.d
      volumes:
        - name: config-volume
          configMap:
            name: mysql
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-back
  namespace: dev
spec:
  replicas: 1
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: app-back
  template:
    metadata:
      labels:
        app: app-back
    spec:
      containers:
        - name: app-back
          image: private-repository/app/app-back:latest
          env:
            - name: spring.profiles.active
              value: dev
            - name: DB_HOST
              value: app-db
            - name: DB_PORT
              value: "3306"
            - name: DB_NAME
              value: app
            - name: DB_USER
              value: app
            - name: DB_PASSWORD
              value: app
          ports:
            - containerPort: 8080
              name: app-back
          resources:
            requests:
              memory: "200Mi"
              cpu: "100m"
            limits:
              memory: "200Mi"
              cpu: "400m"
      imagePullSecrets:
        - name: docker-private-credentials

When i run this, the mariadb container log the following warning :

2020-12-03  8:23:41 28 [Warning] Aborted connection 28 to db: 'app' user: 'app' host: 'xxx.xxx.xxx.xxx' (Got an error reading communication packets)
2020-12-03  8:23:41 25 [Warning] Aborted connection 25 to db: 'app' user: 'app' host: 'xxx.xxx.xxx.xxx' (Got an error reading communication packets)
2020-12-03  8:23:41 31 [Warning] Aborted connection 31 to db: 'app' user: 'app' host: 'xxx.xxx.xxx.xxx' (Got an error reading communication packets)
2020-12-03  8:23:41 29 [Warning] Aborted connection 29 to db: 'app' user: 'app' host: 'xxx.xxx.xxx.xxx' (Got an error reading communication packets)
...

My app is stuck on trying to connect to the database. The application is a Sprinbboot application build with this dockerfile:

FROM maven:3-adoptopenjdk-8 AS builder
WORKDIR /usr/src/mymaven/
COPY . .
RUN mvn clean package -e -s settings.xml -DskipTests

FROM tomcat:9-jdk8-adoptopenjdk-hotspot
ENV spring.profiles.active=dev
ENV DB_HOST=localhost
ENV DB_PORT=3306
ENV DB_NAME=app
ENV DB_USER=app
ENV DB_PASSWORD=app

COPY --from=builder /usr/src/mymaven/target/app.war /usr/local/tomcat/webapps/

Any idea?

Upvotes: 2

Views: 1895

Answers (1)

Scandinave
Scandinave

Reputation: 1438

Ok, i found the solution. This was not an error of mariadb. This is due to apache that break the connection if running inside a container with to low memory. Set memory limit to 1500Mi solved the problem.

Upvotes: 2

Related Questions