k8s-Controller

Voir Toi發表於2020-11-17

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