Thursday, November 21, 2024

Configmap trong Kubernetes Cluster

-

ConfigMap là một tài nguyên của Kubernetes được sử dụng để lưu trữ dữ liệu cấu hình. Nó giúp tách dữ liệu cấu hình ra khỏi các ứng dụng và cung cấp một cơ chế để cung cấp dữ liệu đó cho các ứng dụng mà không cần phải thay đổi mã nguồn.

Trong thực tế, ConfigMap được sử dụng khi chúng ta muốn lưu trữ các thông tin cấu hình như biến môi trường, file cấu hình, giá trị cấu hình cho các ứng dụng, và chúng ta muốn truy cập vào dữ liệu này từ các Pod đang chạy trong Kubernetes.

Với ConfigMap, chúng ta có thể cập nhật dữ liệu cấu hình mà không cần phải khởi động lại các Pod, tạo ra tính linh hoạt và khả năng quản lý dễ dàng cho hệ thống.

Có thể sử dụng configmap để import dữ liệu vào MariaDB đang chạy trên Kubernetes:

Tạo một ConfigMap chứa file dữ liệu và sử dụng nó để mount vào container chứa MariaDB như một volume. Sau đó sử dụng lệnh mysql để import dữ liệu từ file đó vào database:

# tạo ConfigMap chứa file dữ liệu
kubectl create configmap mariadb-data --from-file=/home/wiki_hoanghd.sql

# sửa file deployment.yaml để mount ConfigMap như một volume vào container chứa MariaDB
...
spec:
  containers:
  - name: mariadb
    image: mariadb:latest
    volumeMounts:
    - name: mariadb-data
      mountPath: /data/mariadb-data
...
  volumes:
  - name: mariadb-data
    configMap:
      name: mariadb-data

# truy cập vào container chứa MariaDB và import dữ liệu
kubectl exec -it <namespace>/<mariadb-pod> -- /bin/bash
mysql -u <username> -p<password> <database> < /data/mariadb-data/wiki_hoanghd.sql

# hoặc
kubectl exec -it pod/<mariadb-pod> -n <namespace> -- /bin/bash
mysql -u <username> -p<password> <database> < /data/mariadb-data/wiki_hoanghd.sql

Chú ý rằng để import dữ liệu thành công, file dữ liệu phải được định dạng đúng và đảm bảo rằng các bảng và cột đã được tạo trước đó trong database. File /home/wiki_hoanghd.sql bạn đặt ở node nào thì bạn hãy thực hiện các lệnh ở node đó, ví dụ tôi đặt file /home/wiki_hoanghd.sql tại node master1 thì các lệnh tôi sẽ thực hiện ở node master1.

Nếu bạn muốn tạo ConfigMap trên tất cả các node worker và master, bạn có thể sử dụng các công cụ quản lý cụ thể của Kubernetes, ví dụ như kubectl apply và sử dụng một file YAML chứa định nghĩa ConfigMap để triển khai trên cả cluster. Trong file YAML này, bạn có thể sử dụng kind: ConfigMap để định nghĩa một ConfigMap và data để chỉ định các giá trị cho ConfigMap từ file data.sql.

apiVersion: v1
kind: ConfigMap
metadata:
  name: mariadb-data
data:
  data.sql: |-
    (đưa nội dung của file wiki_hoanghd.sql vào đây)

Có thể cập nhật một configmap hiện tại bằng cách sử dụng lệnh kubectl apply và chỉ định tên configmap. Ví dụ:

kubectl create configmap mariadb-data --from-file=/home/wiki_hoanghd.sql --dry-run=client -o yaml | kubectl apply -f -

Trong đó, mariadb-data là tên configmap hiện tại cần cập nhật, config.yaml là tên file cần cập nhật, và --dry-run=client -o yaml được sử dụng để tạo ra đối tượng configmap mới từ file YAML được tạo ra và sau đó áp dụng các thay đổi này với kubectl apply -f -.

Đôi lúc configmap không cập nhật nội dung mới thì bạn có thể khởi động lại các pod bằng cách sử dụng lệnh kubectl rollout restart để restart một pod trong Kubernetes. Bạn chỉ cần đưa tên deployment hoặc statefulset hoặc daemonset của pod đó vào lệnh như sau:

kubectl rollout restart deployment/my-deployment

Thay my-deployment bằng tên deployment của pod bạn muốn restart. Nếu bạn muốn restart một statefulset hoặc daemonset, chỉ cần thay thế deployment bằng statefulset hoặc daemonset trong lệnh.

Hoặc nếu bạn chỉ có 1 pod thì cũng có thể sử dụng lệnh kubectl delete pod để xóa pod hiện tại và Kubernetes sẽ tự động tạo ra một pod mới để thay thế. Ví dụ, để xóa pod có tên my-pod, bạn có thể sử dụng lệnh:

kubectl delete pod my-pod

Nếu bạn muốn khởi động lại pod mới, hãy đảm bảo rằng pod đã được khai báo trong tệp YAML hoặc sử dụng lệnh kubectl run để tạo pod mới.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories