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
- 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
- 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:
- Si ambos están definidos nodeSelector y nodeAffinity, debe se cumplen ambas condiciones, la vaina con el tiempo puede correr al nodo especificado
- Si nodeAffinity formulado más de nodeSelectorTerms, entonces uno puede ser capaz de igualar el éxito de la programación
- Si hay varias matchExpressions en nodeSelectorTerms, a continuación, un nodo debe cumplir con todos los matchExpressions para ejecutar la vaina