programación K8S

la programación de despliegue

RC despliegue controlador o sus reglas de planificación están programados automáticamente por el sistema, su respectivo tramo final en el que los nodos completamente a través de una serie de algoritmos calculados por el nodo maestro planificador, el usuario no puede intervenir de planificación del proceso y los resultados, aquí no es la demo! !

horario orientación NodeSelector

En el entorno de producción real, es posible que necesitamos para funcionar en una vaina bajo un nodo en particular, entonces tenemos que horario orientación, de modo que una vaina para funcionar a una node2 nodo específico, los pasos siguientes:

El primer paso, una recompensa a la etiqueta nodo node2

[Root @ Master ~] # kubectl etiquetas de nodo aplicación node2 = liberación 
puede ver la etiqueta kubectl get nodos --show-etiquetas

En segundo lugar, definir el archivo pod.yaml, definir el selector de dejar tres carreras en la aplicación de etiquetas vaina: sobre la liberación de nodo

[root @ master ~ ] # vim deploy.yaml 
apiVersion: Aplicaciones / v1 
tipo: Despliegue 
de metadatos: 
  nombre: miaplicacion 
  defecto: espacio de nombres 
de especificaciones: 
  réplicas: 3 
  selectores: 
    matchLabels: 
      app: la liberación 
  de la plantilla: 
    metadatos: 
      nombre: MyPod 
      espacio de nombres por defecto: 
      etiquetas : 
        liberación: aplicación 
    de especificaciones: 
      nodeSelector: 
        liberación: app 
      contenedores:
       - nombre: mycontainer 
        imagen: liwang7314 / V1: miaplicacion  
        imagePullPolicy: IfNotPresent
        puertos:
         - Nombre: http 
          containerPort: 80

El tercer paso es crear archivos ejecutables vaina y pod nodo de ejecución observada, se encontró que los tres vainas que se ejecuta en el nodo 2 nodo

[root @ amo ~] # kubectl crear - f deploy.yaml 
deployment.apps / miaplicacion creado 
[root @ amo ~] # kubectl get vainas - O amplia 
ESTADO NOMBRE LISTO REINICIO DE EDAD IP NODO NODO DE PREPARACIÓN NOMINADO GATES 
miaplicacion -95ff9459c-8g6tc    1 / 1      Ejecución de    0           4s     10.244 . 2,8    node2 <ninguno> <ninguno> 
miaplicacion -95ff9459c-ghxxx    1 / 1      Ejecución de    0           4s     10.244 . 2.7   nodo2 <ninguno> <ninguno> 
miaplicacion -95ff9459c-s5pt9    1 / 1      Ejecución de    0           4s     10.244 . 2.6    nodo2 <ninguno> <ninguno>

NodeAffinity: Nodo programación afinidad

NodeAffinity significa nodo Directiva de afinidad de programación se utiliza para reemplazar toda la estrategia de programación carta NodeSelector, hay dos tipos de nodos Expresión afinidad

  1. requiredDuringSchedulingIgnoredDuringExecution: debe cumplir con las reglas especificadas pueden programar Pod al Nodo (NodeSelector función similar, pero en ninguna parte sintaxis), que corresponde al límite duro
  2. preferredDuringSchedulingIgnoredDuringExecution: prioridad enfatizado para satisfacer especificado criterios, los intentos Programador para programar el Nodo Pod, pero no fuerza, equivalente a un límite suave, la pluralidad de reglas de prioridad pueden pesos también ser proporcionadas valores (peso), para definir la secuencia de ejecución

Definimos un archivo affinity.yaml, que define tres vaina, vaina de programación para permitir la definición de requiredDuringSchedulingIgnoredDuringExecution en el nodo 2, entonces por definición deja que preferredDuringSchedulingIgnoredDuringExecution vaina previsto que el nodo nodo 2, de la siguiente manera:

El primer paso, los archivos de definiciones yaml

[root @ master ~] # cat affinity.yaml 
apiVersion: Aplicaciones / v1 
tipo: Despliegue 
de metadatos: 
  nombre: miaplicacion 
  espacio de nombres: por defecto 
especificaciones: 
  réplicas: 3 
  Selector: 
    matchLabels: 
      aplicación: la liberación 
  de plantilla: 
    metadatos: 
      nombre: MyPod 
      espacio de nombres: por defecto 
      etiquetas : 
        aplicación: la liberación 
    de especificaciones: afinidad: 
        nodeAffinity: 
          requiredDuringSchedulingIgnoredDuringExecution: 
            nodeSelectorTerms:
      
             - matchExpressions: 
              - clave: app 
                operador: En
                valores: 
                - liberación 
          preferredDuringSchedulingIgnoredDuringExecution: 
          - Peso: 1 
            preferencia: 
              matchExpressions: 
              - clave: app 
                operador: NOTIN 
                valores: 
                - liberación 
      contenedores:
       - nombre: mycontainer 
        imagen: liwang7314 / miaplicacion: v1 
        imagePullPolicy: IfNotPresent 
        puertos:
         - nombre: http 
          containerPort: 80

A continuación, cree vaina y luego observar el nodo en el que la vaina, se puede encontrar en todo programado para node2

[root @ amo ~] # kubectl get vainas - O amplia 
NOMBRE ESTADO LISTO REINICIO DE EDAD IP NODO NODO DE PREPARACIÓN NOMINADO GATES 
miaplicacion -6fcfb98879-566z5    1 / 1      Ejecución de    0           3m24s    10.244 . 2,10    node2 <ninguno> <ninguno> 
miaplicacion -6fcfb98879-5r6cm    1 / 1      Ejecución de    0           3m24s    10.244 . 2.11    nodo2 <ninguno> <ninguno> 
miaplicacion -6fcfb98879-7kwwq    1 / 1      de reproducción   0           3m24s    10.244 . 2.9     nodo2 <ninguno> <ninguno>

Si nos retiramos requiredDuringSchedulingIgnoredDuringExecution, la vista se puede encontrar ya programado para el nodo 1, el nodo 2, pero habrá una vaina, porque el campo preferredDuringSchedulingIgnoredDuringExecution tanto como sea posible, no es necesario, y por tanto los siguientes resultados

[root @ amo ~] # kubectl get vainas - O amplia 
NOMBRE ESTADO LISTO REINICIO DE EDAD IP NODO NODO DE PREPARACIÓN NOMINADO GATES 
miaplicacion -55679db465-h5ftb    1 / 1      Ejecución de    0           11s    10.244 . 1,76    nodo1 <ninguno> <ninguno> 
miaplicacion -55679db465-kj58w    1 / 1      Ejecución de    0           11s    10.244 . 1,75    node1 <ninguno> <ninguno> 
miaplicacion -55679db465-mwfjq    1 / 1      Ejecución de    0          11s    10.244 . 2.12    nodo2 <ninguno> <ninguno>

Nota NodeAffinity conjunto de reglas:

  1. Si ambos están definidos nodeSelector y nodeAffinity, debe se cumplen ambas condiciones, la vaina con el tiempo puede correr al nodo especificado
  2. Si nodeAffinity formulado más de nodeSelectorTerms, entonces uno puede ser capaz de igualar el éxito de la programación
  3. Si hay varias matchExpressions en nodeSelectorTerms, a continuación, un nodo debe cumplir con todos los matchExpressions para ejecutar la vaina

 

Supongo que te gusta

Origin www.cnblogs.com/fengzi7314/p/12466738.html
Recomendado
Clasificación