簡體   English   中英

將mysql數據導入kubernetes pod

[英]import mysql data to kubernetes pod

有誰知道如何將我的 dump.sql 文件中的數據導入到 kubernetes pod?

直接,與您處理 docker 容器的方式相同:

docker exec -i container_name mysql -uroot --password=secret database < Dump.sql

或者使用存儲在現有 docker 容器卷中的數據並將其傳遞給 pod 。

就像其他人正在尋找這個一樣:

kubectl -n namespace exec -i my_sql_pod_name -- mysql -u user -ppassword < my_local_dump.sql

要回答您的具體問題:

您可以kubectl exec進入您的容器,以便在其中運行命令。 您可能需要首先確保容器可以訪問該文件,方法可能是將其存儲在集群可以訪問的位置(網絡?),然后在容器內使用 wget/curl 使其可用。 甚至可以使用kubectl exec打開一個交互式會話。

但是,在增加通用性方面這樣做的方法是:

  1. 創建一個服務,讓您可以從集群外部訪問在 pod 上運行的 mysql 實例,並將您的本地 mysql 客戶端連接到它。

  2. 如果每次啟動此類 mysql pod 時都執行此初始化操作,則它可以存儲在持久卷上,並且可以在啟動時在 pod 中執行腳本。

  3. 如果您在啟動 Pod 時通常需要復制多條數據,請查看用於獲取該數據的init 容器

TL;DR 使用 ConfigMaps,然后使用該 ConfgMap 作為掛載到 /docker-entrypoint-initdb.d 文件夾

代碼

MySQL 部署

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
spec: 
  replicas: 1
  selector:
    matchLabels:
      app: mysql
  strategy:
    type: Recreate 
  template: 
    metadata: 
      labels: 
        app: mysql
    spec: 
      containers:
        - name: mysql
          image: mysql:5.6
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: dbpassword11
          ports:
            - containerPort: 3306
              name: mysql    
          volumeMounts:
            - name: mysql-persistent-storage
              mountPath: /var/lib/mysql    
            - name: usermanagement-dbcreation-script
              mountPath: /docker-entrypoint-initdb.d #https://hub.docker.com/_/mysql Refer Initializing a fresh instance                                            
      volumes: 
        - name: mysql-persistent-storage
          persistentVolumeClaim:
            claimName: ebs-mysql-pv-claim
        - name: usermanagement-dbcreation-script
          configMap:
            name: usermanagement-dbcreation-script

MySQL 配置映射

apiVersion: v1
kind: ConfigMap
metadata:
  name: usermanagement-dbcreation-script
data: 
  mysql_usermgmt.sql: |-
    DROP DATABASE IF EXISTS usermgmt;
    CREATE DATABASE usermgmt; 

參考:

https://github.com/stacksimplify/aws-eks-kubernetes-masterclass/blob/master/04-EKS-Storage-with-EBS-ElasticBlockStore/04-02-SC-PVC-ConfigMap-MySQL/kube-manifests/ 04-mysql-deployment.yml

https://github.com/stacksimplify/aws-eks-kubernetes-masterclass/blob/master/04-EKS-Storage-with-EBS-ElasticBlockStore/04-02-SC-PVC-ConfigMap-MySQL/kube-manifests/ 03-UserManagement-ConfigMap.yml

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM