国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Kubernetes(K8S)使用PV和PVC做存儲(chǔ)安裝mysql

這篇具有很好參考價(jià)值的文章主要介紹了Kubernetes(K8S)使用PV和PVC做存儲(chǔ)安裝mysql。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

環(huán)境準(zhǔn)備

首先你需要一個(gè)k8s環(huán)境,可以參考我寫的文章:https://blog.csdn.net/m0_51510236/article/details/130842122

什么是PV和PVC

我們可以簡(jiǎn)單看一下官網(wǎng)的描述:https://kubernetes.io/zh-cn/docs/concepts/storage/persistent-volumes/#introduction

持久卷(PersistentVolume,PV) 是集群中的一塊存儲(chǔ),可以由管理員事先制備, 或者使用存儲(chǔ)類(Storage Class)來動(dòng)態(tài)制備。 持久卷是集群資源,就像節(jié)點(diǎn)也是集群資源一樣。PV 持久卷和普通的 Volume 一樣, 也是使用卷插件來實(shí)現(xiàn)的,只是它們擁有獨(dú)立于任何使用 PV 的 Pod 的生命周期。 此 API 對(duì)象中記述了存儲(chǔ)的實(shí)現(xiàn)細(xì)節(jié),無(wú)論其背后是 NFS、iSCSI 還是特定于云平臺(tái)的存儲(chǔ)系統(tǒng)。

持久卷申領(lǐng)(PersistentVolumeClaim,PVC) 表達(dá)的是用戶對(duì)存儲(chǔ)的請(qǐng)求。概念上與 Pod 類似。 Pod 會(huì)耗用節(jié)點(diǎn)資源,而 PVC 申領(lǐng)會(huì)耗用 PV 資源。Pod 可以請(qǐng)求特定數(shù)量的資源(CPU 和內(nèi)存);同樣 PVC 申領(lǐng)也可以請(qǐng)求特定的大小和訪問模式 (例如,可以要求 PV 卷能夠以 ReadWriteOnce、ReadOnlyMany 或 ReadWriteMany 模式之一來掛載,參見訪問模式)。

本篇文章就用上面提到的nfs來搭建pv和pvc并部署mysql

環(huán)境準(zhǔn)備

首先我們需要搭建一個(gè)k8s集群,并且準(zhǔn)備一臺(tái)nfs服務(wù)器,為了方便我就使用k8s的主節(jié)點(diǎn)作為nfs服務(wù)器,服務(wù)器列表如下表:

IP地址 服務(wù)器用途
192.168.1.160 k8s-master,k8s的主節(jié)點(diǎn)和nfs服務(wù)器
192.168.1.161 k8s-node01,k8s的第一個(gè)工作節(jié)點(diǎn)
192.168.1.162 k8s-node02,k8s的第二個(gè)工作節(jié)點(diǎn)

配置nfs

安裝nfs

首先我們需要在三臺(tái)服務(wù)器單中都需要安裝nfs軟件包,使用如下命令進(jìn)行安裝:

yum install -y nfs-utils

如圖三臺(tái)服務(wù)器都需要安裝:
使用pvc部署mysql,kubernetes,mysql,容器

配置nfs服務(wù)端

然后我們需要在nfs的主服務(wù)器暴露一個(gè) /data/nfs/mysql 目錄,我們需要修改 /etc/exports 配置文件,需要將這一行加在里面:

/data/nfs/mysql *(rw,sync,no_root_squash)

可以直接執(zhí)行這行命令,第一行為創(chuàng)建這個(gè)目錄,第二行為修改文件

mkdir -p /data/nfs/mysql
cat >> /etc/exports << EOF
/data/nfs/mysql *(rw,sync,no_root_squash)
EOF

然后我們需要啟動(dòng)nfs服務(wù),只需要在nfs服務(wù)器上執(zhí)行:

systemctl enable --now nfs-server

然后我們執(zhí)行這行命令,看目錄是否暴露:

showmount -e nfs服務(wù)器地址

可以看到目錄暴露成功:
使用pvc部署mysql,kubernetes,mysql,容器

創(chuàng)建命名空間

我們需要?jiǎng)?chuàng)建一個(gè)命名空間,當(dāng)然也可以越過這一步,這里創(chuàng)建命名空間的目的只是為了更接近生產(chǎn)環(huán)境,創(chuàng)建命名空間的yaml文件:

apiVersion: v1
kind: Namespace
metadata:
  name: deploy-test
spec: {}
status: {}

上面的yaml文件創(chuàng)建了一個(gè)名為 deploy-test 的命名空間,可以查看創(chuàng)建結(jié)果:
使用pvc部署mysql,kubernetes,mysql,容器

配置pv和pvc

pv的yaml文件

注意按照提示修改內(nèi)容:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: deploy-mysql-nfs-pv # pv的名字
  namespace: deploy-test # 這里為命名空間的名字
spec:
  capacity:
    storage: 1Gi # 申請(qǐng)的硬盤大小為1GB,可修改
  accessModes:
    - ReadWriteMany # 權(quán)限為多節(jié)點(diǎn)讀寫
  nfs:
    # 注意修改nfs服務(wù)器地址
    server: 192.168.1.160
    # 注意修改目錄的地址
    path: /data/nfs/mysql
  storageClassName: "nfs" # 存儲(chǔ)類型選擇nfs

pvc的yaml文件

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: deploy-mysql-nfs-pvc # 為pvc取一個(gè)好聽的名字
  namespace: deploy-test # 命名空間名字
spec:
  accessModes:
    - ReadWriteMany # 權(quán)限為多節(jié)點(diǎn)讀寫
  storageClassName: "nfs" # 存儲(chǔ)類型為nfs
  resources:
    requests:
      storage: 1Gi # 申請(qǐng)大小容量為1GB
  volumeName: deploy-mysql-nfs-pv # 綁定的pv名字

執(zhí)行后我們可以查看創(chuàng)建的狀態(tài):
使用pvc部署mysql,kubernetes,mysql,容器

部署mysql

創(chuàng)建mysql的root密碼的secret

前面準(zhǔn)備工作都做好了,接下來我們就可以開始部署mysql了,但是之前我們還需要?jiǎng)?chuàng)建一個(gè)secret,執(zhí)行命令獲取yaml文件內(nèi)容:

# 命令說明
kubectl create secret generic mysql-password --from-literal=mysql_root_password=mysql的root密碼 -n 命名空間 --dry-run=client -o=yaml

# 命令示例
kubectl create secret generic mysql-password --from-literal=mysql_root_password=root -n deploy-test --dry-run=client -o=yaml

生成如圖所示:
使用pvc部署mysql,kubernetes,mysql,容器

創(chuàng)建mysql部署的yaml

apiVersion: v1
kind: Service
metadata:
  name: deploy-mysql-svc # mysql暴露服務(wù)的名字
  namespace: deploy-test # 命名空間
  labels:
    app: mysql
spec:
  ports:
  - port: 3306 # 暴露給外部3306端口
    name: mysql
    targetPort: 3306 # 內(nèi)部目標(biāo)3306端口
    nodePort: 30306 # 外部訪問集群nodeport的30306端口
  selector:
    app: mysql
  type: NodePort
  sessionAffinity: ClientIP

---

apiVersion: apps/v1
kind: StatefulSet # 創(chuàng)建一個(gè)StatefulSet有狀態(tài)的控制器
metadata:
  name: deploy-mysql # 部署的名字
  namespace: deploy-test # 命名空間
spec:
  selector:
    matchLabels:
      app: mysql
  serviceName: "deploy-mysql-svc" # 注意指定上面的那個(gè)服務(wù)名稱
  replicas: 1
  template:
    metadata:
      labels:
        app: mysql
    spec:
      terminationGracePeriodSeconds: 10
      containers:
      - args: # 新增一些啟動(dòng)參數(shù)
        - --character-set-server=utf8mb4
        - --collation-server=utf8mb4_unicode_ci
        - --lower_case_table_names=1
        - --default-time_zone=+8:00
        name: mysql
        # image: docker.io/library/mysql:5.7.43
        image: registry.cn-shenzhen.aliyuncs.com/xiaohh-docker/mysql:5.7.43 # 因?yàn)閐ockerhub上鏡像經(jīng)常拉取失敗,所以使用此鏡像
        ports:
        - containerPort: 3306 # 容器內(nèi)部暴露3306端口
          name: mysql
        volumeMounts:
        - name: mysql-data # 引用pvc掛載的名字
          mountPath: /var/lib/mysql # 這個(gè)是容器內(nèi)部存放數(shù)據(jù)的文件夾目錄,需要掛在到pvc當(dāng)中
        env:
        - name: MYSQL_ROOT_PASSWORD
          valueFrom: # mysql的密碼引用上面創(chuàng)建的secret
            secretKeyRef:
              key: mysql_root_password
              name: mysql-password
      volumes:
      - name: mysql-data # pvc的掛載名稱
        persistentVolumeClaim:
          claimName: deploy-mysql-nfs-pvc # 指定使用那個(gè)pvc

部署mysql

整體的yaml文件內(nèi)容為:

apiVersion: v1
kind: Namespace
metadata:
  name: deploy-test
spec: {}
status: {}

---

apiVersion: v1
kind: PersistentVolume
metadata:
  name: deploy-mysql-nfs-pv
  namespace: deploy-test
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteMany
  nfs:
    server: 192.168.1.160
    path: /data/nfs/mysql
  storageClassName: "nfs"

---

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: deploy-mysql-nfs-pvc
  namespace: deploy-test
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: "nfs"
  resources:
    requests:
      storage: 1Gi
  volumeName: deploy-mysql-nfs-pv

---

apiVersion: v1
data:
  mysql_root_password: cm9vdA==
kind: Secret
metadata:
  name: mysql-password
  namespace: deploy-test

---

apiVersion: v1
kind: Service
metadata:
  name: deploy-mysql-svc
  namespace: deploy-test
  labels:
    app: mysql
spec:
  ports:
  - port: 3306
    name: mysql
    targetPort: 3306
    nodePort: 30306
  selector:
    app: mysql
  type: NodePort
  sessionAffinity: ClientIP

---

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: deploy-mysql
  namespace: deploy-test
spec:
  selector:
    matchLabels:
      app: mysql
  serviceName: "deploy-mysql-svc"
  replicas: 1
  template:
    metadata:
      labels:
        app: mysql
    spec:
      terminationGracePeriodSeconds: 10
      containers:
      - args:
        - --character-set-server=utf8mb4
        - --collation-server=utf8mb4_unicode_ci
        - --lower_case_table_names=1
        - --default-time_zone=+8:00
        name: mysql
        # image: docker.io/library/mysql:5.7.43
        image: registry.cn-shenzhen.aliyuncs.com/xiaohh-docker/mysql:5.7.43
        ports:
        - containerPort: 3306
          name: mysql
        volumeMounts:
        - name: mysql-data
          mountPath: /var/lib/mysql
        env:
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              key: mysql_root_password
              name: mysql-password
      volumes:
      - name: mysql-data
        persistentVolumeClaim:
          claimName: deploy-mysql-nfs-pvc

執(zhí)行以下命令部署:

kubectl apply -f deploy-mysql.yaml

創(chuàng)建結(jié)果:
使用pvc部署mysql,kubernetes,mysql,容器

執(zhí)行下面這行命令監(jiān)控部署:

watch kubectl get all -o wide -n deploy-test

看到下面這個(gè)代表創(chuàng)建成功:
使用pvc部署mysql,kubernetes,mysql,容器

當(dāng)我們查看nfs當(dāng)中掛在出來的mysql目錄的時(shí)候:

ll /data/nfs/mysql/

文件夾內(nèi)容:
使用pvc部署mysql,kubernetes,mysql,容器

鏈接mysql

外部鏈接

在我們創(chuàng)建mysql的時(shí)候我們就規(guī)定了一個(gè)NodePort端口,如圖:
使用pvc部署mysql,kubernetes,mysql,容器

我們直接使用集群當(dāng)中任意一個(gè)節(jié)點(diǎn)的30306端口即可鏈接這個(gè)數(shù)據(jù)庫(kù):

mysql -uroot -h192.168.1.160 -p -P30306

查看結(jié)果:
使用pvc部署mysql,kubernetes,mysql,容器

內(nèi)部鏈接

在集群里面訪問我們可以通過主機(jī)名,主機(jī)名格式如下:

<pod名稱>.<service名稱>.<命名空間名稱>.svc.cluster.local

執(zhí)行命令查看:

kubectl get all -o wide -n deploy-test

各類名稱如圖所示:
使用pvc部署mysql,kubernetes,mysql,容器

所以我們此次訪問mysql的主機(jī)名如下:

deploy-mysql-0.deploy-mysql-svc.deploy-test.svc.cluster.local

我們此次就不建立其他的pod來驗(yàn)證是否能夠安裝上了,我們直接檢查集群內(nèi)的dns解析是否正常就知道這個(gè)域名是否正常了,使用以下命令查看k8s集群當(dāng)中的dns服務(wù)的地址:

kubectl get svc -o wide -n kube-system | grep dns

查看dns服務(wù)地址:
使用pvc部署mysql,kubernetes,mysql,容器

直接通過 nslookup 嘗試解析查看是否解析到正確的IP地址上:

# 安裝nslookup命令所在的軟件包
yum install -y bind-utils
# 解析域名
nslookup deploy-mysql-0.deploy-mysql-svc.deploy-test.svc.cluster.local 10.96.0.10

發(fā)現(xiàn)域名解析是正常的:
使用pvc部署mysql,kubernetes,mysql,容器

好了,k8s上部署mysql完成了,下課文章來源地址http://www.zghlxwxcb.cn/news/detail-771061.html

到了這里,關(guān)于Kubernetes(K8S)使用PV和PVC做存儲(chǔ)安裝mysql的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • k8s 存儲(chǔ)卷和pvc,pv

    k8s 存儲(chǔ)卷和pvc,pv

    存儲(chǔ)卷---數(shù)據(jù)卷 容器內(nèi)的目錄和宿主機(jī)的目錄進(jìn)行掛載。 容器在系統(tǒng)上的生命周期是短暫的,deletek8s用控制器創(chuàng)建的pod,delete相當(dāng)于重啟,容器的狀態(tài)也會(huì)回復(fù)到初始狀態(tài)。 一旦回到初始狀態(tài),所有的后天編輯的文件的都會(huì)消失。 容器容器和節(jié)點(diǎn)之間創(chuàng)建一個(gè)可以持久化保

    2024年01月16日
    瀏覽(23)
  • k8s pv pvc的介紹|動(dòng)態(tài)存儲(chǔ)|靜態(tài)存儲(chǔ)

    k8s pv pvc的介紹|動(dòng)態(tài)存儲(chǔ)|靜態(tài)存儲(chǔ)

    當(dāng)Pod被分配給節(jié)點(diǎn)時(shí),首先創(chuàng)建emptyDir卷,并且只要該P(yáng)od在該節(jié)點(diǎn)上運(yùn)行,該卷就會(huì)存在。正如卷的名字所述,它最初是空的。Pod 中的容器可以讀取和寫入emptyDir卷中的相同文件,盡管該卷可以掛載到每個(gè)容器中的相同或不同路徑上。當(dāng)出于任何原因從節(jié)點(diǎn)中刪除 Pod 時(shí),em

    2024年02月06日
    瀏覽(21)
  • K8s---存儲(chǔ)卷(動(dòng)態(tài)pv和pvc)

    K8s---存儲(chǔ)卷(動(dòng)態(tài)pv和pvc)

    當(dāng)我要發(fā)布pvc可以生成pv,還可以共享服務(wù)器上直接生成掛載目錄。pvc直接綁定pv。 1、卷插件:k8s本生支持的動(dòng)態(tài)pv創(chuàng)建不包括nfs,需要聲明和安裝一個(gè)外部插件 Provisioner: 存儲(chǔ)分配器。動(dòng)態(tài)創(chuàng)建pv,然后根據(jù)pvc的請(qǐng)求自動(dòng)綁定和使用。 2、StorageClass:來定義pv的屬性,存儲(chǔ)類型

    2024年01月21日
    瀏覽(17)
  • k8s中的PV和PVC存儲(chǔ)介紹

    目錄 一.PV介紹 1.含義 2.關(guān)鍵配置參數(shù) 二.PVC介紹 1.含義 2.關(guān)鍵參數(shù)配置 三.PV和PVC的生命周期問題 1.PV的生命周期會(huì)有4個(gè)階段 2.用戶申請(qǐng)空間PV的周期流程 3.PV和PVC的使用/釋放/回收 四.案例演示 1.NFS配置 2.新建PV 3.新建PVC 4.新建Pod測(cè)試 5.模擬刪除Pod后后端目錄內(nèi)數(shù)據(jù)不會(huì)受影響

    2024年03月15日
    瀏覽(20)
  • K8S持久化存儲(chǔ)--- PVC和PV的存儲(chǔ)

    PersistentVolume ( PV )是群集中的一塊存儲(chǔ),由管理員配置或使用存儲(chǔ)類動(dòng)態(tài)配置。 它是集群中的資源,就像 pod 是 k8s 集群資源一樣。 PV是容量插件,如 Volumes ,其生命周期獨(dú)立于使用 PV 的任何單個(gè) pod 。 PersistentVolumeClaim ( PVC )是一個(gè)持久化存儲(chǔ)卷,我們?cè)趧?chuàng)建 pod 時(shí)可以

    2023年04月10日
    瀏覽(18)
  • 【云原生】K8S存儲(chǔ)卷:PV、PVC詳解

    【云原生】K8S存儲(chǔ)卷:PV、PVC詳解

    容器磁盤上的文件的生命周期是短暫的,這就使得在容器中運(yùn)行重要應(yīng)用時(shí)會(huì)出現(xiàn)一些問題。首先,當(dāng)容器崩潰時(shí),kubelet 會(huì)重啟它,但是容器中的文件將丟失——容器以干凈的狀態(tài)(鏡像最初的狀態(tài))重新啟動(dòng)。其次,在Pod中同時(shí)運(yùn)行多個(gè)容器時(shí),這些容器之間通常需要共

    2024年02月12日
    瀏覽(21)
  • Kubernetes基礎(chǔ)(二十二)-K8S的PV/PVC/StorageClass詳解

    Kubernetes基礎(chǔ)(二十二)-K8S的PV/PVC/StorageClass詳解

    先來個(gè) 一句話總結(jié) :PV、PVC是K8S用來做存儲(chǔ)管理的資源對(duì)象,它們讓存儲(chǔ)資源的使用變得 可控 ,從而保障系統(tǒng)的穩(wěn)定性、可靠性。StorageClass則是為了減少人工的工作量而去 自動(dòng)化創(chuàng)建 PV的組件。所有Pod使用存儲(chǔ)只有一個(gè)原則: 先規(guī)劃 ?→? 后申請(qǐng) ?→? 再使用 。 1.1 PV概念

    2024年02月20日
    瀏覽(27)
  • k8s篇-應(yīng)用持久化存儲(chǔ)(PV和PVC)

    一般來說,容器一旦被刪除后,容器運(yùn)行時(shí)內(nèi)部產(chǎn)生的所有文件數(shù)據(jù)也會(huì)被清理掉,因此,Docker提供了 Volume 這種方式來將數(shù)據(jù)持久化存儲(chǔ)。 可以說,Volume 是Pod與外部存儲(chǔ)設(shè)備進(jìn)行數(shù)據(jù)傳遞的通道,也是Pod內(nèi)部容器間、Pod與Pod間、Pod與外部環(huán)境進(jìn)行數(shù)據(jù)共享的方式。 實(shí)際上

    2023年04月08日
    瀏覽(13)
  • 使用k8s部署Mysql實(shí)例~hostpath,nfs服務(wù)器,PV和PVC持久化

    1.基礎(chǔ)存儲(chǔ)的分類: 分類 說明 EmptyDir EmptyDir是在Pod 被分配到Node時(shí) 創(chuàng)建的, 無(wú)須手動(dòng)指定 ,當(dāng) Pod銷毀時(shí) , EmptyDir中的數(shù)據(jù)也會(huì)被 永久刪除 HostPath HostPath就是將Node主機(jī)中一個(gè)實(shí)際目錄掛載到Pod中,保證 Pod銷毀 了,但是 數(shù)據(jù)依舊可以存在 于Node主機(jī)上 NFS NFS是一個(gè)網(wǎng)絡(luò)文件

    2024年02月20日
    瀏覽(28)
  • [Kubernetes]5. k8s集群StatefulSet詳解,以及數(shù)據(jù)持久化(SC PV PVC)

    [Kubernetes]5. k8s集群StatefulSet詳解,以及數(shù)據(jù)持久化(SC PV PVC)

    前面通過 deployment 結(jié)合 service 來部署 無(wú)狀態(tài)的應(yīng)用 ,下面來講解通過 satefulSet 結(jié)合 service 來部署 有狀態(tài)的應(yīng)用 無(wú)狀態(tài): 無(wú)狀態(tài) (stateless) 、牲畜 (cattle) 、無(wú)名 (nameless) 、可丟棄 (disposable) 有狀態(tài): 有狀態(tài) (stateful) 、寵物 (pet) 、具有名 (haviing name) 、不可丟棄 (non-disposable) St

    2024年02月01日
    瀏覽(49)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包