k8s學習五-核心技術~Controller

孟諸 2022-01-08 03:53:07 阅读数:276

k8s 核心 controller

controller是在集群上管理和運行容器的對象,pod通過controller來實現應用的運維比如伸縮,滾動昇級等。pod和controller之間通過label標簽建立聯系。

1 deployment控制器

1.1 應用場景

  • 部署無狀態應用,如web服務、微服務
  • 管理Pod和ReplicaSet
  • 部署、滾動昇級等功能

1.2 部署應用

1 導出yaml文件

kubectl create deployment web --image=nginx --dry-run -o yaml > web.yaml

2 使用yaml部署應用

kubectl apply -f web.yaml

3 對外暴露服務

kubectl expose deployment web --port=80 --type=NodePort --target-port=80 – name=web1 -o yaml > web.yaml

4 部署應用

kubectl apply -f web1.yaml

1.3 昇級回滾和彈性伸縮

  • 鏡像昇級

鏡像昇級中一個個昇級,首先下載目標版本鏡像,下載過程中老服務仍然提供服務。下載後做替換,優雅昇級
1 當前鏡像版本
在這裏插入圖片描述
2 鏡像昇級:

kubectl set image deployment web nginx=nginx:1.15
在這裏插入圖片描述

3 查看昇級狀態:

kubectl rollout status deployment web
在這裏插入圖片描述

  • 鏡像回滾

1 查看昇級記錄

kubectl rollout history depolyment web
在這裏插入圖片描述

2 回退到上個版本

kubectl rollout undo depolyment web
在這裏插入圖片描述

3 回滾到指定版本

kubectl rollout undo depolyment web --to-revision=2
在這裏插入圖片描述

  • 彈性伸縮

kubectl scale deployment web --replicas=10
在這裏插入圖片描述

2 StatefulSet控制器

通過deployment控制器部署無狀態應用。如果想部署有狀態應用需要使用StatefulSet控制器

2.1 無狀態和有狀態

無狀態概念:

  • 認為pod都是一樣的
  • 沒有順序要求
  • 不用考慮在哪個node上運行
  • 隨意進行伸縮和擴展

有狀態概念:

  • 上述因素都要考慮到
  • 每個pod都是獨立的,保持pod的啟動順序(如mysql主從結構,先啟動主再啟動從)和唯一性(通過唯一的網絡標識符進行區分)

2.2 部署應用

2.2.1 修改yaml文件

  • 首先定義一個無頭Service
    在這裏插入圖片描述
  • 配置有狀態應用
    在這裏插入圖片描述

2.2.2 啟動應用

在這裏插入圖片描述
可以看到pod名稱和配置是一致的
查看創建的無頭service
在這裏插入圖片描述

2.2.3 唯一標識

每個pod都會生成一個唯一域名,生成規則如下
在這裏插入圖片描述

3 DaemonSet控制器

DaemonSet確保集群中每個(部分)node運行一份pod副本,當node加入集群時創建pod,當node離開集群時回收pod。如果删除DaemonSet,其創建的所有pod也被删除,DaemonSet中的pod覆蓋整個集群。
當需要在集群內每個node運行同一個pod,使用DaemonSet是有價值的,以下是典型使用場景:

  • 運行集群存儲守護進程,如glusterd、ceph。
  • 運行集群日志收集守護進程,如fluentd、logstash。
  • 運行節點監控守護進程,如Prometheus Node Exporte

3.1 使用示例

這裏做一個nginx日志采集功能,把日志寫到特定目錄
在這裏插入圖片描述
測試效果
在這裏插入圖片描述

4 部署任務

4.1 一次性任務

1 編寫yaml文件
在這裏插入圖片描述
backoffLimit:失敗之後再嘗試4次
2 創建並查看pod
在這裏插入圖片描述
3 查看job
在這裏插入圖片描述
因為是一次性任務,運行完成後變成Completed狀態
4 查看日志
在這裏插入圖片描述

4.2 定時任務

1 編寫yaml文件
在這裏插入圖片描述
定時輸出時間和hello
2 創建並查看容器
在這裏插入圖片描述
3 查看任務
在這裏插入圖片描述
4 查看日志
在這裏插入圖片描述

版权声明:本文为[孟諸]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201080353072578.html