摘要:部署示例部署示例部署示例在部署一些有狀態(tài)的服務(wù)如等時,我們需要使用到這個控制器,下面介紹下如果在中使用來部署服務(wù)。調(diào)度要求同一個區(qū)域的快杰型云主機(jī),區(qū)域范圍小于可用區(qū),主機(jī)目前不支持指定區(qū)域創(chuàng)建機(jī)器。
在部署一些有狀態(tài)的服務(wù)如 Redis、MySQL 等時,我們需要使用到 StatefulSet 這個控制器,下面介紹下如果在 UK8S 中使用 UDisk 來部署 StatefulSet 服務(wù)。
了解StatefulSetapiVersion: apps/v1
kind: StatefulSet
metadata:
name: mysql
namespace: db
spec:
selector:
matchLabels:
app: mysql
replicas: 5
serviceName: mysql
template:
PodTemplateSpec..... # 有大量省略,與Deployment一樣,是關(guān)于要控制的Pod的描述
volumeClaimTemplates:
- metadata:
name: www
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: ${YOUR_STORAGECLASS_NAME}
resources:
requests:
storage: 10Gi
如果我們熟悉 Deployment 的結(jié)構(gòu)體,則會發(fā)現(xiàn)其與 StatefulSet 最大的區(qū)別在于volumeClaimTemplates,其他地方則基本一致。
我們細(xì)看下volumeClaimTemplates,發(fā)現(xiàn)其結(jié)構(gòu)體與“PersistentVolumeClaim”完全一致,沒錯,volumeClaimTemplates其實就是PVC的模板,用來生成多個訪問模式為單點讀寫的PVC,供 StatefulSet 管理的 Pod 使用。
像上面的示例,StatefulSet 不僅會創(chuàng)建出5個 Pod,同時也還會創(chuàng)建出5個 PVC,供對應(yīng)的Pod使用,以實現(xiàn)每個 Pod 都具有獨立的存儲狀態(tài)。
PVC 示例對于有狀態(tài)服務(wù),我們推薦使用SSD UDisk、RSSD UDisk作為存儲介質(zhì),當(dāng)然,我們也可以使用LocalPV,但由于目前大多數(shù)云主機(jī)的數(shù)據(jù)盤也都是云盤,直接使用 LocalPV 還有各種限制,因此強(qiáng)烈推薦使用 UDisk 作為存儲介質(zhì)
UK8S 集群在初始化的時候,已經(jīng)內(nèi)置了三個與 UDisk 相關(guān)的存儲類,我們只需要直接引用存儲類創(chuàng)建 PVC 供 Pod 消費即可。下面介紹下如何創(chuàng)建對應(yīng)的PVC。
使用RSSD UDisk?? RSSD UDisk調(diào)度要求同一個RDMA區(qū)域的快杰型云主機(jī),RDMA區(qū)域范圍小于可用區(qū),主機(jī)目前不支持指定RDMA區(qū)域創(chuàng)建機(jī)器。因此使用RSSD UDisk,在Pod漂移的情況下,有可能出現(xiàn)Pod無法調(diào)度的問題。請您使用前務(wù)必確認(rèn)可以接受該風(fēng)險。
volumeClaimTemplates:
- metadata:
name: ${YOUR_NAME} # 需要與VolumeMount的名稱保持一致;
spec:
storageClassName: csi-udisk-rssd #這是集群內(nèi)置的StorageClass
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Gi
上面我們使用的是集群內(nèi)置的 StorageClass,我們也可以根據(jù)創(chuàng)建新的 SC,詳見使用RSSD UDisk
使用SSD UDiskvolumeClaimTemplates:
- metadata:
name: ${YOUR_NAME}
labels:
name: redis-cluster
spec:
storageClassName: ssd-csi-udisk #這是自行創(chuàng)建的存儲介質(zhì)為SSD UDisk的StorageClass
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
我們看到,需要使用不同的存儲介質(zhì),只需要在創(chuàng)建PVC時聲明不同的storageClassName即可。下面我們介紹下如果創(chuàng)建自定義StorageClass。
聲明自定義的StorageClass(UDisk 類型)apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: udisk-ssd-test
provisioner: udisk.csi.ucloud.cn #存儲供應(yīng)方,此處不可更改。
parameters:
type: "ssd" # 存儲介質(zhì),支持ssd和sata、rssd,必填
fsType: "ext4" # 文件系統(tǒng),必填
udataArkMode: "no" # 是否開啟方舟模式,默認(rèn)不開啟,非必填
chargeType: "month" # 付費類型,支持dynamic、month、year,非必填
quantity: "1" # 購買時長,dynamic無需填寫,可購買1-9個月,或1-10年
reclaimPolicy: Retain # PV回收策略,支持Delete和Retain,默認(rèn)為Delete,非必填
mountOptions:
- debug
- rw
上面的示例涵蓋了 UDisk 的StorageClass的全部參數(shù),我們可以根據(jù)業(yè)務(wù)需要來自定義 SC。
StatefulSet 示例apiVersion: v1
kind: Service
metadata:
name: nginx
labels:
app: nginx
spec:
ports:
- port: 80
name: web
clusterIP: None
selector:
app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
spec:
selector:
matchLabels:
app: nginx # has to match .spec.template.metadata.labels
serviceName: "nginx"
replicas: 3 # by default is 1
template:
metadata:
labels:
app: nginx # has to match .spec.selector.matchLabels
spec:
terminationGracePeriodSeconds: 10
containers:
- name: nginx
image: uhub.service.ucloud.cn/ucloud/nginx:latest
ports:
- containerPort: 80
name: web
volumeMounts:
- name: www
mountPath: /usr/share/nginx/html
volumeClaimTemplates:
- metadata:
name: www
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: "csi-udisk-rssd" # has to match a storageClassname existed in your cluster
resources:
requests:
storage: 100Gi
在上面的示例中,我們聲明的名稱為 Web 的 StatefulSet 控制器,將創(chuàng)建一個3個nginx Pod,并且為每個Pod分別掛載一個RSSD UDisk,以供其存儲數(shù)據(jù)。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/126663.html
摘要:創(chuàng)建創(chuàng)建一個類型為的,將換成自定義的即可。下面介紹下如何創(chuàng)建對應(yīng)的。示例在上面的示例中,我們聲明的名稱為的控制器,將創(chuàng)建一個個,并且為每個分別掛載一個,以供其存儲數(shù)據(jù)。創(chuàng)建Service創(chuàng)建一個類型為LoadBalancer的Service,將MYSECRET換成自定義的SecretName即可。 apiVersion: v1 kind: Service metadata: name:...
摘要:使用自建日志解決方案下面我們介紹下如何使用來搭建日志解決方案。根據(jù)配置文件創(chuàng)建一個名為的,如下在集群部署。配置在之前部署時,由于我們已經(jīng)將加入到中,已經(jīng)可以對的日志實現(xiàn)監(jiān)控采集。使用ELK自建UK8S日志解決方案下面我們介紹下如何使用Elasticsearch+Filebeat+Kibana來搭建UK8S日志解決方案。一、部署Elasticsearch1. 關(guān)于ElasticsearchEl...
摘要:宋體本文從拉勾網(wǎng)的業(yè)務(wù)架構(gòu)日志采集監(jiān)控服務(wù)暴露調(diào)用等方面介紹了其基于的容器化改造實踐。宋體此外,拉勾網(wǎng)還有一套自研的環(huán)境的業(yè)務(wù)發(fā)布系統(tǒng),不過這套發(fā)布系統(tǒng)未適配容器環(huán)境。寫在前面 拉勾網(wǎng)于 2019 年 3 月份開始嘗試將生產(chǎn)環(huán)境的業(yè)務(wù)從 UHost 遷移到 UK8S,截至 2019 年 9 月份,QA 環(huán)境的大部分業(yè)務(wù)模塊已經(jīng)完成容器化改造,生產(chǎn)環(huán)境中,后臺管理服務(wù)已全部遷移到 UK8...
摘要:為什么在節(jié)點直接起容器網(wǎng)絡(luò)不通為什么在節(jié)點直接起容器網(wǎng)絡(luò)不通為什么在節(jié)點直接起容器網(wǎng)絡(luò)不通使用自己的插件,而直接用起的容器并不能使用該插件,因此網(wǎng)絡(luò)不通。 UK8S 集群常見問題本篇目錄1. UK8S 完全兼容原生 Kubernetes API嗎?2. UK8S 人工支持3. UK8S對Node上發(fā)布的容器有限制嗎?如何修改?4. 為什么我的容器一起來就退出了?5. Docker 如何調(diào)整日...
摘要:對于節(jié)點已經(jīng)登陸不了的情況,如果希望快速恢復(fù)可以在控制臺找到對應(yīng)主機(jī)斷電重啟。與綁定完成,插件完成后續(xù)的掛載和等工作。UK8S 人工支持對于使用 UK8S 遇到的本文檔未涉及的問題,如果需要人工支持,請?zhí)砑酉旅婀€信任,并提供主機(jī)的 uhost-idssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGIFVUtrp+jAnIu1fBvyLx/4L4GNsX+6v8...
摘要:入門必讀提供了一系列的命令行工具來輔助我們調(diào)試和定位問題,本指南列舉一些常見的命令來幫助應(yīng)用管理者快速定位和解決問題。這里以為例,介紹的常用命令其他的命令類型與其一致。入門必讀Kubernetes 提供了一系列的命令行工具來輔助我們調(diào)試和定位問題,本指南列舉一些常見的命令來幫助應(yīng)用管理者快速定位和解決問題。定位問題在開始處理問題之前,我們需要確認(rèn)問題的類型,是 Pod ,Service ,或...
閱讀 1585·2025-02-07 13:29
閱讀 1010·2024-11-07 18:25
閱讀 131506·2024-02-01 10:43
閱讀 1382·2024-01-31 14:58
閱讀 1150·2024-01-31 14:54
閱讀 83577·2024-01-29 17:11
閱讀 3880·2024-01-25 14:55
閱讀 2396·2023-06-02 13:36