上次有提到創建PV與PVC並assign給POD進行資源的儲存與控制,而如果不想每次都自己去進行創建呢?
這時就需要使用Storage class
這邊我們直接使用Rancher公司所開發的Longhorn
透過Rancher安裝時要先到App&Market place 的chart去安裝longhorn
安裝好後左方會出現longhorn 點進去後可以看到longhorn的dashboard
確認可以看到dashboard後同樣到Storage 的Storage class
create一個Storage class
create好了之後 回到deployment
在deployment create的地方左邊可以看到Storage
點了之後安add volume 選擇 create Persistent Volume Claim
並使用我們剛剛建立的Storage account
建立完成之後 回到剛剛的longhorn畫面
在上方volume的地方可以一個volume已經attach到我們的Storage class
而到pv 與 pvc 上則個都可以看到storage class 幫我們建好的pv與pvc
而若要透過已經創建好的PVC去Assign給POD呢
方法同樣是去create deployment
進到create之後選擇左下角的Storage
在add volume裡面選擇 Persistent Volume Claim
填上需要的資料後就能按craete
看到她active後就代表他成功部屬起來了
而API的部分則可透過deployment的API或是透過Yaml 進行post data查看
並使用我們之前做deployment時的API網址
import requests
headers = {"Authorization": "Bearer token-7gqj9:4jp2r7m78b5cxq7wr4krfthr8tvvsjpzw6x9v5jgvfxzflbs8gcflf"}
config = {
"containers": [{
"imagePullPolicy": "IfNotPresent",
"image": "ubuntu/apache2:latest",
"name": "apache-test",
"volumeMounts":[{
"name": "pvc-volume",
"mountPath": "/mnt/test"
}]
}],
"namespaceId": "test-namespace",
"name": "pod-pvc-test",
"labels":{
"test": "label_test"
},
"workloadAnnotations":{
"field.cattle.io/description": "FOR-PVC-TEST"
},
"volumes":[{
"name": "pvc-volume",
"persistentVolumeClaim": {
"persistentVolumeClaimId": "test-namespace:test123456",
"claimName": "test123456",
"type": "/v3/project/schemas/persistentVolumeClaimVolumeSource"
},
"type": "/v3/project/schemas/volume"
}],
}
response=requests.post('https://192.168.182.162/v3/projects/c-d8dqp:p-dnzcn/deployments', json=config, headers=headers,verify=False)
print(response.text)
print(response.status_code)
在執行程式時可以看到他回傳我們剛剛輸入的資料 如果沒有看到代表說rancher deploy時並沒有吃到我們的資料
可能的原因有三種 欄位名稱打錯,少中括號[],或是他其實沒有支援
資料欄位是否需要加上中括號可以從yaml 或是透過API查看目前有部屬的服務時查看
在yaml上有減號的代表前一個欄位後要加中括號
在看我們部屬的狀況
有看到我們部屬成功了