概述
成都創(chuàng)新互聯(lián)公司網(wǎng)絡(luò)公司擁有十年的成都網(wǎng)站開發(fā)建設(shè)經(jīng)驗,1000+客戶的共同信賴。提供做網(wǎng)站、成都網(wǎng)站設(shè)計、網(wǎng)站開發(fā)、網(wǎng)站定制、友情鏈接、建網(wǎng)站、網(wǎng)站搭建、響應(yīng)式網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計師打造企業(yè)風(fēng)格,提供周到的售前咨詢和貼心的售后服務(wù)StatefulSet
?RC、Deployment、DaemonSet都是面向無狀態(tài)的服務(wù),它們所管理的Pod的IP、名字,啟停順序等都是隨機的,而StatefulSet是什么?顧名思義,有狀態(tài)的集合,管理所有有狀態(tài)的服務(wù),比如MySQL、MongoDB集群等。
StatefulSet本質(zhì)上是Deployment的一種變體,在v1.9版本中已成為GA版本,它為了解決有狀態(tài)服務(wù)的問題,它所管理的Pod擁有固定的Pod名稱,啟停順序,在StatefulSet中,Pod名字稱為網(wǎng)絡(luò)標(biāo)識(hostname),還必須要用到共享存儲。
在Deployment中,與之對應(yīng)的服務(wù)是service,而在StatefulSet中與之對應(yīng)的headless service,headless service,即無頭服務(wù),與service的區(qū)別就是它沒有Cluster IP,解析它的名稱時將返回該Headless Service對應(yīng)的全部Pod的Endpoint列表。
除此之外,StatefulSet在Headless Service的基礎(chǔ)上又為StatefulSet控制的每個Pod副本創(chuàng)建了一個DNS域名,這個域名的格式為
$(podname).(headless server name)
FQDN: $(podname).(headless server name).namespace.svc.cluster.local
StorageClass
?storageclass 是基于pv和pvc的擴展,可以幫助應(yīng)用程序動態(tài)的創(chuàng)建pv和pvc,但是目前還不支持自動擴容。
以部署一個nginx為例子,Ceph的rbd磁盤為后端做列子
rbac配置文件,這里為了防止出現(xiàn)權(quán)限的問題直接綁定了admin使用
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: rbd-provision
namespace: xuyong-test-storage
subjects:
- kind: ServiceAccount
name: rbd-provisioner
namespace: xuyong-test-storage
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
---
kind: ServiceAccount
apiVersion: v1
metadata:
name: rbd-provisioner
namespace: xuyong-test-storage
storage-class 配置文件
apiVersion: v1
kind: Secret
metadata:
name: ceph-secret
namespace: xuyong-test-storage
type: kubernetes.io/rbd
#type: kubernetes.io/rbd
data:
key: ................
#上面的key填寫,base64編碼之后的真實的ceph的key,要不然會報錯
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: rbd
namespace: xuyong-test-storage
parameters:
##這里的id填寫ceph的用戶
adminId: kubernetes-online
adminSecretName: ceph-secret
adminSecretNamespace: xuyong-test-storage
imageFormat: "2"
imagefeatures: layering
monitors: saas-ceph.internal.weimob.com:6789
pool: kubernetes-online
userId: kubernetes-online
userSecretName: ceph-secret
userSecretNamespace: xuyong-test-storage
#類型默認(rèn)
provisioner: kubernetes.io/rbd
reclaimPolicy: Delete
statefulset配置文件
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: xuyong-test-storage
labels:
app: nginx
spec:
ports:
- port: 80
name: web
clusterIP: None
selector:
app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
namespace: xuyong-test-storage
spec:
selector:
matchLabels:
app: nginx # has to match .spec.template.metadata.labels
serviceName: "nginx" #聲明它屬于哪個Headless Service.
replicas: 3 # by default is 1
template:
metadata:
labels:
app: nginx # has to match .spec.selector.matchLabels
spec:
terminationGracePeriodSeconds: 10
containers:
- name: nginx
image: ccr.ccs.tencentyun.com/weimob-public/nginx:1.16-centos7
ports:
- containerPort: 80
name: web
volumeMounts:
- name: www
mountPath: /usr/share/nginx/html
volumeClaimTemplates: #可看作pvc的模板
- metadata:
name: www
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: "rbd" #存儲類名,改為集群中已存在的
resources:
requests:
storage: 50Gi
注:rbd模式accessModes只支持 ReadWriteOnce和ReadonlyMany,且上面的service必須指定clusterip:none ,要不然會有問題。
查看效果:
排坑:
1.ecret的key必須base64編碼
2.如果出現(xiàn)rbac問題,執(zhí)行上面的rbac的文件
3.如果出現(xiàn)cpeh is not in $PATH這樣的報錯,這個是因為一個鏡像拉不到,可以本地部署,使用本地部署的鏡像,或者***拉鏡像。
4.ceph-common的版本要同你服務(wù)器端使用的版本一致。
參考文檔:https://www.520mwx.com/view/21456
由于statefulset默認(rèn)不支持磁盤的擴容,所以需要利用ceph的接口來擴容磁盤,實施步驟如下:
1.查看pv對應(yīng)的rbd image
[root@sh-saas-k8s1-master-pl-01 ceph-statefulset]# kubectl get pv pvc-ccb2ce5f-97e6-11e9-ac4b-52540006de2d -n=xuyong-test-storage -o yaml |grep image
image: kubernetes-dynamic-pvc-ccb7c9b1-97e6-11e9-be31-0a580afb018c
2.直接連接ceph需改rbd塊大小
rbd resize --image kubernetes-dynamic-pvc-ccb7c9b1-97e6-11e9-be31-0a580afb018c --size 100000
3.找到pod所在的node節(jié)點,然后重新探測磁盤
blockdev --getsize64 /dev/rbd0
resize2fs /dev/rbd0
4.然后登入pod查看就能發(fā)現(xiàn)對應(yīng)的磁盤大小已經(jīng)被更改了
注:這個方法可以更改磁盤大小,但是pv和pvc還有storage-class的數(shù)據(jù)顯示是假的,而且當(dāng)是多個實例的時候,只能一個個改,比較麻煩。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)站欄目:K8Sstatefulset詳解-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://muchs.cn/article16/iosdg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、網(wǎng)站排名、網(wǎng)站導(dǎo)航、移動網(wǎng)站建設(shè)、域名注冊
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)