1. 程式人生 > 其它 >k8s-控制器deployment彈性擴容,更新映象,回滾,DaemonSet,StatufluSet

k8s-控制器deployment彈性擴容,更新映象,回滾,DaemonSet,StatufluSet

目錄

1、控制器deployment,DaemonSet,StatufluSet

k8s中控制器分為:deployment、DaemonSet、StatufluSet
Deployment:一般用來部署長期執行的、無狀態的應用
	特點:叢集之中,隨機部署 
DaemonSet:每一個節點上部署一個Pod,刪除節點自動刪除對應的POD(zabbix-agent)
	特點:每一臺上有且只有一臺
StatudfluSet: 部署有狀態應用
	特點:有啟動順序


檢視控制器:
kubectl get deployments
kubectl get daemonsets
kubectl get statefulsets
刪除控制器:
kubectl delete deployments 名字
kubectl delete daemonsets 名字
kubectl delete statefulsets 名字

2、控制器-deployment

deployment.yaml

replicas: 1   決定pod部署的數量
Deploymnet:在Deployment物件中描述所需的狀態,然後Deployment控制器將實際狀態以受控的速率更改為所需的狀態。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment
spec:
  replicas: 1  		# pod數量
  selector:  			# 選擇器
    matchLabels:  # 標籤
      release: stable # 選擇標籤
  template:  				# 模版
    metadata:
      name: test-tag  # 控制器名字
      labels: 
        release: stable # 設定控制器標籤
    spec:
      containers:
        - name: nginx  # 映象名稱
          image: nginx # 映象 

彈性擴容

方式1-修改配置清單

kubectl edit 資源型別 資源名稱
[root@sg-14 k8s_yaml]# kubectl edit deployments test
修改replicas數量:
replicas: 2

方式2-打標籤

[root@sg-14 k8s_yaml]kubectl patch deployments.apps test -p '{"spec":{"replicas":1}}'

方式3-scale

kubectl scale 資源型別/資源名稱 --replicas=10

[root@sg-14 k8s_yaml]# kubectl scale deployment/test --replicas=10

更新映象

方式1:打標籤

一層層的按照yaml寫
[root@k8s-m-01 ~]# kubectl patch deployments.apps django -p '{"spec":{"template":{"spec":{"containers":[{"image":"nginx:1.18.0", "name":"nginx"}]}}}}'

方式2:修改配置清單

[root@sg-14 k8s_yaml]# vi test.yaml

image: nginx-lalal
#######
修改映象版本
#######

kubectl apply test.yaml //重新部署下

方式3:設定映象

kubectl set image 資源型別/資源名稱 映象名字=映象版本
[root@k8s-m-01 ~]# kubectl set image deployment/django nginx=nginx:1.16.0

方式4:修改edit

kubectl edit [資源型別] [資源名稱]

[root@sg-14 k8s_yaml]# kubectl edit deployments test
找到-image修改

回滾

kubectl rollout undo [資源型別] [資源名稱]
kubectl rollout history deployment  test // 版本歷史
kubectl rollout undo deployment test // 回滾上一個版本
kubectl rollout undo deployment test --to-revision=1 // 回滾指定版本

3、控制器-DaemonSet

daemonset.yaml

# 在叢集中所有的節點上部署只部署一個Pod,新加入的node節點也會部署一個

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: zabbix-agent
spec:
  selector:
    matchLabels:
      app: zabbix-agent
  template:
    metadata:
      labels:
        app: zabbix-agent
    spec:
      containers:
        - name: nginx
          image: nginx

修改配置檔案daemonset

1、修改配置檔案
[root@k8s-m-01 ~]# kubectl edit daemonsets.apps zabbix-agent 

2、打標籤的方式
[root@k8s-m-01 ~]# kubectl patch daemonsets.apps zabbix-agent  -p '{"spec":{"template":{"spec":{"containers":[{"image":"zabbix/zabbix-agent:centos-5.2.4", "name":"zabbix-agent"}]}}}}'
daemonset.apps/zabbix-agent patched

3、設定映象
[root@k8s-m-01 ~]# kubectl set image daemonset/zabbix-agent zabbix-agent=zabbix/zabbix-agent:centos-5.2.3
daemonset.apps/zabbix-agent image updated

回滾

## 回滾到上一個版本
[root@k8s-m-01 ~]# kubectl rollout undo daemonset zabbix-agent 
daemonset.apps/zabbix-agent rolled back

## 回滾到指定版本
[root@k8s-m-01 ~]# kubectl rollout undo daemonset zabbix-agent --to-revision=1
daemonset.apps/zabbix-agent rolled back

4、StatudfluSet


選擇了IT,必定終身學習