Este documento está dirigido a propietarios de aplicaciones y administradores de plataformas que ejecutan GKE en Bare Metal. 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.
Antes de comenzar
Para completar este documento, necesitas acceso a los siguientes recursos:
- Acceso al clúster de GKE en Bare Metal versión 1.12.0 (
anthosBareMetalVersion: 1.12.0
) o superior Puedes usar cualquier tipo de clúster capaz de ejecutar cargas de trabajo. Si es necesario, prueba GDCV para Bare Metal en Compute Engine o consulta la descripción general de la creación de clústeres. - La herramienta de 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 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 VM 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.
pod-network predeterminada
Cada clúster tiene una pod-network
creada de forma predeterminada para ti. No se puede cambiar esta red. Las rutas para el 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
.
Este pod-network
predeterminado te permite probar el entorno de ejecución de la VM en GDC sin realizar pasos adicionales para crear tus propias redes virtuales. Muchos de nuestros documentos usan esta pod-network
predeterminada para reducir la complejidad de los ejemplos. Las necesidades de tus cargas de trabajo de VM determinan si esta pod-network
predeterminada es suficiente o si necesitas crear y usar tus propias redes virtuales.
En el siguiente manifiesto YAML, se muestra una configuración de muestra para la pod-network
.
El clúster propagó 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 el uso de un ID de VLAN. Estas redes proporcionan conectividad de capa 2 (L2) para tus VM.
Usa un servidor de DHCP externo
El entorno de ejecución de VM en GDC no proporciona servidores DHCP. Debes especificar direcciones IP para las VMs de forma manual 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 de DNS y de puerta de enlace si los proporciona DHCP.
Para crear una red que use un servidor DHCP externo, completa los siguientes pasos:
Crea un manifiesto
Network
, comouse-dhcp-network.yaml
, en el editor que elijas: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
Reemplaza los siguientes valores:
NETWORK_NAME
: Es el nombre de tu red.INTERFACE_NAME
: Es el nombre de la interfaz de tu nodo de GKE en Bare Metal al que se conectará la red. Especifica el nombre de la interfaz física en el nodo que deseas usar. Todos los nodos del clúster deben tener el mismo nombre de interfaz.
En este manifiesto
Network
, se establecen los siguientes valores:type
se configura comoL2
. Con esta configuración, 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 VM en GDC.externalDHCP4
se configura comotrue
. Esta configuración habilita el DHCP externo para la red. El servidor DHCP externo es responsable de la asignación de direcciones 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
Network
en tu editor.Crea la red mediante
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. Debes especificar direcciones IP para las VMs de forma manual 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.
A fin de crear una red con una configuración de red especificada de forma manual para las VM, completa los siguientes pasos:
Crea un manifiesto
Network
, comomanual-network.yaml
, en el editor que elijas: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
Reemplaza los siguientes valores:
NETWORK_NAME
: Es el nombre de tu red.INTERFACE_NAME
: Es el nombre de la interfaz de tu nodo de GKE en Bare Metal al que se conectará la red. Especifica el nombre de la interfaz física en el nodo que deseas usar. 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 VM.NAMESERVER_ADDRESS
: Es una o más direcciones IP del servidor de nombres de DNS para que usen tus VM.
Guarda y cierra el manifiesto
Network
en tu editor.Crea la red mediante
kubectl
:kubectl apply -f manual-network.yaml
Usa un ID de VLAN
Cuando creas redes virtuales, puedes definir VLAN etiquetadas. Estas asignaciones de VLAN te ayudan a aislar el tráfico de red según tus requisitos de carga de trabajo y necesidades de aislamiento. En una red 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
Network
, comovlan-network.yaml
, en el editor que elijas: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
Reemplaza los siguientes valores:
NETWORK_NAME
: Es el nombre de tu red.INTERFACE_NAME
: Es el nombre de la interfaz de tu nodo de GKE en Bare Metal al que se conectará la red. Especifica el nombre de la interfaz física en el nodo que deseas usar. Todos los nodos del clúster deben tener el mismo nombre de interfaz.VLAN_ID
: Es el ID de VLAN para el que deseas etiquetar el tráfico.
En este manifiesto
Network
, se establecen los siguientes valores:- Las cargas de trabajo solo pueden tener un adjunto
L2
a esta red. - La red es
AnthosManaged
. Si no se especifica, esta 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 es responsable de la asignación de direcciones 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
Network
en tu editor.Crea la red mediante
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 administrada por Anthos en un ejemplo anterior. En las redes administradas por el usuario, eres responsable 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
Network
, comouser-managed-network.yaml
, en el editor que elijas: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 tu 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 deseas etiquetar el tráfico.
En este manifiesto
Network
, se establecen los siguientes valores:- Las cargas de trabajo solo pueden tener un adjunto
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 se borre la red. - La red tiene DHCP externo habilitado. El servidor DHCP externo es responsable de la asignación de direcciones 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
Network
en tu editor.Crea la red mediante
kubectl
:kubectl apply -f user-managed-network.yaml
Conecta una VM a una red
La configuración de red para la VM, como DNS y 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 envía ninguna consulta a un servidor de 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 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 se establece 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
: el nombre de tu VM.NETWORK_NAME
: El nombre de tu 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
Manifest
Para crear una VM con un manifiesto YAML, completa los siguientes pasos:
Crea un manifiesto
VirtualMachine
, comomy-vm.yaml
, en el editor que elijas: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 la siguiente configuración:
VM_NAME
: el nombre de tu VM.NETWORK_NAME
: El nombre de tu red a la que te conectarás.IP_ADDRESS
: La dirección IP en notación de CIDR que se asignará a la VM, como192.0.2.10/24
.- Si tu red está configurada para permitir el uso de servidores DHCP externos, quita este campo del manifiesto
VirtualMachine
.
- Si tu red está configurada para permitir el uso de servidores DHCP externos, quita este campo del manifiesto
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
VirtualMachine
en tu editor.Crea la VM mediante
kubectl
:kubectl apply -f my-vm.yaml