k8s集群核心概念Controller(控制器)

x33g5p2x  于2021-11-15 转载在 其他  
字(1.8k)|赞(0)|评价(0)|浏览(483)

k8s集群核心概念Controller(控制器)

一、Controller介绍

  • 控制器
  • 用于对应用运行的资源对象进行监控
  • 当Pod出现问题时,会把Pod重新拉起,以达到用户的期望状态
    我们发现pod是可以直接删除的,如果在生产过程中操作失误也会删除pod,因此我们需要在k8s集群中引入控制器,用于在k8s集群中以loop方式监视Pod状态,如果其发现Pod被删
    除,将会重新拉起一个Pod,以让Pod一直保持在用户期望状态

二、controller分类

常见Pod控制器:

控制器名称作用
Deployment声明式更新控制器,用于发布无状态应用
ReplicaSet副本集控制器,用于对Pod进行副本规模扩大或剪裁
StatefulSet有状态副本集,用于发布有状态应用
DaemonSet在k8s集群每一个Node上运行一个副本,用于发布监控或日志收集类等应用
Job运行一次性作业任务
CronJob运行周期性作业任务

三、Deployment控制器介绍

  • 具有上线部署、滚动升级、创建副本、回滚到以前某一版本(成功/ 稳定)等功能
  • Deployment包含ReplicaSet,除非需要自定义升级功能或者根本不需要升级Pod,否则还是建议使用Deployment而不直接使用Replica Set

四、创建Deployment控制器类型应用

4.1通过kubectl命令行创建

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-apps
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginxapp
        image: nginx:latest
        imagePullPolicy: IfNotPresent
        ports: 
        - containerPort: 88
        resources:
          limits:
            cpu: '1'
            memory: 1Gi
          requests:
            cpu: 200m
            memory: 512Mi

4.2编写用于创建Deployment控制器类型应用资源清单

root@k8s1:/home# kubectl apply -f 03-create-deployment-app.yaml 
deployment.apps/nginx-apps created

4.3验证资源清单应用后结果

查看Deployment控制器类型应用

root@k8s1:/home# kubectl get deployments.apps 
NAME                READY   UP-TO-DATE   AVAILABLE   AGE
nginx-apps          1/1     1            1           107s

查看ReplicaSet控制器类型应用

root@k8s1:/home# kubectl get replicaset.apps
NAME                           DESIRED   CURRENT   READY   AGE
nginx-apps-6c44bdcdc7          1         1         1       2m48s

查看Pod状态

root@k8s1:/home# kubectl get pods
NAME                                 READY   STATUS      RESTARTS   AGE
nginx-apps-6c44bdcdc7-8bwt7          1/1     Running     0          3m40s

五、删除Deployment控制器类型应用

带有控制器类型的Pod不能随便删除,如果必须删除,请删除控制器类型的应用名称。

5.1通过kubectl命令行删除

root@k8s1:/home# kubectl get deployment.apps
NAME                READY   UP-TO-DATE   AVAILABLE   AGE
nginx-apps          1/1     1            1           6m58s
root@k8s1:/home# kubectl delete deployments.apps nginx-apps 
deployment.apps "nginx-apps" deleted

5.2通过kubectl应用资源清单文件删除

root@k8s1:/home# kubectl get deployment.apps
NAME                READY   UP-TO-DATE   AVAILABLE   AGE
nginx-apps          1/1     1            1           6m58s
root@k8s1:/home# kubectl delete -f 03-create-deployment-app.yaml 
deployment.apps "nginx-apps" deleted

相关文章