Anotación
Ya ha visto cómo se utilizan las etiquetas en Kubernetes para identificar, seleccionar y organizar objetos. Sin embargo, las etiquetas son solo una manera de adjuntar metadatos a objetos Kubernetes.
Otra forma son las anotaciones, que es un mapa de clave/valor que adjunta a los objetos metadatos no identificadores. La anotación tiene muchos casos de uso, como, por ejemplo, adjuntar:
punteros para el registro y el análisis
números de teléfono, entradas de directorio y sitios web
marcas de hora, hashes de imagen y direcciones del registro
red, espacios de nombres
y, tipos de la controladora de entrada
A’continuación se muestra un ejemplo para anotaciones:
apiVersion: v1 kind: Pod metadata: name: annotations-demo annotations: #<--- imageregistry: https://hub.docker.com spec: containers: name: annotation-pod image: contrailk8sdayone/ubuntu ports: containerPort: 80
Las anotaciones se pueden usar para asignar información de red a los pods, y en el capítulo’9 se observa cómo una anotación Kubernetes puede indicar a Juniper contrail que conecte una interfaz a una determinada red. Elegante.
Antes de ver las anotaciones en acción,’deje que cree primero una red con una configuración mínima basada en la definición de recursos personalizada de la red Kubernetes de hecho. NetworkAttachmentDefinition
se utiliza aquí para indicar la CNI, así como los parámetros de la red a los que se conectará a la interfaz Pod:
apiVersion: "k8s.cni.cncf.io/v1" kind: NetworkAttachmentDefinition metadata: name: net-a spec: config: '{ "cniVersion": "0.3.0", "type": "awesome-plugin" }'
El servicio type, awesome-plugin
, es el nombre de la CNI que podría ser flannel, Calico, Contrail-K8s-CNI, etc.
Crear un conjunto Pod y usar anotaciones para conectar su interfaz a una red denominada net-a:
Según la definición de recurso personalizado de red Kubernetes oficial, el k8s.v1.cni.cncf.io/networks de anotación se utiliza para representar NetworkAttachmentDefinition
y tiene dos formatos:
Para mantener la compatibilidad con las implementaciones de Kubernetes existentes, todos los pods deben estar conectados a la cluster-wide
red predeterminada, que significa incluso si conectó una interfaz Pod a una red específica, este conjunto Pod tendría dos interfaces: una conectada a la cluster-wide
red predeterminada y la otra conectada a la red especificada en el argumento anotación (net-a
en este caso).