Bagaimana cara saya terhubung ke mysql pod di kubernetes?

Dalam tutorial ini, Anda akan mempelajari cara menerapkan server database MySQL di Kubernetes Cluster yang disiapkan di mesin lokal, ini adalah salah satu dari banyak cara untuk mempertahankan data di Kubernetes

Kubernetes adalah alat untuk mengotomatiskan penerapan, penskalaan, dan pengelolaan aplikasi dalam container

Kenali beberapa terminologi dan objek kubernetes yang akan digunakan melalui tutorial ini

  • apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: mysql-pv
      labels:
        type: local
    spec:
      storageClassName: manual
      capacity:
        storage: 5Gi
      accessModes:
        - ReadWriteOnce
      hostPath:
        path: "/mnt/data"
    
    _4. Kumpulan file yang mengemas semua kebutuhan yang diperlukan untuk menyiapkan wadah yang berfungsi penuh,
  • apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: mysql-pv
      labels:
        type: local
    spec:
      storageClassName: manual
      capacity:
        storage: 5Gi
      accessModes:
        - ReadWriteOnce
      hostPath:
        path: "/mnt/data"
    
    5. Contoh gambar, gambar yang berjalan,
  • apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: mysql-pv
      labels:
        type: local
    spec:
      storageClassName: manual
      capacity:
        storage: 5Gi
      accessModes:
        - ReadWriteOnce
      hostPath:
        path: "/mnt/data"
    
    _6. Objek Kubernetes, mesin virtual yang menjalankan wadah dan menyediakan sumber daya,
  • apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: mysql-pv
      labels:
        type: local
    spec:
      storageClassName: manual
      capacity:
        storage: 5Gi
      accessModes:
        - ReadWriteOnce
      hostPath:
        path: "/mnt/data"
    
    _7. Kumpulan node dan konfigurasi untuk mengelolanya,
  • apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: mysql-pv
      labels:
        type: local
    spec:
      storageClassName: manual
      capacity:
        storage: 5Gi
      accessModes:
        - ReadWriteOnce
      hostPath:
        path: "/mnt/data"
    
    _8. Objek Kubernetes, container yang berjalan, unit komputasi terkecil yang dapat diterapkan yang dapat dibuat dan dikelola di kubernetes,
  • apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: mysql-pv
      labels:
        type: local
    spec:
      storageClassName: manual
      capacity:
        storage: 5Gi
      accessModes:
        - ReadWriteOnce
      hostPath:
        path: "/mnt/data"
    
    _9. Objek Kubernetes, yang memantau kumpulan pod, memastikan bahwa pod tersebut berjalan dan memastikan untuk memulai ulang pod jika sedang down,
  • apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: mysql-pv-claim
    spec:
      storageClassName: manual
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 5Gi
    
    _0. Objek Kubernetes yang menyediakan cara untuk mengakses kontainer (pod) yang sedang berjalan,
  • apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: mysql-pv-claim
    spec:
      storageClassName: manual
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 5Gi
    
    _1. Objek Kubernetes, adalah bagian dari penyimpanan di kluster,
  • apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: mysql-pv-claim
    spec:
      storageClassName: manual
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 5Gi
    
    _2. Permintaan untuk penyimpanan Persistent Volume,
  • apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: mysql-pv-claim
    spec:
      storageClassName: manual
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 5Gi
    
    _3. File yang memberi tahu Kubernetes tentang berbagai Objek yang akan dibuat. Itu ditulis dalam sintaks YAML

Secara teknis, Anda akan membuat

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"
9 yang akan mengelola
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"
8 yang menjalankan wadah gambar docker MySQL, lalu Anda akan membuat
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
0 yang akan mengizinkan akses ke pod. Pod ini akan meminta penyimpanan (menggunakan
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
2) ke sumber daya penyimpanan (
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
1)

Persistent Volume dapat dibuat secara statis atau dinamis. Pada fase selanjutnya dari tutorial ini, Anda belajar bagaimana melakukannya secara statis

Agar tutorial ini lancar, Anda perlu menginstal

  • Docker di mesin Anda, klik DI SINI untuk menginstal;
  • Cluster Kubernetes Lokal melalui
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: mysql-pv-claim
    spec:
      storageClassName: manual
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 5Gi
    
    9, klik DI SINI untuk menginstal minikube,
  • Secara opsional, Anda dapat membuat akun Docker Hub DI SINI

1. Bangun Persistent Volume (PV)

Pertama, buat direktori kerja dan masuk

$ mkdir mysql-kube
$ cd mysql-kube/

Masuk ke mode layar penuh Keluar dari mode layar penuh

Buat file yaml bernama

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
spec:
  selector:
    matchLabels:
      app: mysql
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
        - image: mysql:8.0
          name: mysql
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: password
          ports:
            - containerPort: 3306
              name: mysql
          volumeMounts:
            - name: mysql-persistent-storage
              mountPath: /var/lib/mysql
      volumes:
        - name: mysql-persistent-storage
          persistentVolumeClaim:
            claimName: mysql-pv-claim
_0, masukkan berikut ini

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"

Masuk ke mode layar penuh Keluar dari mode layar penuh

Simpan dan tutup file

File yaml ini setelah diterapkan di kubernetes, akan menyediakan

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
1, untuk server database MySQL
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"
8. Volume persisten tidak akan bergantung pada siklus hidup pod. Ini berarti kapan pun pod dimulai ulang karena crash atau malfungsi, penyimpanan yang disediakan akan bertahan

2. Membangun Persistent Volume Claim (PVC)

Di direktori kerja

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
spec:
  selector:
    matchLabels:
      app: mysql
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
        - image: mysql:8.0
          name: mysql
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: password
          ports:
            - containerPort: 3306
              name: mysql
          volumeMounts:
            - name: mysql-persistent-storage
              mountPath: /var/lib/mysql
      volumes:
        - name: mysql-persistent-storage
          persistentVolumeClaim:
            claimName: mysql-pv-claim
3, buat file bernama
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
spec:
  selector:
    matchLabels:
      app: mysql
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
        - image: mysql:8.0
          name: mysql
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: password
          ports:
            - containerPort: 3306
              name: mysql
          volumeMounts:
            - name: mysql-persistent-storage
              mountPath: /var/lib/mysql
      volumes:
        - name: mysql-persistent-storage
          persistentVolumeClaim:
            claimName: mysql-pv-claim
4, letakkan yang berikut ini

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
_

Masuk ke mode layar penuh Keluar dari mode layar penuh

Di atas sana, Anda membuat file yang akan menyediakan penyimpanan saat diterapkan, sebaliknya file ini akan membuat

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
2 yang akan digunakan oleh MySQL Pod untuk meminta penyimpanan yang disediakan tersebut

3. Penerapan pod MySQL

Di sini Anda akan membuat file bernama

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
spec:
  selector:
    matchLabels:
      app: mysql
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
        - image: mysql:8.0
          name: mysql
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: password
          ports:
            - containerPort: 3306
              name: mysql
          volumeMounts:
            - name: mysql-persistent-storage
              mountPath: /var/lib/mysql
      volumes:
        - name: mysql-persistent-storage
          persistentVolumeClaim:
            claimName: mysql-pv-claim
6 di direktori yang sama,
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
spec:
  selector:
    matchLabels:
      app: mysql
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
        - image: mysql:8.0
          name: mysql
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: password
          ports:
            - containerPort: 3306
              name: mysql
          volumeMounts:
            - name: mysql-persistent-storage
              mountPath: /var/lib/mysql
      volumes:
        - name: mysql-persistent-storage
          persistentVolumeClaim:
            claimName: mysql-pv-claim
3. Buat file dan letakkan kode di bawah ini

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
spec:
  selector:
    matchLabels:
      app: mysql
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
        - image: mysql:8.0
          name: mysql
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: password
          ports:
            - containerPort: 3306
              name: mysql
          volumeMounts:
            - name: mysql-persistent-storage
              mountPath: /var/lib/mysql
      volumes:
        - name: mysql-persistent-storage
          persistentVolumeClaim:
            claimName: mysql-pv-claim

Masuk ke mode layar penuh Keluar dari mode layar penuh

File ini akan membuat objek deployment untuk mengelola sebuah Pod yang menjalankan container dari gambar docker MySQL dan dalam spesifikasinya, terdapat referensi ke

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
2 yang akan digunakan oleh pod untuk meminta
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
1
Bagaimana cara saya terhubung ke mysql pod di kubernetes?

Sebelum menerapkan file penerapan ini, buat objek layanan yang akan mengizinkan pod lain untuk mengakses pod database MySQL yang akan dibuat
Masih di direktori

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
spec:
  selector:
    matchLabels:
      app: mysql
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
        - image: mysql:8.0
          name: mysql
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: password
          ports:
            - containerPort: 3306
              name: mysql
          volumeMounts:
            - name: mysql-persistent-storage
              mountPath: /var/lib/mysql
      volumes:
        - name: mysql-persistent-storage
          persistentVolumeClaim:
            claimName: mysql-pv-claim
_3, buat file yaml bernama
apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  ports:
    - port: 3306
  selector:
    app: mysql
  clusterIP: None
1 dan letakkan kode di bawah ini

apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  ports:
    - port: 3306
  selector:
    app: mysql
  clusterIP: None

Masuk ke mode layar penuh Keluar dari mode layar penuh

Simpan file, pastikan kluster Kubernetes Anda aktif dan berjalan. Buka terminal dan navigasikan ke

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
spec:
  selector:
    matchLabels:
      app: mysql
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
        - image: mysql:8.0
          name: mysql
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: password
          ports:
            - containerPort: 3306
              name: mysql
          volumeMounts:
            - name: mysql-persistent-storage
              mountPath: /var/lib/mysql
      volumes:
        - name: mysql-persistent-storage
          persistentVolumeClaim:
            claimName: mysql-pv-claim
_3 jalankan yang berikut ini

$ minikube start

Masuk ke mode layar penuh Keluar dari mode layar penuh

Bagaimana cara saya terhubung ke mysql pod di kubernetes?

Minikube dengan cepat menyiapkan kluster Kubernetes lokal di macOS, Linux, dan Windows
Sekarang, beri tahu Kubernetes bahwa kita ingin menggunakan semua file konfigurasi yang dibuat. Jalankan perintah ini di

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
spec:
  selector:
    matchLabels:
      app: mysql
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
        - image: mysql:8.0
          name: mysql
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: password
          ports:
            - containerPort: 3306
              name: mysql
          volumeMounts:
            - name: mysql-persistent-storage
              mountPath: /var/lib/mysql
      volumes:
        - name: mysql-persistent-storage
          persistentVolumeClaim:
            claimName: mysql-pv-claim
_3 dalam urutan berurutan di bawah ini

  • Langkah 1. Buat Volume Persisten

$ kubectl apply -f mysql-pv.yaml

Masuk ke mode layar penuh Keluar dari mode layar penuh

Bagaimana cara saya terhubung ke mysql pod di kubernetes?

  • Langkah 2. Buat Klaim Volume Persisten

$ kubectl apply -f mysql-pvc.yaml

Masuk ke mode layar penuh Keluar dari mode layar penuh

Bagaimana cara saya terhubung ke mysql pod di kubernetes?

  • Langkah 3. Buat Penerapan

$ kubectl apply -f mysql-deployment.yaml

Masuk ke mode layar penuh Keluar dari mode layar penuh

Bagaimana cara saya terhubung ke mysql pod di kubernetes?

  • Langkah 4. Buat Layanan

$ kubectl apply -f mysql-service.yaml

Masuk ke mode layar penuh Keluar dari mode layar penuh

Bagaimana cara saya terhubung ke mysql pod di kubernetes?

Urutan perintah ini membuat

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
1,
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
2,
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"
9 yang mengelola
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"
8 menjalankan
apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  ports:
    - port: 3306
  selector:
    app: mysql
  clusterIP: None
8 dari mysql docker image dan
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
0 yang mengizinkan akses ke Pod tersebut

Periksa apakah objek kubernet Anda berhasil dibuat

  • Penyebaran

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"
0

Masuk ke mode layar penuh Keluar dari mode layar penuh

Bagaimana cara saya terhubung ke mysql pod di kubernetes?

  • Polong

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"
_1

Masuk ke mode layar penuh Keluar dari mode layar penuh

Bagaimana cara saya terhubung ke mysql pod di kubernetes?

  • Melayani

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"
_2

Masuk ke mode layar penuh Keluar dari mode layar penuh

Bagaimana cara saya terhubung ke mysql pod di kubernetes?

Anda melakukannya dengan baik sejauh ini, sekarang jalankan pengujian untuk membuat Pod yang menjalankan container MySQL yang terhubung ke server database MySQL Pod sebagai klien;

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"
_3

Masuk ke mode layar penuh Keluar dari mode layar penuh

Perintah ini menjalankan container MySQL dalam mode interaktif, yang memungkinkan Anda untuk menjalankan perintah pada saat menjalankan container
Shell MySQL akan terbuka dan Anda dapat membuat database baru, tabel baru, memasukkan data ke tabel, dan melakukan lebih banyak perintah SQL

Bagaimana cara saya terhubung ke mysql pod di kubernetes?

4. Kesimpulan

Dengan ini, Anda belajar melalui Objek kubernetes cara menerapkan server database MySQL di Cluster Kubernetes menggunakan metode statis penyediaan penyimpanan

Anda juga menguji cara menyambungkan klien ke server yang diterapkan, dengan menjalankan perintah SQL saat menjalankan wadah dalam mode interaktif

Jika Anda memiliki pertanyaan, komentar, silakan hubungi di sini atau di Twitter saya;

Bagaimana cara mengakses MySQL di pod Kubernetes?

Penerapan MySQL di Kubernetes. Langkah 1. Buat Rahasia Kubernetes. Langkah 2. Buat Persistent Volume dan Klaim Volume. Langkah 3. Buat Penerapan MySQL
Akses Instans MySQL Anda
Perbarui Penerapan MySQL Anda
Hapus Instance MySQL Anda

Bagaimana cara saya terhubung ke layanan MySQL di Kubernetes?

Untuk terhubung ke instance MySQL dari luar klaster Kubernetes, Anda harus mengonfigurasi layanan Kubernetes agar instance bertipe LoadBalancer . Untuk mengakses server MySQL dari alamat IP eksternal. Buat pengguna basis data untuk digunakan untuk koneksi eksternal.

Bagaimana cara saya terhubung ke pod tertentu di Kubernetes?

Untuk mengakses kontainer di dalam pod yang berisi beberapa kontainer. .
Jalankan perintah berikut menggunakan nama pod dari wadah yang ingin Anda akses. kubectl mendeskripsikan pod pod_name. .
Untuk mengakses salah satu kontainer di pod, masukkan perintah berikut. kubectl exec -it pod_name -c container_name bash

Bagaimana cara mengakses database di Kubernetes?

Mengakses Pod dengan Kubectl . Perintah psql ini terhubung ke database default Postgres, postgres. Jika Anda mengakses instance HA, pastikan Anda masuk ke pod utama. Use the kubectl tool to run utilities directly in a Postgres pod. This psql command connects to the default Postgres database, postgres . If you're accessing an HA instance, ensure you login into the primary pod.