您好,登錄后才能下訂單哦!
這篇文章主要講解了“kubernetes中怎么驗證deployment”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“kubernetes中怎么驗證deployment”吧!
k8s通常不會直接創(chuàng)建pod,而是通過controller來管理pod,以達(dá)到副本管理、滾動升級和集群級別的自愈能力。controller包括Deployment、ReplicaSet、DaemonSet、StatefuleSet、Job 等
1.kubectl run創(chuàng)建的pod沒有自愈功能,因為該pod沒有被controller所管理。
2.Deployment是最常用的部署無狀態(tài)服務(wù)的controller,用于管理replicaset和更新pod
3.創(chuàng)建Deployment后,Deployment contorller將立即創(chuàng)建一個ReplicaSet副本集,并由ReplicaSet創(chuàng)建所需要的pod。更新deployment時,deployment控制器將為deployment創(chuàng)建一個新的ReplicaSet副本集,并逐步在新的副本集中創(chuàng)建pod;在舊的的副本集中刪除pod,達(dá)到滾動更新的效果。
4.當(dāng)且僅當(dāng)Deployment的Pod template字段的內(nèi)容發(fā)生變更時,Depoyment的發(fā)布更新才會觸發(fā)。
創(chuàng)建deployment
#命令行直接運行
kubectl create deployment nginx --image=nginx
#通過配置文件yaml創(chuàng)建
kubectl create deployment nginx --image=nginx --dry-run='client' -o yaml > dep.yaml
kubectl apply -f dep.yaml
#刪除deployment
kubectl delete deployment nginx
kubectl delete -f dep.yaml
#驗證deployment管理的pod具有自愈性
kubectl run起一個pod, kubectl create deployment起一個controller管理的pod
kubectl get pods -o wide 檢查pod分布的node
kubectl drain node2 將分布到node2上的pod驅(qū)逐
kubectl get pods -o wide 可看到node2被禁止調(diào)度,且controller管理的pod遷移到node1上運行了,而kubectl run的pod已被刪除
kubectl get rs 可看到對應(yīng)的replicaset controller
#查看deployment的具體配置
kubectl edit deployment nginx
#將pod擴展為2
kubectl scale deployment nginx --replicas=2
#查看deployment nginx的滾動更新狀態(tài)
kubectl rollout status deployment nginx
#查看deployments
kubectl get deployments
#查看replicasets
kubectl get rs -w
#查看deployment的events
kubectl describe deployment
#查看更新歷史
kubectl rollout history deployment nginx
#回滾到前一個版本,不能回滾(rollback)一個已暫停的 Deployment,除非您繼續(xù)(resume)該 Deployment
kubectl rollout undo deployment nginx
kubectl rollout undo deployment nginx --to-revision=2
#暫停更新
kubectl rollout pause deployment nginx
#恢復(fù)更新
kubectl rollout resume deployment nginx
#導(dǎo)出deployment的配置文件
kubectl get deployment deploy_name -o yaml > deployment.yaml
#刪除 ReplicaSet 時,將不刪除其從屬對象
kubectl delete replicaset my-repset --cascade=false
用service暴露pod服務(wù)
kubectl expose deployment nginx --port=80 --type=NodePort
# 查看service
kubectl get svc
# 查看service對應(yīng)的endpoint
kubectl get endpoints
#驗證
curl http://service-clusterIP
curl http://nodeIP:32038
以上命令行運行的nginx,可用以下配置文件來云
vi nginx-dep-service.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-nginx
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
----------------------
apiVersion: v1
kind: Service
metadata:
name: web-nginx
labels:
apps: nginx
spec:
selector:
app: nginx
ports:
- name: web-nginx
protocol: TCP
port: 80
nodePort: 32600
targetPort: 80
type: NodePort
kubectl apply -f nginx-dep-service.yaml
感謝各位的閱讀,以上就是“kubernetes中怎么驗證deployment”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對kubernetes中怎么驗證deployment這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。