longhorn 部署及使用

1. 概述

該教程沃暗,是基于 k8s 集群的部署旺入,事先準(zhǔn)備好 k8s 集群饱苟,此處k8s集群部署略過

2. 部署

官網(wǎng)教程

2.1 安裝基礎(chǔ)組件

yum install iscsi-initiator-utils

2.2 下載 部署文件 yml

wget https://raw.githubusercontent.com/longhorn/longhorn/v1.3.2/deploy/longhorn.yaml

2.3 修改 yml 文件

2.3.1 修改pv為保留策略瓦呼,否則刪除pvc的時候pv就會被刪除

data:
  storageclass.yaml: |
    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: longhorn
      annotations:
        storageclass.kubernetes.io/is-default-class: "true"
    provisioner: driver.longhorn.io
    allowVolumeExpansion: true
    # 找到文件中的StorageClass.data.reclaimPolicy字段,修改為Retain
    reclaimPolicy: "Retain"
    volumeBindingMode: Immediate

2.3.2 修改longhorn-frontend 服務(wù)的svc資源類型和端口涨共,便于web界面查看

kind: Service
apiVersion: v1
metadata:
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.3.2
    app: longhorn-ui
  name: longhorn-frontend
  namespace: longhorn-system
spec:
  # 修改為 NodePort价卤,默認為ClusterIP
  #type: ClusterIP
  type: NodePort
  selector:
    app: longhorn-ui
  ports:
  - name: http
    port: 80
    targetPort: http
    # 修改端口號劝萤,默認為 null
    #nodePort: null
    nodePort: 30080

2.3.3 修改存儲路徑

默認存儲路徑為:/var/lib/longhorn,可修改為自己想要路徑

找到DaemonSet資源下的spec.template.containers.volumeMounts字段

apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.3.2
    app: longhorn-manager
  name: longhorn-manager
  namespace: longhorn-system
spec:
  selector:
    matchLabels:
      app: longhorn-manager
  template:
    metadata:
      labels:
        app.kubernetes.io/name: longhorn
        app.kubernetes.io/instance: longhorn
        app.kubernetes.io/version: v1.3.2
        app: longhorn-manager
    spec:
      initContainers:
      - name: wait-longhorn-admission-webhook
        image: longhornio/longhorn-manager:v1.3.2
        command: ['sh', '-c', 'while [ $(curl -m 1 -s -o /dev/null -w "%{http_code}" -k https://longhorn-admission-webhook:9443/v1/healthz) != "200" ]; do echo waiting; sleep 2; done']
      containers:
      - name: longhorn-manager
        image: longhornio/longhorn-manager:v1.3.2
        imagePullPolicy: IfNotPresent
        securityContext:
          privileged: true
        command:
        - longhorn-manager
        - -d
        - daemon
        - --engine-image
        - "longhornio/longhorn-engine:v1.3.2"
        - --instance-manager-image
        - "longhornio/longhorn-instance-manager:v1_20221003"
        - --share-manager-image
        - "longhornio/longhorn-share-manager:v1_20221003"
        - --backing-image-manager-image
        - "longhornio/backing-image-manager:v3_20221003"
        - --manager-image
        - "longhornio/longhorn-manager:v1.3.2"
        - --service-account
        - longhorn-service-account
        ports:
        - containerPort: 9500
          name: manager
        readinessProbe:
          tcpSocket:
            port: 9500
        volumeMounts:
        - name: dev
          mountPath: /host/dev/
        - name: proc
          mountPath: /host/proc/
        - name: longhorn
          # 修改為自己的路徑
          #mountPath: /var/lib/longhorn/
          mountPath: /data/longhorn/
          mountPropagation: Bidirectional
        - name: longhorn-grpc-tls
          mountPath: /tls-files/
        env:
        - name: POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: POD_IP
          valueFrom:
            fieldRef:
              fieldPath: status.podIP
        - name: NODE_NAME
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
      volumes:
      - name: dev
        hostPath:
          path: /dev/
      - name: proc
        hostPath:
          path: /proc/
      - name: longhorn
        hostPath:
          # 修改為自己的路徑
          #path: /var/lib/longhorn/
          path: /data/longhorn/
      - name: longhorn-grpc-tls
        secret:
          secretName: longhorn-grpc-tls
          optional: true
      serviceAccountName: longhorn-service-account
  updateStrategy:
    rollingUpdate:
      maxUnavailable: "100%"

2.4 部署

kubectl apply -f longhorn.yml

2.5 檢查

web界面管理

image-20221122144530823.png

查看所有 pod 運行狀態(tài)

image-20221122144603579.png

查看 sc 資源

image-20221122144720913.png

3. 使用 longhorn 存儲

3.1 創(chuàng)建一個pvc

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: test-pvc
  namespace: longhorn-system
  annotations:
    volume.beta.kubernetes.io/storage-class: "longhorn"
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 5Gi

3.2 創(chuàng)建一個 pod慎璧,驗證 pvc 使用情況

kind: Pod
apiVersion: v1
metadata:
  name: mysql-pod
  namespace: longhorn-system
  labels:
    app: mysql-server
spec:
  containers:
  - name: mysql-server
    imagePullPolicy: Never
    image: mysql:5.7
    volumeMounts:
    - name: data
      mountPath: "/var/lib/mysql"
    ports:
    - containerPort: 3306
    env:
    - name: MYSQL_ROOT_PASSWORD
      value: '123456'
    args: 
    - "--ignore-db-dir=lost+found"
    
  restartPolicy: "Always"
  volumes:
  - name: data
    persistentVolumeClaim:
      claimName: test-pvc
  
---
kind: Service
apiVersion: v1
metadata:
  name: mysql-server
  namespace: longhorn-system
spec:
  selector:
    app: mysql-server
  type: NodePort
  ports:
  - port: 3306
    targetPort: 3306
    nodePort: 30060
image-20221122144910946.png
image-20221122144927101.png
image-20221122144940066.png
image-20221122145043339.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末床嫌,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子胸私,更是在濱河造成了極大的恐慌厌处,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件岁疼,死亡現(xiàn)場離奇詭異阔涉,居然都是意外死亡,警方通過查閱死者的電腦和手機捷绒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門瑰排,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人暖侨,你說我怎么就攤上這事椭住。” “怎么了字逗?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵京郑,是天一觀的道長。 經(jīng)常有香客問我葫掉,道長些举,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任俭厚,我火速辦了婚禮户魏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己叼丑,他們只是感情好资铡,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著幢码,像睡著了一般。 火紅的嫁衣襯著肌膚如雪尖飞。 梳的紋絲不亂的頭發(fā)上症副,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機與錄音政基,去河邊找鬼贞铣。 笑死,一個胖子當(dāng)著我的面吹牛沮明,可吹牛的內(nèi)容都是我干的辕坝。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼荐健,長吁一口氣:“原來是場噩夢啊……” “哼酱畅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起江场,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤纺酸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后址否,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體餐蔬,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年佑附,在試婚紗的時候發(fā)現(xiàn)自己被綠了樊诺。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡音同,死狀恐怖词爬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瘟斜,我是刑警寧澤缸夹,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站螺句,受9級特大地震影響虽惭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蛇尚,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一芽唇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦匆笤、人聲如沸研侣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽庶诡。三九已至,卻和暖如春咆课,著一層夾襖步出監(jiān)牢的瞬間末誓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工书蚪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留喇澡,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓殊校,卻偏偏與公主長得像晴玖,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子为流,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容