Implementación binaria Clúster K8s Uso avanzado Sección 4 Controlador de pod

Cuatro, controlador de vaina

  • El controlador se usa para controlar la vaina

El controlador se divide principalmente en:

  • ReplicationController (equivalente a la versión anterior de ReplicaSet, ahora se recomienda usar
  • Implementaciones más ReplicaSet en lugar de RC)
  • Conjunto de réplicas ReplicaSet, expansión y reducción del módulo de control
  • Las implementaciones controlan la actualización y la reversión del pod
  • StatefulSets implementa aplicaciones de pod con estado
  • DaemonSet se ejecuta en todos los nodos del clúster (incluido el maestro), como el uso
  • filebeat, exportador_nodo
  • Trabajos una vez
  • Cronjob periódico

4.1 Implementación y ReplicaSet

4.1.1 Funciones del controlador Replicaset:

  • Admite un nuevo selector basado en conjuntos (no existe tal función en el rc anterior)
  • Realice la expansión y reducción de Pod cambiando la cantidad de copias de Pod

4.1.2 Funciones del controlador de implementación:

  • La implementación integra la implementación en línea, la actualización continua, la creación de copias, la reversión y otras funciones
  • ReplicaSet se incluye y se usa en la implementación

4.1.3 Comando para crear despliegue

kubectl run nginx1 --image=nginx:1.15-alpine --port=80 --replicas=1
kubectl get deployment
kubectl get pod -o wide

Si no hay un espejo local, lo descargará automáticamente. Nginx: 1.15-alpine es relativamente pequeño y rápido de descargar. También
puede especificar su propio repositorio de espejo de intranet para mejorar la velocidad de descarga

--port = 80 es equivalente al puerto expuesto en la ventana acoplable

--replicas = 1 especifica el número de réplicas, el valor predeterminado también es 1

4.1.4 Implementación de creación de archivos YAML

apiVersion: apps/v1
kind: Deployment
metadata:
 name: nginx2 # deployment名
spec:
2, 应用YAML文件创建deployment
3, 查看验证
删除deployment
 replicas: 1 # 副本集,deployment里使用了
replicaset
 selector:
  matchLabels:
   app: nginx # 匹配的pod标签,表示deployment和
rs控制器控制带有此标签的pod
 template: # 代表pod的配置模板
  metadata:
   labels:
    app: nginx # pod的标签
  spec:
   containers: # 以下为pod里的容器定义
   - name: nginx
    image: nginx:1.15-alpine
    imagePullPolicy: IfNotPresent
    ports:
    - containerPort: 80
kubectl apply -f nginx2-deployment.yml
kubectl get deployment
kubectl get pods

4.2 controlador DaemonSet

  • DaemonSet permite que todos los nodos (o específicos) ejecuten el mismo pod
  • Cuando el nodo del clúster en el K8S, el pod está programado (DaemonSet) para ejecutarse en la
    línea del nodo cuando el nodo se elimina del clúster K8S está programado, el pod DaemonSet se elimina
  • Si elimina DaemonSet, todos los pods asociados con este DaemonSet se eliminarán
    excepto.
  • Si un pod DaemonSet se mata, se detiene o se
    bloquea, DaemonSet volverá a crear una nueva copia en este nodo de cálculo
  • DaemonSet se utiliza generalmente en la recopilación de registros, la recopilación de supervisión, el demonio de almacenamiento distribuido, etc.
vim nginx-daemonset.yml
apiVersion: apps/v1
kind: DaemonSet
metadata:
 name: nginx-daemonset
spec:
 selector:
  matchLabels:
   name: nginx-test
 template:
  metadata:
   labels:
    name: nginx-test
  spec:
   tolerations: # tolerations代表容忍
   - key: node-role.kubernetes.io/master  # 能容忍的污点key
     effect: NoSchedule  # kubectl explain pod.spec.tolerations查看(能容忍的污点effect)
   containers:
   - name: nginx
    image: nginx:1.15-alpine
    imagePullPolicy: IfNotPresent
    resources:   # resources资源限制是为了防止master节点的资源被占太多(根据实际情况配置)
     limits:
      memory: 100Mi
     requests:

4.3 Controlador de trabajo

  • El trabajo es responsable del procesamiento por lotes de tareas únicas de corta duración (tareas únicas de corta duración), es decir, tareas que se ejecutan solo una vez, y garantiza que uno o más Pods de la tarea de procesamiento por lotes se completen con éxito

4.3.1 Crear un trabajo de una sola vez

vim job.yml
apiVersion: batch/v1
kind: Job
metadata:
 name: pi # job名
spec:
 template:
  metadata:
   name: pi # pod名
  spec:
   containers:
   - name: pi # 容器名
    image: perl # 此镜像有800多M,可提前导入到所有节点,也可能指定导入到某一节点然后指定调度到此节点
    imagePullPolicy: IfNotPresent
    command: ["perl",  "-Mbignum=bpi", "-wle", "printbpi(2000)"]
   restartPolicy: Never # 执行完后不再重启
kubectl apply -f job.yml
kubectl get jobs
kubectl get pods
kubectl logs pi-tjq9b

4.3.2 Crear un número fijo de trabajos

vim job2.yml
apiVersion: batch/v1
kind: Job
metadata:
 name: busybox-job
spec:
 completions: 10 # 执行job的次数
 parallelism: 1 # 执行job的并发数
 template:
  metadata:
   name: busybox-job-pod
  spec:
   containers:
   - name: busybox
    image: busybox
    imagePullPolicy: IfNotPresent
    command: ["echo", "hello"]
   restartPolicy: Never
kubectl apply -f job2.yml
kubectl get job

4.4 controlador crontab

  • Similar al crontab del sistema Linux, ejecute tareas relacionadas en un período de tiempo específico
vim cronjob.yml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
 name: cronjob1
spec:
 schedule: "* * * * *"         # 分时日月周
 jobTemplate:
  spec:
   template:
    spec:
     containers:
     - name: hello
      image: busybox
      args:
      - /bin/sh
      - -c
      - date; echo hello kubernetes
      imagePullPolicy: IfNotPresent
     restartPolicy: OnFailure
kubectl apply -f cronjob.yml
kubectl get cronjob
kubectl get pod

4.5 Actualización de la versión del Pod (actualización continua)

# 升级前查看版本
kubectl describe pod nginx1-7d9b8757cf-czcz4 |grep Image: # 升级前版本
  Image:      nginx:1.15-alpine
kubectl exec nginx1-7d9b8757cf-czcz4 --nginx -v

# 正式升级
kubectl set image deployment nginx1 nginx1=nginx:1.16-alpine --record  # 升级为1.16版
kubectl set image -h # 查看帮助
kubectl rollout status deployment nginx1 # 滚努更新

# 查看版本
kubectl get pods
kubectl describe pod nginx1-7ffc8cb4fb-tn4ls |grep Image:
kubectl exec nginx1-7ffc8cb4fb-tn4ls --nginx -v

despliegue nginx1 representa el despliegue llamado nginx1
nginx1 = nginx: 1.16-alpine El nginx1 anterior es el nombre del contenedor --record
significa que registrará

4.6 Reversión de la versión del Pod

kubectl rollout history deployment nginx1 # 查看版本历史信息
kubectl rollout history deployment nginx1--revision=1 # 定义要回退的版本为1
kubectl rollout undo deployment nginx1 --to-revision=1 # 开始回退
deployment.extensions/nginx1 rolled back
kubectl rollout history deployment nginx1 deployment.extensions/nginx1 # 查看有没回退
kubectl get pods
kubectl describe pod nginx1-7d9b8757cf-m7rt4 |grep Image:
kubectl exec nginx1-7d9b8757cf-m7rt4 --nginx -v

4.7 Expansión de réplicas

kubectl scale -h # 查看帮助
kubectl scale deployment nginx1 --replicas=10 # 扩容为10个副本,改小字则副本缩减
kubectl get pods -o wide

Supongo que te gusta

Origin blog.51cto.com/yht1990/2539866
Recomendado
Clasificación