019.Kubernetes二進位集群存儲longhorn

来源:https://www.cnblogs.com/itzgr/archive/2020/06/29/13207220.html

一 Longhorn存儲部署1.1 Longhorn概述Longhorn是用於Kubernetes的開源分散式塊存儲系統。提示:更多介紹參考:https://github.com/longhorn/longhorn。1.2 Longhorn部署 1 [[email protected] ~]# cd /op ...


一 Longhorn存儲部署

1.1 Longhorn概述

Longhorn是用於Kubernetes的開源分散式塊存儲系統。

提示:更多介紹參考:https://github.com/longhorn/longhorn。

1.2 Longhorn部署

  1 [[email protected] ~]# cd /opt/k8s/work/
  2 [[email protected] work]# source /root/environment.sh
  3 [[email protected] work]# for all_ip in ${ALL_IPS[@]}
  4   do
  5     echo ">>> ${all_ip}"
  6     ssh [email protected]${all_ip} "yum -y install iscsi-initiator-utils &"
  7   done

提示:本步驟操作僅需要在master01節點操作。

  1 [[email protected] work]# mkdir longhorn
  2 [[email protected] work]# cd longhorn/
  3 [[email protected] longhorn]# wget \
  4 https://raw.githubusercontent.com/longhorn/longhorn/master/deploy/longhorn.yaml
  5 [[email protected] longhorn]# vi longhorn.yaml

  1 #……
  2 ---
  3 kind: Service
  4 apiVersion: v1
  5 metadata:
  6   labels:
  7     app: longhorn-ui
  8   name: longhorn-frontend
  9   namespace: longhorn-system
 10 spec:
 11   type: NodePort			#修改為nodeport
 12   selector:
 13     app: longhorn-ui
 14   ports:
 15   - port: 80
 16     targetPort: 8000
 17     nodePort: 30002
 18 ---
 19 ……
 20 kind: DaemonSet
 21 ……
 22         imagePullPolicy: IfNotPresent
 23 ……
 24 #……
  1 [[email protected] longhorn]# kubectl apply -f longhorn.yaml
  2 [[email protected] longhorn]# kubectl -n longhorn-system get pods -o wide

clipboard

提示:若部署異常可刪除重建,若出現無法刪除namespace,可通過如下操作進行刪除:

  1 wget https://github.com/longhorn/longhorn/blob/master/uninstall/uninstall.yaml
  2 rm -rf /var/lib/longhorn/
  3 kubectl apply -f uninstall.yaml
  4 kubectl delete -f longhorn.yaml

1.5 動態sc創建

提示:預設longhorn部署完成已創建一個sc,也可通過如下手動編寫yaml創建。

  1 [[email protected] longhorn]# kubectl get sc
  2 NAME                   PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
  3 ……
  4 longhorn               driver.longhorn.io      Delete          Immediate              true                   15m
  5 [[email protected] longhorn]# vi longhornsc.yaml

  1 kind: StorageClass
  2 apiVersion: storage.k8s.io/v1
  3 metadata:
  4   name: longhornsc
  5 provisioner: rancher.io/longhorn
  6 parameters:
  7   numberOfReplicas: "3"
  8   staleReplicaTimeout: "30"
  9   fromBackup: ""
  1 [[email protected] longhorn]# kubectl create -f longhornsc.yaml

1.6 測試PV及PVC

  1 [[email protected] longhorn]# vi longhornpod.yaml
  1 apiVersion: v1
  2 kind: PersistentVolumeClaim
  3 metadata:
  4   name: longhorn-pvc
  5 spec:
  6   accessModes:
  7     - ReadWriteOnce
  8   storageClassName: longhorn
  9   resources:
 10     requests:
 11       storage: 2Gi
 12 ---
 13 apiVersion: v1
 14 kind: Pod
 15 metadata:
 16   name: longhorn-pod
 17   namespace: default
 18 spec:
 19   containers:
 20   - name: volume-test
 21     image: nginx:stable-alpine
 22     imagePullPolicy: IfNotPresent
 23     volumeMounts:
 24     - name: volv
 25       mountPath: /data
 26     ports:
 27     - containerPort: 80
 28   volumes:
 29   - name: volv
 30     persistentVolumeClaim:
 31       claimName: longhorn-pvc
  1 [[email protected] longhorn]# kubectl apply -f longhornpod.yaml
  2 [[email protected] longhorn]# kubectl get pods -o wide
  3 [[email protected] longhorn]# kubectl get pvc
  4 [[email protected] longhorn]# kubectl get pv

clipboard

提示:本步驟操作僅需要在master01節點操作。

1.7 Ingress暴露Longhorn

  1 [[email protected] longhorn]# yum -y install httpd-tools
  2 [[email protected] longhorn]# htpasswd -c auth xhy			#創建用戶名和密碼

提示:也可通過如下命令創建:

  1 [[email protected] longhorn]# kubectl -n longhorn-system create secret generic longhorn-basic-auth --from-file=auth
  2 
  3 [[email protected] longhorn]# vi longhorn-ingress.yaml		#創建ingress規則

  1 apiVersion: networking.k8s.io/v1beta1
  2 kind: Ingress
  3 metadata:
  4   name: longhorn-ingress
  5   namespace: longhorn-system
  6   annotations:
  7     kubernetes.io/ingress.class: "nginx"
  8     nginx.ingress.kubernetes.io/auth-type: basic
  9     nginx.ingress.kubernetes.io/auth-secret: longhorn-basic-auth
 10     nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required '
 11 spec:
 12   rules:
 13   - host: longhorn.odocker.com
 14     http:
 15       paths:
 16       - path: /
 17         backend:
 18           serviceName: longhorn-frontend
 19           servicePort: 80
  1 [[email protected] longhorn]# kubectl apply -f longhorn-ingress.yaml

提示:本步驟操作僅需要在master01節點操作。

1.8 確認驗證

瀏覽器訪問:longhorn.odocker.com,並輸入賬號和密碼。

clipboard

登錄查看。

clipboard

附加 Helm部署

附0.1 helm安裝

Helm 是 Kubernetes 的軟體包管理工具,此處作為建議項部署,更多helm參考《053.集群管理-Helm工具》。

  1 [[email protected] ~]# cd /opt/k8s/work/
  2 [[email protected] work]# mkdir /opt/k8s/work/helm
  3 [[email protected] work]# source /root/environment.sh
  4 [[email protected] work]# wget http://down.linuxsb.com:8888/helm-v3.2.3-linux-amd64.tar.gz
  5 [[email protected] work]# tar -zxvf helm-v3.2.3-linux-amd64.tar.gz -C /opt/k8s/work/helm
  6 [[email protected] work]# for master_ip in ${MASTER_IPS[@]}
  7   do
  8     echo ">>> ${master_ip}"
  9     scp -rp /opt/k8s/work/helm/linux-amd64/helm [email protected]${master_ip}:/opt/k8s/bin/
 10     ssh [email protected]${master_ip} "chmod +x /opt/k8s/bin/*"
 11     ssh [email protected]${master_ip} "helm version"
 12     ssh [email protected]${master_ip} "echo 'source <(helm completion bash)' >> $HOME/.bashrc"
 13   done

附0.2 helm安裝

  1 [[email protected] work]# helm repo add brigade https://brigadecore.github.io/charts
  2 [[email protected] work]# helm repo add stable https://kubernetes-charts.storage.googleapis.com/				#添加官方repo
  3 [[email protected] work]# helm repo add bitnami https://charts.bitnami.com/bitnami
  4 [[email protected] work]# helm repo list			#查看repo

clipboard

提示:本步驟操作僅需要在master01節點操作。


您的分享是我們最大的動力!

更多相關文章
  • 0.前言 通過前面幾篇,我們瞭解到瞭如何實現項目的基本架構:數據源、路由設置、加密以及身份驗證。那麼在實現的時候,我們還會遇到這樣的一個問題:當我們業務類和數據源越來越多的時候,我們無法通過普通的構造對象的方法為每個實例進行賦值。同時,傳統意義上的賦值遇到底層切換或者其他修改的時候,就需要修改大量的 ...
  • 1.前言 回顧:認證授權方案之JwtBearer認證 在上一篇中,我們通過JwtBearer的方式認證,瞭解在認證時,都是基於Claim的,因此我們可以通過用戶令牌獲取到用戶的Claims,在授權過程中對這些Claims進行驗證,從而來判斷是否具有獲取或執行目標資源操作的許可權。本章就來介紹一下 AS ...
  • 前言 這兩天看了一下ABP,做個簡單的學習記錄。記錄主要有以下內容: 從官網創建並下載項目(.net core 3.x + vue) 項目在本地成功運行 新增實體並映射到資料庫 完成對新增實體的基本增刪改查 ABP官網:https://aspnetboilerplate.com/ Github:ht ...
  • 現在在MCU上實現固件升級(OTA)功能變得越來越普遍,今天我們就來探討一下MCU固件升級(OTA)的幾種快閃記憶體(Flash)劃分方式: 1.獨立型 所謂獨立型就是專門划出一部分快閃記憶體(Flash)空間用來存儲引導程式(BootLoader)。 如下圖,Firmware A區用來固定執行用戶程式。當引導 ...
  • 大家好,我是良許。 Vim是我們在Linux中非常常用的一款文本編輯器。Vim 是一款免費、開源的文本編輯器,它的功能和許多其他的文本編輯器大致相同,比如 Sublime 和 Notepad++ 。Vim既可以在命令行中執行,也可以在圖形界面中操作。 Vim 的教程有很多,本文我們主要講的是如何更改 ...
  • 最近開發項目的時候發現公司伺服器用root賬號登錄的時候 一直會提示有新的信件,一直提示一直提示。 聯想到另一臺伺服器上 的dead.letter文件每天都不斷的變大 而且在 root家目錄里 ,系統硬碟里。過十天半個月就會收到 伺服器的磁碟使用率超90%的報警簡訊, 我突然感覺是時候去除了一下這個 ...
  • 1.文件操作 touch命令 創建文件,如果文件名稱不存在,那麼直接創建;如果存在,那麼更改訪問時間 touch [option] filename1 filename2... [email protected]:~/Test# touch hello.c [email protected]:~/Test# ls hell ...
  • 一,查看磁碟空間大小的命令:df df命令用於查看磁碟分區上的磁碟空間,包括使用了多少,還剩多少,預設單位是KB 命令: df -hl 結果如下: 結果每列的含義: 第一列Filesystem,磁碟分區 第二列Size,磁碟分區的大小 第三列Used,已使用的空間 第四列Avail,可用的空間 第五 ...
一周排行
  • 本次課程就正式進入開發部分。 首先我們先搭建項目框架,還是和之前漸進式風格保持一致,除必備組件外,儘量使用原生功能以方便大家理解。 開發工具:vs 2019 或以上 資料庫:SQL SERVER 2017 或以上 其他需要用到的我們在項目過程中再提。 一、新建 MVC項目 1、打開VS 2019,C ...
  • 一.背景說明: 之前分享過一個微服務開發框架, “享一個集成.NET Core+Swagger+Consul+Polly+Ocelot+IdentityServer4+Exceptionless+Apollo+SkyWalking的微服務開發框架”,前兩天在Github上收到一個Issues,是想我 ...
  • 前言 Http我們都已經耳熟能詳了,而關於Http學習的文章網上有很多,各個知識點的講解也可說是深入淺出。然而,學習過後,我們對Http還是一知半解。問題出在了哪? Http是一個客戶機與伺服器之間的通信的協議,真的想學習Http,就必須把客戶機和伺服器也學了,也就是說,必須立體的學習,不然我們永遠 ...
  • 本人製作的這個 “簡易日誌 (SimpleLogger)” 包裡面包含的代碼邏輯,最開始也就是簡單地寫入文本,後來經過實際使用的演化,做了各種優化,添加了一些實用的特性,感覺用著還不錯。正所謂獨樂樂不如眾樂樂,於是將其打包上傳到微軟的包管理庫 NuGet 中,大家可以使用試試,相互交流。 ...
  • 1.需求示意圖 2.需求描述 原本是為了給做unity3d客戶端開發的同事提供不定時的消息推送,比如商城購買道具後服務端將道具信息推送給客戶端。 本篇文章簡化理解,用“相關部門開展活動,向全市人民徵集社會服務改善意見”為例子。但核心想法一致:單向推送(指這個需求上只需要單向)。所以這個功能並不是聊天 ...
  • 找到項目中ServiceStack.Text.dll文件的版本,比如我的版本是5.0.0,到GitHub上下載對應的源碼(https://github.com/ServiceStack/ServiceStack.Text/tags) 打開解決方案,重新生成ServiceStack.Text項目,如果 ...
  • 前言 上一篇文章主要介紹了IL的概念以及基礎的示例代碼,在這一篇文章中我們將通過對象調用看IL。 創建對象與調用方法 class Program { static void Main(string[] args) { var obj = new MyClass(); Console.WriteLin ...
  • abp版本5.9 概述 數據遷移無非就是兩件事情,1、創建資料庫,並根據實體創建對應的表;2、添加一些初始數據 abp的數據遷移也是完成這兩件事,比較特殊的是它是多租戶saas系統,而且支持不同的租戶有獨立的資料庫。所以abp中的遷移要先遷移戶主Host,再遷移租戶Tenant的資料庫 它的遷移定義 ...
  • 本文屬於OData系列 目錄 武裝你的WEBAPI-OData入門 武裝你的WEBAPI-OData便捷查詢 武裝你的WEBAPI-OData分頁查詢 武裝你的WEBAPI-OData資源更新Delta 武裝你的WEBAPI-OData之EDM 武裝你的WEBAPI-OData常見問題 武裝你的WE ...
  • 前言 面試總是會被問到有沒有用過分散式鎖、redis 鎖,大部分讀者平時很少接觸到,所以只能很無奈的回答 “沒有”。本文通過 Spring Boot 整合 redisson 來實現分散式鎖,並結合 demo 測試結果。 首先看下大佬總結的圖 正文 添加依賴 <!--redis--> <depende ...