Este documento está dirigido a administradores de TI, operadores y especialistas en Herramientas de redes que ejecutan Google Distributed Cloud. En este documento, se muestra cómo crear y usar redes virtuales para admitir cargas de trabajo de VM que usan el entorno de ejecución de VM en GDC. Para obtener más información sobre los roles comunes y las tareas de ejemplo a las que hacemos referencia en el contenido de Google Cloud , consulta Roles de usuario y tareas comunes de GKE Enterprise.
Antes de empezar
Para completar este documento, necesitas acceder a los siguientes recursos:
- Acceso a un clúster de la versión 1.12.0 (
anthosBareMetalVersion: 1.12.0
) o superior de Google Distributed Cloud. Puedes usar cualquier tipo de clúster capaz de 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 cliente
virtctl
instalada como un complemento parakubectl
. Si es necesario, instala la herramienta cliente de virtctl.
Descripción general de las redes virtuales
Las redes se crean con recursos personalizados. Después de crear el clúster, puedes crear una red en cualquier momento. La configuración de red para la interfaz del host y la asignación del ID de la VLAN, si está definida, no se puede 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 otros recursos, como las VMs o las interfaces de red.
La definición de red puede incluir la puerta de enlace, las rutas y la información de DNS. También puedes habilitar el uso de un servidor DHCP externo. Esta configuración de red se asigna de forma estática o dinámica, según cómo se definan ciertas opciones de configuración de red.
Red de Pods predeterminada
Cada clúster tiene una pod-network
que se crea de forma predeterminada para ti. Esta red no se puede cambiar. Las rutas de CIDR del Pod, el CIDR del servicio y la configuración de DNS se propagan de forma automática. La configuración de DNS usa los mismos valores que el clúster.
Las cargas de trabajo que necesitan una interfaz para acceder a la red del Pod del clúster y no necesitan ninguna opción de configuración específica pueden usar pod-network
.
Las rutas de pod-network
siempre están configuradas para garantizar que el clúster y el servicio tengan acceso a las cargas de trabajo, aunque la puerta de enlace predeterminada no esté en la interfaz de pod-network
.
Esta pod-network
predeterminada permite probar el entorno de ejecución de VM en GDC sin realizar pasos adicionales para crear tus propias redes virtuales. En muchos de nuestros documentos, se usa esta pod-network
predeterminada simplificar los ejemplos. Las necesidades de tus cargas de trabajo de VM determinan si esta pod-network
predeterminada es suficiente o si debes crear y usar tus propias redes virtuales.
En el siguiente manifiesto de YAML, se muestra una configuración de ejemplo para la pod-network
.
El clúster propagó los valores de rutas, 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
Crea y usa redes virtuales
Para admitir las cargas de trabajo de producción, crea redes que admitan las funciones que necesitas, como el uso de un servidor de DHCP externo o de un ID de VLAN. Estas redes proporcionan conectividad de capa 2 (L2) a las VMs.
Usa un servidor DHCP externo
El entorno de ejecución de VM en GDC no proporciona servidores DHCP. Por ende, debes especificar de forma manual direcciones IP para las VMs o configurar el uso de servidores DHCP externos. Cuando habilitas el uso de un servidor DHCP externo, puedes omitir la configuración de los ajustes del DNS y de la puerta de enlace si DHCP los proporciona.
Para crear una red que use un servidor DHCP externo, sigue los pasos que se indican a continuación:
Crea un manifiesto de
Network
, comouse-dhcp-network.yaml
, en el editor de tu preferencia:nano use-dhcp-network.yaml
Copia y pega el siguiente manifiesto de YAML:
apiVersion: networking.gke.io/v1 kind: Network metadata: name: NETWORK_NAME spec: type: L2 nodeInterfaceMatcher: interfaceName: INTERFACE_NAME externalDHCP4: true
Reemplaza los siguientes valores:
NETWORK_NAME
: es el nombre de la red.INTERFACE_NAME
: es el nombre de la interfaz de tu nodo de Google Distributed Cloud al que se conectará la red. Especifica el nombre de la interfaz física en el nodo que usarás. Todos los nodos del clúster deben tener el mismo nombre de interfaz.
En este manifiesto de
Network
, se establecen los siguientes valores:type
se establece comoL2
. Con este parámetro de configuración, las cargas de trabajo solo pueden tener una conexión de capa 2 a esta red. Este es el únicotype
de red que puedes crear en un entorno de ejecución de VM en GDC.externalDHCP4
se establece comotrue
. Este parámetro de configuración habilita el DHCP externo para la red. El servidor DHCP externo se encarga de asignar la dirección IPv4, las rutas, la puerta de enlace y la configuración de DNS de las cargas de trabajo conectadas a esta red.
Guarda y cierra el manifiesto de
Network
en el editor.Crea la red con
kubectl
:kubectl apply -f use-dhcp-network.yaml
Define la configuración de red de forma manual
El entorno de ejecución de VM en GDC no proporciona servidores DHCP. Por ende, debes especificar de forma manual direcciones IP para las VMs o configurar el uso de servidores DHCP externos. Si especificas direcciones IP de forma manual, debes definir la configuración de red para el DNS, las rutas y la puerta de enlace predeterminada.
Para crear una red con una configuración de red especificada de forma manual para las VMs, completa los siguientes pasos:
Crea un manifiesto de
Network
, comomanual-network.yaml
, en el editor de tu preferencia:nano manual-network.yaml
Copia y pega el siguiente manifiesto de 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
Reemplaza los siguientes valores:
NETWORK_NAME
: es el nombre de la red.INTERFACE_NAME
: es el nombre de la interfaz de tu nodo de Google Distributed Cloud al que se conectará la red. Especifica el nombre de la interfaz física en el nodo que usarás. Todos los nodos del clúster deben tener el mismo nombre de interfaz.ROUTE_ADDRESS
: son rutas opcionales en la notación CIDR que se configurarán en cada VM que se conecte a esta red.GATEWAY_ADDRESS
: es la dirección IP de la puerta de enlace que deben usar las VMs.NAMESERVER_ADDRESS
: es una o más direcciones IP del servidor de nombres de DNS que usarán las VMs.
Guarda y cierra el manifiesto de
Network
en el editor.Crea la red con
kubectl
:kubectl apply -f manual-network.yaml
Usa un ID de VLAN
Cuando creas redes virtuales, puedes definir VLAN etiquetadas. Estas asignaciones de VLAN sirven para aislar el tráfico de red según tus requisitos de carga de trabajo y necesidades de aislamiento. En una red de AnthosManaged
, el clúster tiene permiso para crear y borrar la interfaz de VLAN en cada nodo.
Para crear una red que defina una asignación de VLAN, completa los siguientes pasos:
Crea un manifiesto de
Network
, comovlan-network.yaml
, en el editor de tu preferencia:nano vlan-network.yaml
Copia y pega el siguiente manifiesto de 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
Reemplaza los siguientes valores:
NETWORK_NAME
: es el nombre de la red.INTERFACE_NAME
: es el nombre de la interfaz de tu nodo de Google Distributed Cloud al que se conectará la red. Especifica el nombre de la interfaz física en el nodo que usarás. Todos los nodos del clúster deben tener el mismo nombre de interfaz.VLAN_ID
: es el ID de VLAN para el que quieres etiquetar el tráfico.
En este manifiesto de
Network
, se establecen los siguientes valores:- Las cargas de trabajo solo pueden tener una conexión
L2
a esta red. - La red es
AnthosManaged
. Si no se especifica, este parámetro de configuración es el ciclo de vida predeterminado.- En este modo, el clúster tiene permiso para crear y borrar la interfaz de VLAN en cada nodo, como
INTERFACE_NAME.VLAN_ID
. - Si quieres crear las interfaces de VLAN en los nodos o ya las creaste, establece el valor
networkLifecycle
enUserManaged
, como se muestra en la siguiente sección.
- En este modo, el clúster tiene permiso para crear y borrar la interfaz de VLAN en cada nodo, como
- La red tiene DHCP externo habilitado. El servidor DHCP externo se encarga de asignar la dirección IPv4, las rutas, la puerta de enlace y la configuración de DNS de las cargas de trabajo conectadas a esta red.
Guarda y cierra el manifiesto de
Network
en el editor.Crea la red con
kubectl
:kubectl apply -f vlan-network.yaml
Crea una red administrada por el usuario
En la siguiente red virtual de ejemplo, la red es administrada por el usuario, a diferencia de un ejemplo anterior en el que es administrada por Anthos. En las redes administradas por el usuario, tú debes encargarte de crear o borrar la interfaz de VLAN en el host.
Para crear una red en un modo administrado por el usuario y definir de forma manual la configuración de la interfaz de VLAN, completa los siguientes pasos:
Crea un manifiesto de
Network
, comouser-managed-network.yaml
, en el editor de tu preferencia: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
Reemplaza los siguientes valores:
NETWORK_NAME
: es el nombre de la red.INTERFACE_NAME
: es la interfaz del host a la que se conectará la red.VLAN_ID
: es el ID de VLAN para el que quieres etiquetar el tráfico.
En este manifiesto de
Network
, se establecen los siguientes valores:- Las cargas de trabajo solo pueden tener una conexión
L2
a esta red. - La red es
UserManaged
. Debes crear o borrar la interfazVLAN_ID
de VLAN en cada nodo antes de que se cree la red o después de que esta se borre. - La red tiene DHCP externo habilitado. El servidor DHCP externo se encarga de asignar la dirección IPv4, las rutas, la puerta de enlace y la configuración de DNS de las cargas de trabajo conectadas a esta red.
Guarda y cierra el manifiesto de
Network
en el editor.Crea la red con
kubectl
:kubectl apply -f user-managed-network.yaml
Conecta una VM a una red
La configuración de red para la VM, como el DNS y el DHCP, se asigna de forma estática o dinámica según cómo se definan ciertas 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 puerta de enlace y la ruta debe provenir del recurso de red.
- Si no configuras una dirección IP estática en la VM, se enviará una consulta al servidor DHCP. La VM obtiene toda la información del servidor DHCP y, además, ignora cualquier configuración que definas en el recurso de red.
- Si el DHCP externo no está establecido en
true
en el recurso de red, debes configurar una dirección IP estática para la VM. El resto de la información proviene de la configuración que defines en el recurso de red.
Para crear una VM que se conecte a una red, completa los siguientes pasos:
CLI
Para crear una VM con
kubectl
, completa los siguientes pasos:kubectl virt create vm VM_NAME \ --image ubuntu20.04 \ --network NETWORK_NAME
Reemplaza los siguientes valores:
VM_NAME
: es el nombre de la VM.NETWORK_NAME
: es el nombre de la red a la que te conectarás.- Si la red está configurada para permitir el uso de servidores DHCP externos, la VM obtiene una asignación de dirección IP de forma automática. Si necesitas definir una dirección IP estática, agrega el parámetro y el valor
--ip IP_ADDRESS
opcionales.
- Si la red está configurada para permitir el uso de servidores DHCP externos, la VM obtiene una asignación de dirección IP de forma automática. Si necesitas definir una dirección IP estática, agrega el parámetro y el valor
Manifiesto
Para crear una VM con un manifiesto de YAML, completa los siguientes pasos:
Crea un manifiesto de
VirtualMachine
, comomy-vm.yaml
, en el editor de tu preferencia:nano my-vm.yaml
Copia y pega el siguiente manifiesto de 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 de YAML, define la siguiente configuración:
VM_NAME
: es el nombre de la VM.NETWORK_NAME
: es el nombre de la red a la que te conectarás.IP_ADDRESS
: es la dirección IP en notación CIDR que se asignará a la VM, como192.0.2.10/24
.- Si la red está configurada para permitir el uso de servidores DHCP externos, quita este campo del manifiesto de
VirtualMachine
.
- Si la red está configurada para permitir el uso de servidores DHCP externos, quita este campo del manifiesto de
El disco de arranque llamado
VM_NAME-boot-dv
ya debe existir. Para obtener más información, consulta Crea un disco de arranque de VM.Guarda y cierra el manifiesto de
VirtualMachine
en el editor.Crea la VM con
kubectl
:kubectl apply -f my-vm.yaml