[K8S] 04 - Controller

  一个loop,主要是 对Pod进行监控、巡视。比如Pod挂了,那就重新拉起。

 

常见“控制器”

控制器类型

  • Deployment, 无状态;已包含 ReplicaSet 控制器。
  • StatefulSet,有状态;
  • Job,一次性任务;
  • CronJob,周期性任务; 

 

 

命令行模式

开启一个服务。

kubectl run nginx-app1 --image=nginx:latest --image-pull-policy=IfNotPresent --replicas=2

查看 deployment控制器,会看到如下结果:

查看启动后的状态。

kubectl get deployment
kubectl get deployment.apps
kubectl get replicaset
kubectl get pods
kubectl get pods -o wide

 

  

资源清单模式

创建 资源清单

[selector]

App 如何与 Pod关联?by selector。

"通过 标签选择器 selector,找到label,进一步地 找到template中的pod"。

   

03-create-deployment-nginx-app2.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-app2  【定义了这个应用的名字,spec开始定义应用的细节

spec:  
  replicas: 1
  selector:
    matchLabels: 
      app: nginx # <-------------这里让App知道自己的pod到底是哪位
  template:     pod模板】
    metadata:   【开始定义pod
      labels:
        app: nginx  【pod的标签】
     spec:
      containers:
     - name: nginxapp2-container
       image: nginx:latest
       imagePullPolicy: IfNotPresent
       ports:
       - containerPort: 80

 

执行 清单文件

$ kubectl apply -f 03-create-deployment-nginx-app2.yaml
$ kubectl get deployment.apps  【查看app的列表】
$ kubectl get rs   【查看replicas】
$ kubectl get pods
$ kubectl get pods -o wide   【查看pod详情,包括节点、IP等】

  

删除 Deployment控制器类型应用

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

 

  • However, 若是直接删除

无法最终删除,相当于重启,时间会被重置。

$ kubectl delete pods nginx-app1-57c7c9c89d-qp8h8 -n default
  • So, 应当删除应用
$ kubectl delete deployment.apps nginx-app1

# 查看Pod还在么?
$ kubectl get rs

$ kubectl get pods
  • Or 通过资源清单文件删除
$ kubectl delete -f 03-create-deployment-nginx-app2.yaml

 

End.

posted @ 2021-11-23 11:50  郝壹贰叁  阅读(39)  评论(0编辑  收藏  举报