Este documento está dirigido a administradores de TI, operadores y especialistas en redes que ejecutan Google Distributed Cloud. En este documento se explica cómo crear y usar redes virtuales para admitir cargas de trabajo de máquinas virtuales que usen el tiempo de ejecución de máquinas virtuales en GDC. Para obtener más información sobre los roles habituales y las tareas de ejemplo a las que hacemos referencia en el contenido de Google Cloud , consulta Roles y tareas de usuario habituales de GKE.
Antes de empezar
Para completar este documento, necesitas tener acceso a los siguientes recursos:
- Acceso a un clúster de Google Distributed Cloud versión 1.12.0 (
anthosBareMetalVersion: 1.12.0
) o posterior. Puedes usar cualquier tipo de clúster que pueda ejecutar cargas de trabajo. Si es necesario, prueba Google Distributed Cloud en Compute Engine o consulta la descripción general de la creación de clústeres. - La herramienta de cliente
virtctl
instalada como complemento dekubectl
. Si es necesario, instala la herramienta de cliente virtctl.
Información general sobre las redes virtuales
Las redes se crean con recursos personalizados. Puedes crear una red en cualquier momento después de crear el clúster. La configuración de red de la interfaz del host y la asignación de ID de VLAN, si se ha definido, no se pueden cambiar después de crear una red.
La eliminación de redes está sujeta a algunas condiciones. Por ejemplo, el controlador de red rechaza la eliminación de una red cuando la usan recursos como máquinas virtuales o interfaces de red.
La definición de la red puede incluir la información de la puerta de enlace, las rutas y el DNS. También puedes habilitar el uso de un servidor DHCP externo. Estos ajustes de red se asignan de forma estática o dinámica en función de cómo se definan determinadas opciones de configuración de red.
Red de pods predeterminada
Cada clúster tiene un pod-network
creado de forma predeterminada. Esta red no se puede cambiar. Las rutas de los CIDR de pods y servicios, así como la configuración de DNS, se rellenan automáticamente. La configuración de DNS usa los mismos valores que el clúster.
Las cargas de trabajo que necesiten una interfaz para acceder a la red de pods del clúster y no requieran ninguna opción de configuración específica pueden usar pod-network
.
Las rutas de pod-network
siempre se configuran para asegurar el acceso del clúster y del servicio a las cargas de trabajo, aunque la puerta de enlace predeterminada no esté en la interfaz pod-network
.
Este pod-network
predeterminado te permite probar VM Runtime en GDC sin tener que seguir pasos adicionales para crear tus propias redes virtuales. En muchos de nuestros documentos se usa este
valor predeterminado pod-network
para reducir la complejidad de los ejemplos. Las necesidades de tus cargas de trabajo de máquinas virtuales determinan si este pod-network
predeterminado es suficiente o si necesitas crear y usar tus propias redes virtuales.
El siguiente manifiesto YAML muestra un ejemplo de configuración para pod-network
.
El clúster ha rellenado los valores de las rutas, el DNS y el nombre de la interfaz:
apiVersion: networking.gke.io/v1
kind: Network
metadata:
name: pod-network
spec:
routes:
- to: 192.168.0.0/16
- to: 10.96.0.0/12
dnsConfig:
nameservers:
- 10.96.0.10
Crear y usar redes virtuales
Para admitir cargas de trabajo de producción, crea redes que admitan las funciones que necesites, como el uso de un servidor DHCP externo o de un ID de VLAN. Estas redes proporcionan conectividad de capa 2 (L2) a tus VMs.
Usar un servidor DHCP externo
El tiempo de ejecución de máquinas virtuales en GDC no proporciona servidores DHCP. Debes especificar manualmente las direcciones IP de las VMs o configurar el uso de servidores DHCP externos. Si habilitas el uso de un servidor DHCP externo, puedes omitir la configuración de los ajustes de DNS y de la pasarela si los proporciona DHCP.
Para crear una red que use un servidor DHCP externo, sigue estos pasos:
Crea un archivo de manifiesto
Network
, comouse-dhcp-network.yaml
, en el editor que prefieras:nano use-dhcp-network.yaml
Copia y pega el siguiente manifiesto YAML:
apiVersion: networking.gke.io/v1 kind: Network metadata: name: NETWORK_NAME spec: type: L2 nodeInterfaceMatcher: interfaceName: INTERFACE_NAME externalDHCP4: true
Sustituye los siguientes valores:
NETWORK_NAME
: el nombre de tu red.INTERFACE_NAME
: el nombre de la interfaz de tu nodo de Google Distributed Cloud al que quieres asociar la red. Especifica el nombre de la interfaz física de tu nodo que quieras usar. Todos los nodos de tu clúster deben tener el mismo nombre de interfaz.
En este manifiesto de
Network
, se han definido los siguientes valores:- La opción
type
está configurada comoL2
. Con este ajuste, las cargas de trabajo solo pueden tener un adjunto de capa 2 a esta red. Esta es la única redtype
que puedes crear en el entorno de ejecución de máquinas virtuales de GDC. - La opción
externalDHCP4
está configurada comotrue
. Este ajuste habilita el DHCP externo para la red. El servidor DHCP externo se encarga de la asignación de direcciones IPv4, las rutas, la pasarela y la configuración de DNS de las cargas de trabajo conectadas a esta red.
Guarda y cierra el manifiesto de
Network
en tu editor.Crea la red con
kubectl
:kubectl apply -f use-dhcp-network.yaml
Definir manualmente la configuración de red
El tiempo de ejecución de máquinas virtuales en GDC no proporciona servidores DHCP. Debes especificar manualmente las direcciones IP de las VMs o configurar el uso de servidores DHCP externos. Si especificas las direcciones IP manualmente, debes definir los ajustes de red de DNS, rutas y pasarela predeterminada.
Para crear una red con ajustes de red especificados manualmente para las VMs, sigue estos pasos:
Crea un archivo de
Network
manifiesto, comomanual-network.yaml
, en el editor que prefieras:nano manual-network.yaml
Copia y pega el siguiente manifiesto YAML:
apiVersion: networking.gke.io/v1 kind: Network metadata: name: NETWORK_NAME spec: type: L2 nodeInterfaceMatcher: interfaceName: INTERFACE_NAME routes: - to: "ROUTE_ADDRESS" gateway4: GATEWAY_ADDRESS dnsConfig: nameservers: - NAMESERVER_ADDRESS
Sustituye los siguientes valores:
NETWORK_NAME
: el nombre de tu red.INTERFACE_NAME
: el nombre de la interfaz de tu nodo de Google Distributed Cloud al que quieres asociar la red. Especifica el nombre de la interfaz física de tu nodo que quieras usar. Todos los nodos de tu clúster deben tener el mismo nombre de interfaz.ROUTE_ADDRESS
: rutas opcionales en notación CIDR que se configurarán en cada máquina virtual que se conecte a esta red.GATEWAY_ADDRESS
: la dirección IP de la pasarela que usarán tus VMs.NAMESERVER_ADDRESS
: una o varias direcciones IP de servidor de nombres DNS que usarán tus máquinas virtuales.
Guarda y cierra el manifiesto de
Network
en tu editor.Crea la red con
kubectl
:kubectl apply -f manual-network.yaml
Usar un ID de VLAN
Cuando creas redes virtuales, puedes definir VLANs etiquetadas. Estas asignaciones de VLAN te ayudan a aislar el tráfico de red en función de los requisitos de tus cargas de trabajo y de tus necesidades de aislamiento. En una red AnthosManaged
, el clúster tiene permiso para crear y eliminar la interfaz de VLAN en cada nodo.
Para crear una red que defina una asignación de VLAN, sigue estos pasos:
Crea un archivo de
Network
manifiesto, comovlan-network.yaml
, en el editor que prefieras:nano vlan-network.yaml
Copia y pega el siguiente manifiesto YAML:
apiVersion: networking.gke.io/v1 kind: Network metadata: name: NETWORK_NAME spec: type: L2 networkLifecycle: AnthosManaged l2NetworkConfig: vlanID: VLAN_ID nodeInterfaceMatcher: interfaceName: INTERFACE_NAME externalDHCP4: true
Sustituye los siguientes valores:
NETWORK_NAME
: el nombre de tu red.INTERFACE_NAME
: el nombre de la interfaz de tu nodo de Google Distributed Cloud al que quieres asociar la red. Especifica el nombre de la interfaz física de tu nodo que quieras usar. Todos los nodos de tu clúster deben tener el mismo nombre de interfaz.VLAN_ID
: el ID de VLAN para el que quieres etiquetar el tráfico.
En este manifiesto de
Network
, se han definido los siguientes valores:- Las cargas de trabajo solo pueden tener un archivo adjunto
L2
a esta red. - La red es
AnthosManaged
. Este es el ciclo de vida predeterminado si no se especifica.- En este modo, el clúster tiene permiso para crear y eliminar la interfaz de VLAN en todos los nodos, como
INTERFACE_NAME.VLAN_ID
. - Si quieres crear o ya has creado las interfaces de VLAN en los nodos, asigna el valor
networkLifecycle
aUserManaged
, tal como se muestra en la siguiente sección.
- En este modo, el clúster tiene permiso para crear y eliminar la interfaz de VLAN en todos los nodos, como
- La red tiene habilitado el protocolo DHCP externo. El servidor DHCP externo se encarga de la asignación de direcciones IPv4, las rutas, la pasarela y la configuración de DNS de las cargas de trabajo conectadas a esta red.
Guarda y cierra el manifiesto de
Network
en tu editor.Crea la red con
kubectl
:kubectl apply -f vlan-network.yaml
Crear una red gestionada por el usuario
En la siguiente red virtual de ejemplo, la red está gestionada por el usuario, a diferencia de la gestionada por Anthos de un ejemplo anterior. En las redes gestionadas por el usuario, eres responsable de crear o eliminar la interfaz de VLAN en el host.
Para crear una red en modo gestionado por el usuario y definir manualmente la configuración de la interfaz VLAN, sigue estos pasos:
Crea un archivo de manifiesto
Network
, comouser-managed-network.yaml
, en el editor que prefieras:nano user-managed-network.yaml
Copia y pega la siguiente definición de YAML:
apiVersion: networking.gke.io/v1 kind: Network metadata: name: NETWORK_NAME spec: type: L2 networkLifecycle: UserManaged l2NetworkConfig: vlanID: VLAN_ID nodeInterfaceMatcher: interfaceName: INTERFACE_NAME externalDHCP4: true
Sustituye los siguientes valores:
NETWORK_NAME
: el nombre de tu red.INTERFACE_NAME
: la interfaz del host a la que se va a conectar la red.VLAN_ID
: el ID de VLAN para el que quieres etiquetar el tráfico.
En este manifiesto de
Network
, se han definido los siguientes valores:- Las cargas de trabajo solo pueden tener un archivo adjunto
L2
a esta red. - La red es
UserManaged
. Debes crear o eliminar la interfaz de VLANVLAN_ID
en todos los nodos antes de crear la red o después de eliminarla. - La red tiene habilitado el protocolo DHCP externo. El servidor DHCP externo se encarga de la asignación de direcciones IPv4, las rutas, la pasarela y la configuración de DNS de las cargas de trabajo conectadas a esta red.
Guarda y cierra el manifiesto de
Network
en tu editor.Crea la red con
kubectl
:kubectl apply -f user-managed-network.yaml
Conectar una VM a una red
La configuración de red de tu VM, como DNS y DHCP, se asigna de forma estática o dinámica en función de cómo se definan determinadas opciones de configuración de red:
- Si configuras una dirección IP estática en la VM, no se enviará ninguna consulta a un servidor DHCP. La información adicional para configurar la pasarela y la ruta debe proceder del recurso de red.
- Si no configuras una dirección IP estática en la máquina virtual, se envía una consulta al servidor DHCP. La VM obtiene toda la información del servidor DHCP e ignora cualquier configuración que definas en el recurso de red.
- Si DHCP externo no está configurado como
true
en el recurso de red, debes configurar una dirección IP estática para la VM. El resto de la información procede de la configuración que definas en el recurso de red.
Para crear una VM que se conecte a una red, sigue estos pasos:
CLI
Para crear una máquina virtual con
kubectl
, sigue estos pasos:kubectl virt create vm VM_NAME \ --image ubuntu20.04 \ --network NETWORK_NAME
Sustituye los siguientes valores:
VM_NAME
: el nombre de tu máquina virtual.NETWORK_NAME
: el nombre de la red a la que quieres conectarte.- Si la red está configurada para permitir el uso de servidores DHCP externos, la VM recibe una asignación de dirección IP automáticamente. Si necesitas definir una dirección IP estática, añade el parámetro y el valor opcionales
--ip IP_ADDRESS
.
- Si la red está configurada para permitir el uso de servidores DHCP externos, la VM recibe una asignación de dirección IP automáticamente. Si necesitas definir una dirección IP estática, añade el parámetro y el valor opcionales
Archivo de manifiesto
Para crear una VM mediante un manifiesto YAML, sigue estos pasos:
Crea un archivo de
VirtualMachine
manifiesto, comomy-vm.yaml
, en el editor que prefieras:nano my-vm.yaml
Copia y pega el siguiente manifiesto YAML:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: interfaces: - name: eth0 networkName: NETWORK_NAME ipAddresses: - IP_ADDRESS default: true disks: - virtualMachineDiskName: VM_NAME-boot-dv boot: true
En este manifiesto YAML, define los siguientes ajustes:
VM_NAME
: el nombre de tu máquina virtual.NETWORK_NAME
: el nombre de la red a la que quieres conectarte.IP_ADDRESS
: la dirección IP en notación CIDR que se asignará a tu VM, como192.0.2.10/24
.- Si tu red está configurada para permitir el uso de servidores DHCP externos, elimina este campo del manifiesto
VirtualMachine
.
- Si tu red está configurada para permitir el uso de servidores DHCP externos, elimina este campo del manifiesto
El disco de arranque llamado
VM_NAME-boot-dv
ya debe existir. Para obtener más información, consulta Crear un disco de arranque de VM.Guarda y cierra el manifiesto de
VirtualMachine
en tu editor.Crea la VM con
kubectl
:kubectl apply -f my-vm.yaml