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

PHP項(xiàng)目遷移K8s之OSS存儲(chǔ)卷

這篇具有很好參考價(jià)值的文章主要介紹了PHP項(xiàng)目遷移K8s之OSS存儲(chǔ)卷。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前言

? ? ? ? 最近一個(gè)老項(xiàng)目(PHP)需要遷移至阿里云K8s上,之前項(xiàng)目上各種資源都存在服務(wù)器上多個(gè)目錄下,本文就針對(duì)其中資源遷移部署講解。

一、選擇OSS存儲(chǔ)卷原因

出于多種原因選擇掛載OSS存儲(chǔ)卷:

  1. 項(xiàng)目后期開(kāi)發(fā)功能設(shè)計(jì)上傳,需要上傳OSS服務(wù)(之前都是上傳到ECS服務(wù)上)。
  2. 若掛載NAS存儲(chǔ)卷,項(xiàng)目平時(shí)需要更換資源,OSS通過(guò)客戶端上傳替換更為方便。
  3. 項(xiàng)目靜態(tài)資源量很大,且后期還不斷增加,而OSS靜態(tài)存儲(chǔ)卷是阿里云對(duì)象存儲(chǔ)OSS中的一種存儲(chǔ)類型,用于存儲(chǔ)靜態(tài)數(shù)據(jù),包括圖片、視頻、js、html、css等等。OSS靜態(tài)存儲(chǔ)卷具有海量、安全、低成本、高可靠等特性,支持?jǐn)?shù)據(jù)讀寫(xiě)和在線修改,適用于Web網(wǎng)站圖片存儲(chǔ)、動(dòng)靜資源分離等業(yè)務(wù)場(chǎng)景。
  4. 項(xiàng)目業(yè)務(wù)資源寫(xiě)少讀多,OSS存儲(chǔ)卷更適合,如果您的業(yè)務(wù)是將文件寫(xiě)入存儲(chǔ)的場(chǎng)景,推薦使用NAS存儲(chǔ)卷服務(wù)。
  5. OSS支持同時(shí)被多個(gè)Pod掛載。

二、通過(guò)kubectl命令行的方式使用OSS靜態(tài)存儲(chǔ)卷

1.創(chuàng)建Secret

  • 創(chuàng)建Secret(文件名:oss-secret.yaml)
apiVersion: v1
kind: Secret
metadata:
  name: oss-secret # 可自定義 secret name
  namespace: <your namespace>
data:
  akId: <your AccessKey ID>
  akSecret: <your AccessKey Secret>
type: Opaque
  • ?執(zhí)行以下命令創(chuàng)建保密字典
kubectl create -f oss-secret.yaml

2.使用Secret創(chuàng)建靜態(tài)卷PV

  • 創(chuàng)建靜態(tài)卷PV(pv-oss.yaml)
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-oss # 可自定義 pv name
  labels:
    alicloud-pvname: pv-oss
spec:
  capacity:
    storage: 20Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  csi:
    driver: ossplugin.csi.alibabacloud.com
    volumeHandle: pv-oss # 需要和 PV 名字一致。
    nodePublishSecretRef:
      name: <your secret name> # 創(chuàng)建 Secret 中定義的名字。
      namespace: <your namespace>
    volumeAttributes:
      bucket: <your bucket name> # 需要掛載的 OSS Bucket
      url: "oss-cn-hangzhou.aliyuncs.com"
      otherOpts: '-o max_stat_cache_size=0 -o allow_other -o mp_umask=022 -o umask=022'
      path: "/"
  • 使用命令創(chuàng)建靜態(tài)卷PV
kubectl create -f pv-oss.yaml

?參數(shù)解析:

name PV的名稱。
labels 配置PV的標(biāo)簽。
storage OSS的可使用量。
accessModes 配置訪問(wèn)模式。
persistentVolumeReclaimPolicy PV回收策略。
driver 定義驅(qū)動(dòng)類型。取值為ossplugin.csi.alibabacloud.com,表示使用OSS CSI插件。
nodePublishSecretRef 定義掛載PV時(shí)通過(guò)Secret對(duì)象來(lái)獲取AccessKey信息。
volumeHandle 配置PV的名稱。
bucket 需要掛載的OSS Bucket。
url 掛載OSS的接入域名。
  • 掛載節(jié)點(diǎn)和Bucket相同地域時(shí),請(qǐng)使用私網(wǎng)地址。
  • 掛載節(jié)點(diǎn)和Bucket不同地域時(shí),請(qǐng)使用公網(wǎng)地址。
  • 禁止使用VPC網(wǎng)絡(luò)。

不同域名訪問(wèn)格式如下:

  • 內(nèi)網(wǎng)訪問(wèn)域名格式:oss-{{regionName}}-internal.aliyuncs.com
  • 外網(wǎng)訪問(wèn)域名格式:oss-{{regionName}}.aliyuncs.com。
otherOpts 掛載OSS時(shí)支持輸入定制化參數(shù),格式為:-o *** -o ***
path 表示掛載時(shí)相對(duì)Bucket根文件的目錄結(jié)構(gòu),默認(rèn)為/(v1.14.8.32-c77e277b-aliyun及之后版本支持)。

3.創(chuàng)建靜態(tài)卷PVC

  • 創(chuàng)建PVC(文件名:oss-secret.yaml)
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-oss # 自定義
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 20Gi
  selector:
    matchLabels:
      alicloud-pvname: pv-oss # 需要 pv 中 name 保持一致
參數(shù) 說(shuō)明
name PVC的名稱。
accessModes 配置訪問(wèn)模式。
storage 聲明應(yīng)用使用量,不能大于存儲(chǔ)卷的總量。
alicloud-pvname 通過(guò)標(biāo)簽關(guān)聯(lián)PV,與PV標(biāo)簽保持一致。

  • 使用命令創(chuàng)建PVC
kubectl create -f pvc-oss.yaml

三、創(chuàng)建應(yīng)用

1.以Nginx服務(wù)掛載為例

1apiVersion: apps/v1
kind: Deployment
metadata:
  name: static
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
        volumeMounts:
          - name: pvc-oss
            mountPath: "/data"
        livenessProbe:
          exec:
            command:
            - sh
            - -c
            - cd /data
          initialDelaySeconds: 30
          periodSeconds: 30
      volumes:
        - name: pvc-oss
          persistentVolumeClaim:
            claimName: pvc-oss
參數(shù) 說(shuō)明
mountPath OSS在容器中掛載的位置。

claimName

PVC的名稱,用于綁定PVC

四、問(wèn)題

1.OSS存儲(chǔ)掛載權(quán)限問(wèn)題

OSS掛載默認(rèn)使用Linux的root權(quán)限進(jìn)行掛載,此時(shí)目錄和文件權(quán)限是400,由于權(quán)限問(wèn)題,掛載之后無(wú)法向里面寫(xiě)入數(shù)據(jù),如果需要修改掛載配置,可以在OSS靜態(tài)卷PV中增加otherOpts字段的配置,添加配置的格式例如otherOpts: "-o max_stat_cache_size=0 -o allow_other -o mp_umask=133",具體配置權(quán)限說(shuō)明如下。

  • -o max_stat_cache_size=0:設(shè)置最大狀態(tài)緩存大小為0,表示不限制狀態(tài)緩存的大小,可以提高目錄列表顯示性能。
  • -o allow_other:允許其他用戶訪問(wèn)被www-data用戶擁有的文件。
  • -o mp_umask=133:設(shè)置文件創(chuàng)建時(shí)的umask為133,這意味著新創(chuàng)建的文件將只有可讀可寫(xiě)可執(zhí)行的權(quán)限,可以保證文件的安全性。
  • 修改掛載掩碼權(quán)限

    • 若指定掛載目錄的權(quán)限為644,在otherOpts字段中增加配置:-o mp_umask=133。

    • 若指定掛載目錄里文件的權(quán)限為644,在otherOpts字段中增加配置:-o umask=133。

  • 指定掛載目錄里文件的角色權(quán)限

    • GroupID權(quán)限為指定權(quán)限,在otherOpts字段中增加配置:-o gid=XXX,其中,XXX為您在/etc/password中記錄的角色組ID。

    • UserID權(quán)限為指定權(quán)限,在otherOpts字段中增加配置:-o uid=XXX,其中,XXX為您在/etc/password中記錄的角色I(xiàn)D。

1.php-fpm執(zhí)行文件和目錄問(wèn)題

由于項(xiàng)目是一個(gè)PHP項(xiàng)目,項(xiàng)目執(zhí)行用戶和用戶組是www-data:www-data(鏡像php-fpm默認(rèn)配置),dockerfile打包到鏡像中中默認(rèn)是root:root,此時(shí)項(xiàng)目由于權(quán)限問(wèn)題無(wú)法運(yùn)行??梢酝ㄟ^(guò)dockerfile打包時(shí)執(zhí)行文件用戶和用戶組,下面我展示php-fpm打包yaml文件,關(guān)注最后

FROM php:7.2.34-fpm-alpine

LABEL MAINTAINER="xxx xxxn@xxx.xxx"

# 參數(shù)
ENV TZ "Asia/Shanghai"
ENV ETC_DIR "/usr/local/etc"
ENV PHP_INI_DIR "/usr/local/etc/php"

# 配置 apk 阿里云鏡像源
RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g" /etc/apk/repositories

# 調(diào)整時(shí)區(qū)
RUN apk add tzdata && cp "/usr/share/zoneinfo/$TZ" /etc/localtime && echo "$TZ" > /etc/timezone

# install depends libraries
RUN apk --update add --no-cache --virtual .build-deps autoconf g++ libtool make curl-dev gettext-dev linux-headers

# 安裝 Redis 擴(kuò)展
RUN echo "---------- Install redis ----------" \
#    && mkdir redis \
#    && tar -xf redis-5.2.2.tgz -C redis --strip-components=1 \
#    && cd redis && phpize && ./configure && make -j$(nproc) && make install
#    && docker-php-ext-enable redis
    && pecl install redis \
    && docker-php-ext-enable redis

RUN echo "---------- Install zip ----------" \
    && apk add libzip libzip-dev \
    && docker-php-ext-install zip

RUN echo "---------- Install gettext ----------" \
    && apk add gettext-dev \
    && docker-php-ext-install gettext

RUN echo "---------- Install pdo_mysql ----------" \
    && docker-php-ext-install pdo_mysql

RUN echo "---------- Install gd ----------" \
    && apk add \
        freetype \
        freetype-dev \
        libpng \
        libpng-dev \
        libjpeg-turbo \
        libjpeg-turbo-dev \
        libwebp-dev \
    && docker-php-ext-configure gd --with-gd --with-freetype-dir=/usr/include/ --with-png-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-webp-dir=/usr/include/ \
    && docker-php-ext-install -j$(nproc) gd \
    && apk del \
       freetype-dev \
       libpng-dev \
       libjpeg-turbo-dev

RUN echo "---------- Install bcmath ----------" \
	&& docker-php-ext-install bcmath

# 覆蓋 php.ini 文件
COPY deploy/docker/php/php.ini $PHP_INI_DIR/conf.d/

# php 鏡像的 www-data user uid & gid are 82, change them to 1000 (primary user)
RUN apk add shadow && usermod -u 1000 www-data && groupmod -g 1000 www-data

# 指定目錄
WORKDIR /www

# COPY 項(xiàng)目 /www 目錄,指定用戶:用戶組
COPY --chown=www-data:www-data . /www

五、遷移工具

由于判斷的資源文件存在ECS上,在遷移前文件不斷產(chǎn)生,如果手動(dòng)復(fù)制文件就顯示很麻煩,這里給大家推薦一個(gè)功能,可以輕松完成ECS資源同步OSS。

工具"ossutil",Object和Bucket的命令行管理工具。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-539670.html

  • 提供方便、簡(jiǎn)潔、豐富的Object和Bucket管理命令,操作性能好。
  • 支持文件并發(fā)上傳、斷點(diǎn)續(xù)傳。
  • 支持文件目錄(文件夾)的上傳下載。

到了這里,關(guān)于PHP項(xiàng)目遷移K8s之OSS存儲(chǔ)卷的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(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)文章

  • Kubernetes/k8s的存儲(chǔ)卷/數(shù)據(jù)卷

    Kubernetes/k8s的存儲(chǔ)卷/數(shù)據(jù)卷

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

    2024年01月24日
    瀏覽(44)
  • 【Kubernetes】k8s使用minio作為對(duì)象存儲(chǔ)

    【Kubernetes】k8s使用minio作為對(duì)象存儲(chǔ)

    k8s version:v1.20.15 minio version :v4.4.16 (1)安裝kubectl-minio插件 自選minio-operaterd的版本下載包 minio-operater plugin 訪問(wèn)地址:http://ip:9090 1、sc-minio.yaml 創(chuàng)建 2、 創(chuàng)建所需的永久卷 序號(hào) 路徑 容量 (G) 說(shuō)明 所在節(jié)點(diǎn) 1 /data/1 5 租戶使用 3個(gè)節(jié)點(diǎn)各1個(gè) 2 /data/log1 5 租戶使用 3個(gè)節(jié)點(diǎn)各1個(gè)

    2024年04月09日
    瀏覽(22)
  • Kubernetes(k8s)實(shí)戰(zhàn):Kubernetes(k8s)部署Springboot項(xiàng)目

    Kubernetes(k8s)實(shí)戰(zhàn):Kubernetes(k8s)部署Springboot項(xiàng)目

    wordpress是用于快速搭建博客系統(tǒng)。 該yaml文件創(chuàng)建一個(gè)mysql,并且生成一個(gè)service,service對(duì)外暴露的端口是3306 我們發(fā)現(xiàn),搭建成功了,用瀏覽器訪問(wèn)192.168.56.101:30493,發(fā)現(xiàn)訪問(wèn)成功了! 在集群中,pod之間可以通過(guò)service 的name進(jìn)行訪問(wèn),不僅僅是ip,這就意味著,service中不僅幫

    2024年02月12日
    瀏覽(32)
  • Kubernetes基礎(chǔ)(十八)-k8s存儲(chǔ)對(duì)象Persistent Volume

    在容器化應(yīng)用中,Pod的生命周期是短暫的,當(dāng)Pod終止時(shí),其中的數(shù)據(jù)通常也會(huì)被銷毀。為了解決這個(gè)問(wèn)題,Kubernetes引入了Persistent Volume(PV)的概念。PV是集群中的一塊持久化存儲(chǔ),它獨(dú)立于Pod存在,可以被多個(gè)Pod共享,并且在Pod終止后仍然保留數(shù)據(jù)。 PV允許開(kāi)發(fā)者將數(shù)據(jù)存儲(chǔ)

    2024年02月20日
    瀏覽(22)
  • Kubernetes基礎(chǔ)(二十)-k8s存儲(chǔ)對(duì)象Storage Classes

    在Kubernetes中,Storage Classes是用于定義不同存儲(chǔ)配置的資源。它們?cè)试S開(kāi)發(fā)者抽象存儲(chǔ)的物理細(xì)節(jié),使其更易于管理和使用。通過(guò)Storage Classes,可以定義存儲(chǔ)的類型、性能、卷大小等參數(shù),使得應(yīng)用程序能夠根據(jù)需求選擇合適的存儲(chǔ)。 Storage Classes工作的基本原理是通過(guò)定義標(biāo)

    2024年02月19日
    瀏覽(19)
  • Kubernetes基礎(chǔ)(二十三)-k8s持久化存儲(chǔ)詳解

    Kubernetes基礎(chǔ)(二十三)-k8s持久化存儲(chǔ)詳解

    1.1 介紹 在容器中的磁盤(pán)文件是短暫的,當(dāng)容器崩潰時(shí),Kubelet會(huì)重新啟動(dòng)容器,但容器運(yùn)行時(shí)產(chǎn)生的數(shù)據(jù)文件都將會(huì)丟失,之后容器會(huì)以最干凈的狀態(tài)啟動(dòng)。另外,當(dāng)一個(gè)Pod運(yùn)行多個(gè)容器時(shí),各個(gè)容器可能需要共享一些文件,諸如此類的需求都可以使用Volume解決。Pod只需要通

    2024年03月17日
    瀏覽(25)
  • 集成xxljob項(xiàng)目如何遷移到K8S

    集成xxljob項(xiàng)目如何遷移到K8S

    大家好,今天我們將基于XXL-Job,探討任務(wù)調(diào)度遷移到云端的相關(guān)話題。 XXL-Job是一款功能強(qiáng)大、易用可靠的國(guó)產(chǎn)分布式任務(wù)調(diào)度平臺(tái),是目前國(guó)內(nèi)使用比較廣泛的分布式任務(wù)調(diào)度平臺(tái)之一。它的主要特點(diǎn)包括: 支持分布式、多線程任務(wù)調(diào)度; 具有完整的管理后臺(tái),可以實(shí)現(xiàn)

    2024年01月18日
    瀏覽(13)
  • Kubernetes基礎(chǔ)(十九)-k8s存儲(chǔ)對(duì)象Persistent Volume Claim

    在容器編排中,Pod的生命周期是短暫的,當(dāng)Pod終止時(shí),其中的數(shù)據(jù)通常也會(huì)被銷毀。為了解決這個(gè)問(wèn)題,Kubernetes引入了Persistent Volume(PV)和Persistent Volume Claim(PVC)的概念。 PVC是對(duì)PV的一種聲明,它定義了Pod對(duì)存儲(chǔ)資源的需求。Pod通過(guò)PVC來(lái)請(qǐng)求PV,而PV則提供了實(shí)際的存儲(chǔ)資

    2024年02月20日
    瀏覽(27)
  • 【K8S】docker和K8S(kubernetes)理解?docker是什么?K8S架構(gòu)、Master節(jié)點(diǎn) Node節(jié)點(diǎn) K8S架構(gòu)圖

    【K8S】docker和K8S(kubernetes)理解?docker是什么?K8S架構(gòu)、Master節(jié)點(diǎn) Node節(jié)點(diǎn) K8S架構(gòu)圖

    一、docker的問(wèn)世 ????????在LXC(Linux container)Linux容器虛擬技術(shù)出現(xiàn)之前,業(yè)界網(wǎng)紅是虛擬機(jī)。虛擬機(jī)技術(shù)的代表,是VMWare和OpenStack。 虛擬機(jī)是什么? ????????虛擬機(jī)其實(shí)就是 在你的操作系統(tǒng)里面,裝一個(gè)軟件,然后通過(guò)這個(gè)軟件,再模擬一臺(tái)甚至多臺(tái)“子電腦”出來(lái)。

    2024年03月26日
    瀏覽(36)
  • Kubernetes(K8S)使用PV和PVC做存儲(chǔ)安裝mysql

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

    首先你需要一個(gè)k8s環(huán)境,可以參考我寫(xiě)的文章:https://blog.csdn.net/m0_51510236/article/details/130842122 我們可以簡(jiǎn)單看一下官網(wǎng)的描述:https://kubernetes.io/zh-cn/docs/concepts/storage/persistent-volumes/#introduction 持久卷(PersistentVolume,PV) 是集群中的一塊存儲(chǔ),可以由管理員事先制備, 或者使用

    2024年02月03日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包