摘要:京東云集群最佳實(shí)踐容器是的基石,它們之間的關(guān)系不言而喻。因此我們今天的文章將會(huì)和大家分享關(guān)于京東云集群的部分最佳實(shí)踐。京東云集群采用管理節(jié)點(diǎn)全托管的方式,為用戶提供簡(jiǎn)單易用高可靠功能強(qiáng)大的容器管理服務(wù)。
京東云Kubernetes集群最佳實(shí)踐
容器是Cloud Native的基石,它們之間的關(guān)系不言而喻。了解容器對(duì)于學(xué)習(xí)Cloud Native也是十分重要的。近期,京東云Cloud Native的“在線公開課”從理論和實(shí)踐兩個(gè)層面為大家分享了Cloud Native相關(guān)的技術(shù)知識(shí)。在本周的周日,我們還將迎來”Cloud Native時(shí)代的應(yīng)用之路與開源創(chuàng)新“專場(chǎng)技術(shù)沙龍。
因此我們今天的文章將會(huì)和大家分享關(guān)于京東云Kubernetes集群的部分最佳實(shí)踐。感興趣的小伙伴也可以跟著文檔自己動(dòng)手進(jìn)行創(chuàng)建。
京東云Kubernetes集群采用管理節(jié)點(diǎn)全托管的方式,為用戶提供簡(jiǎn)單易用、高可靠、功能強(qiáng)大的容器管理服務(wù)。該產(chǎn)品完全兼容標(biāo)準(zhǔn)Kubernetes API ,集成京東云網(wǎng)絡(luò)、存儲(chǔ)等插件。Kubernetes集群服務(wù)簡(jiǎn)化了Kubernetes部署、管理,降低了Kubernetes使用門檻,增強(qiáng)應(yīng)用的可靠性,提升開發(fā)的效率,同時(shí),也能更好地幫助用戶減少資源投入的成本。
最佳實(shí)踐——部署應(yīng)用
京東云Kubernetes集群服務(wù)集成了京東云云硬盤,您可以在集群中使用京東云云硬盤作為持久化存儲(chǔ);
使用京東云云盤定義靜態(tài)存儲(chǔ)
1. 創(chuàng)建PVkind: PersistentVolume apiVersion: v1 metadata: name: pv-static labels: type: jdcloud-ebs spec: capacity: storage: 30Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain jdcloudElasticBlockStore: volumeID: vol-ogcbkdjg7x fsType: xfs
參數(shù)說明:
1、如您需要在京東云Kubernetes集群服務(wù)中使用京東云云硬盤作為持久化存儲(chǔ),請(qǐng)?jiān)赑ersistentVolume定義時(shí),指定插件jdcloudElasticBlockStore;
2、VolumeID:指定同地域下為Kubernetes集群服務(wù)提供持久化存儲(chǔ)的云硬盤ID;
3、Fstype:指定文件系統(tǒng)類型;目前僅支持ext4和xfs兩種;
4、Capacity:PV 將具有特定的存儲(chǔ)容量。這是使用 PV 的容量屬性設(shè)置的;
5、PersistentVolume 可以以資源提供者支持的任何方式掛載到主機(jī)上。
京東云云硬盤目前只支持一種模式ReadWriteOnce——該卷可以被單個(gè)節(jié)點(diǎn)以讀/寫模式掛載;
訪問模式包括:
ReadWriteOnce——該卷可以被單個(gè)節(jié)點(diǎn)以讀/寫模式掛載
在命令行中,訪問模式縮寫為:
RWO - ReadWriteOnce
京東云為PersistentVolume提供了插件,插件類型為:jdcloudElasticBlockStore
注:
由于云硬盤限制一個(gè)云硬盤只能同時(shí)掛載一個(gè)云主機(jī),在使用基于PVC的Pod時(shí),建議使用replicas=1來創(chuàng)建一個(gè)部署集。StatefulSet可解決多副本問題。
Pod遷移,PVC遷移(卸載舊實(shí)例/掛載新實(shí)例)默認(rèn)35秒。
通過Deployment部署,刪除Deployment之后,可重新掛載原有PVC到新的Pod里面。
2. 創(chuàng)建PVC聲明可以指定一個(gè)標(biāo)簽選擇器來進(jìn)一步過濾該組卷。只有標(biāo)簽與選擇器匹配的卷可以綁定到聲明。選擇器由兩個(gè)字段組成:
所有來自 MatchLabels 和 MatchExpressions 的要求都被“與”在一起——它們必須全部滿足才能匹配。
本例使用MatchLabels作為過濾條件,將匹配的PersistentVolume綁定到Persistent Volume Claim。
MatchLabels:Volume 必須有具有該值的標(biāo)簽
matchExpressions:這是一個(gè)要求列表,通過指定關(guān)鍵字,值列表以及與關(guān)鍵字和值相關(guān)的運(yùn)算符組成。有效的運(yùn)算符包括 In、NotIn、Exists 和 DoesNotExist。
訪問模式包括:ReadWriteOnce——該卷可以被單個(gè)節(jié)點(diǎn)以讀/寫模式掛載。
在命令行中,訪問模式縮寫為:RWO - ReadWriteOnce
京東云為Persistent Volume提供了插件,插件類型為:jdcloudElasticBlockStore
注:副本數(shù)只能指定1。
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pv-static-pvc spec: accessModes: - ReadWriteOnce storageClassName: "" resources: requests: storage: 30Gi selector: matchLabels: type: jdcloud-ebs
創(chuàng)建Pod
kind: Pod
apiVersion: v1 metadata: name: pod-static spec: volumes: - name: pv-static persistentVolumeClaim: claimName: pv-static-pvc
containers: - name: busybox-static image: busybox command: - sleep - "600" imagePullPolicy: Always volumeMounts: - mountPath: "/usr/share/mybusybox/" name: pv-static
使用京東云云盤定義動(dòng)態(tài)存儲(chǔ)
當(dāng)集群中的靜態(tài) PV 都不匹配新建的 Persistent Volume Claim 時(shí),集群可能會(huì)嘗試動(dòng)態(tài)地為 PVC 創(chuàng)建卷。
關(guān)于京東云云硬盤規(guī)格:
創(chuàng)建PVC
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc1 spec: accessModes: - ReadWriteOnce storageClassName: jdcloud-ssd resources: requests: storage: 20Gi
查看集群的PVC
kubectl get pvc
輸出
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE pvc1 Bound pvc-73d8538b-ebd6-11e8-a857-fa163eeab14b 20Gi RWO jdcloud-ssd 18s
查看集群的PV
kubectl get pv
輸出
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-73d8538b-ebd6-11e8-a857-fa163eeab14b 20Gi RWO Delete Bound default/pvc1 jdcloud-ssd 2m
基于Storage Class jdcloud-ssd,為PVC創(chuàng)建了卷。一旦 PV 和 PVC 綁定后,Persistent Volume Claim 綁定是排他性的,不管它們是如何綁定的。 PVC 跟 PV 綁定是一對(duì)一的映射。
2 部署ServiceKubernetes Service
Kubernetes Service定義了這樣一種抽象:一個(gè) Pod 的邏輯分組,一種可以訪問它們的策略-通常稱為微服務(wù)。這一組 Pod 能夠被 Service 訪問到,通常是通過 Label Selector(查看下面了解,為什么可能需要沒有 Selector 的 Service)實(shí)現(xiàn)的。一個(gè) Service 在 Kubernetes 中是一個(gè)REST對(duì)象,和Pod類似.像所有的 REST 對(duì)象一樣, Service 定義可以基于 POST 方式,請(qǐng)求 API Server 創(chuàng)建新的實(shí)例。
京東云Kubernetes集成負(fù)載均衡服務(wù),支持創(chuàng)建Load Balance類型的Service,為應(yīng)用提供安全、可靠的網(wǎng)絡(luò)。
創(chuàng)建的負(fù)載均衡會(huì)占用本地域的負(fù)載均衡配額,需要保證有足夠配額。
1、創(chuàng)建支持Load Balance類型的Service,命名為myservice.yaml文件定義如下:
kind: Service apiVersion: v1 metadata: name: servicetest labels: run: myapp spec: ports: - protocol: TCP port: 80 targetPort: 80 nodePort: 30062 type: LoadBalancer selector: run: myapp
2、執(zhí)行Kubectl創(chuàng)建命令,創(chuàng)建一個(gè)Service;其中使用相應(yīng)的YAML文件名稱替換:
kubectl create -f myservice.yaml
3、創(chuàng)建一組Nginx Pod,mynginx.yaml文件定義如下:
apiVersion: apps/v1beta1 kind: Deployment metadata: name: my-nginx spec: selector: matchLabels: run: myapp replicas: 2 template: metadata: labels: run: myapp spec: containers: - name: my-nginx image: nginx ports: - containerPort: 80
4、執(zhí)行Kubectl創(chuàng)建命令,創(chuàng)建一個(gè)Deployment;其中使用相應(yīng)的YAML文件名稱替換
kubectl create -f mynginx.yaml
5、查看已創(chuàng)建成功的Deployment,執(zhí)行以下命令:
kubectl get pods -l run=myapp -o wide
返回結(jié)果如下:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE my-nginx 2 2 2 2 4m
6、查看相應(yīng)的Pod運(yùn)行狀態(tài),
kubectl get pods -l run=myapp -o wide
返回結(jié)果如下:
NAME READY STATUS RESTARTS AGE IP NODE my-nginx-864b5bfdc7-6297s 1/1 Running 0 23m 172.16.0.10 k8s-node-vmtwjb-0vy9nuo0ym my-nginx-864b5bfdc7-lr7gq 1/1 Running 0 23m 172.16.0.42 k8s-node-vm25q1-0vy9nuo0ym
7、查看Service詳情:
kubectl describe service servicetest
可以查看綁定到Service的Endpoints:
Name: servicetest Namespace: default Labels: run=myapp Annotations:Selector: run=myapp Type: LoadBalancer IP: 172.16.61.58 LoadBalancer Ingress: 114.67.227.25 Port: 80/TCP TargetPort: 80/TCP NodePort: 30062/TCP Endpoints: 172.16.0.10:80,172.16.0.42:80 Session Affinity: None External Traffic Policy: Cluster Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal EnsuringLoadBalancer 11m (x9 over 26m) service-controller Ensuring load balancer Normal EnsuredLoadBalancer 10m service-controller Ensured load balancer
注:Load Balancer Ingress:114.67.227.25為外部公網(wǎng)IP
8、執(zhí)行如下命令查詢綁定到service的enpoints列表:
kubectl get ep servicetest 返回 NAME ENDPOINTS AGE servicetest 172.16.0.10:80,172.16.0.42:80 28m
9、在瀏覽器中輸入與Service關(guān)聯(lián)的Load Balance公網(wǎng)IP及端口,看到如下頁(yè)面,即表明Nginx服務(wù)正常。
·END·
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/25484.html
摘要:京東云集群最佳實(shí)踐容器是的基石,它們之間的關(guān)系不言而喻。因此我們今天的文章將會(huì)和大家分享關(guān)于京東云集群的部分最佳實(shí)踐。京東云集群采用管理節(jié)點(diǎn)全托管的方式,為用戶提供簡(jiǎn)單易用高可靠功能強(qiáng)大的容器管理服務(wù)。 京東云Kubernetes集群最佳實(shí)踐 容器是Cloud Native的基石,它們之間的關(guān)系不言而喻。了解容器對(duì)于學(xué)習(xí)Cloud Native也是十分重要的。近期,京東云Cloud N...
摘要:華為云華為云在云原生這場(chǎng)游戲中,最具競(jìng)爭(zhēng)力的玩家之一。年,金山云在云原生領(lǐng)域推出了三款重磅產(chǎn)品星曜裸金屬服務(wù)器云服務(wù)器和云盤。在線上智博會(huì)上,浪潮云發(fā)布了經(jīng)過全新迭代升級(jí)的浪潮云,進(jìn)一步提升平臺(tái)云原生服務(wù)能力。面對(duì)數(shù)字時(shí)代復(fù)雜系統(tǒng)的不確定性,傳統(tǒng)的 IT 應(yīng)用架構(gòu)研發(fā)交付周期長(zhǎng)、維護(hù)成本高、創(chuàng)新升級(jí)難,煙囪式架構(gòu),開放性差、組件復(fù)用度低,這些都成為了企業(yè)業(yè)務(wù)快速增長(zhǎng)的瓶頸。而云原生以其敏捷、...
摘要:在本次上,京東云將在大會(huì)上為對(duì)云原生感興趣的研發(fā)和運(yùn)維人員帶來利用延遲加載快速啟動(dòng)容器的話題分享。今天聊的主角云原生也是一樣。 showImg(https://segmentfault.com/img/bVbtNqp?w=688&h=113); showImg(https://segmentfault.com/img/bVbtQaR?w=684&h=327); showImg(http...
摘要:在本次上,京東云將在大會(huì)上為對(duì)云原生感興趣的研發(fā)和運(yùn)維人員帶來利用延遲加載快速啟動(dòng)容器的話題分享。今天聊的主角云原生也是一樣。 showImg(https://segmentfault.com/img/bVbtNqp?w=688&h=113); showImg(https://segmentfault.com/img/bVbtQaR?w=684&h=327); showImg(http...
摘要:平臺(tái)上的微服務(wù)架構(gòu)應(yīng)用再來看一下我眼中的基于當(dāng)前最流行的微服務(wù)架構(gòu)的設(shè)計(jì)是什么樣的,即我們平臺(tái)上要運(yùn)行的典型應(yīng)用是什么樣的。 showImg(https://segmentfault.com/img/remote/1460000010900878); 8月19日的數(shù)人云Container Meetup上,張龍老師做了《基于Kubernetes的PaaS平臺(tái)的設(shè)計(jì)和思考》的精彩分享,分別...
閱讀 1990·2023-04-25 16:19
閱讀 3101·2021-11-24 09:39
閱讀 834·2021-11-16 11:44
閱讀 1694·2019-08-29 12:52
閱讀 1142·2019-08-26 13:33
閱讀 1078·2019-08-26 10:26
閱讀 2205·2019-08-23 16:42
閱讀 2571·2019-08-23 14:37