k8s-Controller
1、Controller概述
在叢集上管理和執行容器物件
2、Pod和Controller關係
Pod是通過controller實現應用的維護:彈性伸縮、滾動升級等
Pod和Controller之間建立關係的方式?
spec:
replicas: 1
selector:
matchLabels:
app: web
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: web
spec:
containers:
- image: nginx
name: nginx
- 通過label標籤建立關係
- 控制器中selector。Pod中標籤labels
3、deployment應用場景
(1)部署無狀態應用(web服務、微服務)
(2)管理Pod和ReplicaSet
(3)部署、滾動升級
4、使用Deployment(無狀態)方式部署應用
//建立pod只生成yaml檔案,
--dry-run 表示嘗試執行,實際不執行
> web.yaml 表示生成yaml檔案匯出到根目錄
kubectl create deployment web --image=nginx --dry-run -o yaml > web.yaml
//生成的yaml檔案可以進行編輯
//使用yaml檔案進行應用部署
kubectl apply -f web.yaml
//檢視建立成功的pod
kubectl get pods
//對外進行釋出(暴露埠)
--port 表示當前埠
--target-port=80 表示對外埠
--name 表示對此釋出的命名
kubectl expose deployment web --port=80 --type=NodePort --target-port=80 --name=web1 -o yaml > web1.yaml
kubectl apply -f web1.yaml
kubectl get pods.svc
5、升級、回滾
//直接vi編輯web.yaml中 - image的版本為1.14,並且部署應用
kubectl apply -f web.yaml
//將版本升級為1.15
kubectl set image deployment web nginx=nginx:1.15
//檢視應用升級狀態
kubectl rollout status deployment web
//檢視升級歷史版本
kubectl rollout history deployment web
//還原到上一個版本
kubectl rollout undo deployment web
//還原到指定版本
kubectl rollout undo deployment web --to-revision=2
6、彈性伸縮
//設定應用的副本數
kubectl scale deployment web --replicas=10