Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to access mysql outside my kubernetes cluster?

I am running a kubernetes cluster in my centos machine. I donot want to create a pod for mysql. MySQL is installed in another machine in same network (Machine is not in kubernates private network).

How can I access the mysql service from the pods running in kubernetes cluster ?

I have tried with service and end point with below configuration. But, No luck.

apiVersion: v1
kind: Service
metadata:
  name: database
spec:
  ports:
  - port: 13080
    targetPort: 13080
    protocol: TCP
---
kind: Deployment
apiVersion: v1
metadata:
  name: database
subsets:
  - addresses:
      - ip: XX.XX.XX.XX
    ports:
      - port: 13080
---
kind: ReplicationController
metadata:
  name: test
spec:
  replicas: 1
  selector:
    app: test
  template:
    metadata:
      name: test
      labels:
        app: test
    spec:
      containers:
      - name: my_pods
        image: my_pods
        env:
         - name: DATABASE_HOST
           value: database
         - name: DATABASE_PORT
           value: "13080"
         - name: DATABASE_USER
           value: "SAAS"
         - name: DATABASE_PASSWORD
           value: "SAAS"
         - name: DATABASE_NAME
           value: "SAASDB"
        ports:
          - containerPort: 8080
      imagePullSecrets:
        - name: my-secret
---
apiVersion: v1
kind: Service
metadata:
  name: test-service
  labels:
    name: test-service
spec:
  type: NodePort
  ports:
     - port: 11544
       targetPort: 8080
       nodePort: 30600
  selector:
    name: test
like image 378
sitakant Avatar asked Mar 28 '17 19:03

sitakant


People also ask

How do I access Kubernetes services from outside the cluster?

By default Kubernetes services are accessible at the ClusterIP which is an internal IP address reachable from inside of the Kubernetes cluster only. The ClusterIP enables the applications running within the pods to access the service. To make the service accessible from outside of the cluster a user can create a service of type NodePort.

How to deploy MySQL in Kubernetes using kubectl?

Create the deployment by applying the file with kubectl: The system confirms the successful creation of both the deployment and the service. To access the MySQL instance, access the pod created by the deployment. 2. Find the MySQL pod and copy its name by selecting it and pressing Ctrl+Shift+C:

How do I connect to a MySQL pod in Kubernetes?

Find the MySQL pod and copy its name by selecting it and pressing Ctrl+Shift+C: 3. Get a shell for the pod by executing the following command: kubectl exec --stdin --tty mysql-694d95668d-w7lv5 -- /bin/bash 4. Type the following command to access the MySQL shell: 5. When prompted, enter the password you defined in the Kubernetes secret.

How do I check the kubectl version of my cluster?

You need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using Minikube, or you can use one of these Kubernetes playgrounds: To check the version, enter kubectl version.


1 Answers

You don't need a service for things outside the cluster. Depending on the networking model you're using, the docker container (ie kubernetes pod) should be able to connect to the MySQL container normally via the bridge that Docker sets up. Check the host has connectivity on port 3306, and it does, simply put in the DNS name (your kube-dns pod should forward any non kubernetes based requests on to the hosts resolv.conf of the host it was scheduled on)

like image 187
jaxxstorm Avatar answered Oct 09 '22 22:10

jaxxstorm