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