Экспериментирую с подготовкой кластера Kubernetes на vSphere с использованием Kubespray и Terraform для автоматизации процесса развертывания (с этим проблем нет).
Моя цель — иметь возможность подключать модули к разным VLAN (или группам портов), чтобы каждое приложение работало в своей собственной сети, как это делают мои виртуальные машины.
Я думаю, есть 2 подхода: 1. Создать «Группу портов всех VLAN (0-4095)» и управлять VLAN внутри ОС узла K8S 2. Подключить несколько сетевых карт к виртуальным машинам узла K8S, каждая из которых будет подключена к разным VLAN.
После нескольких недель гугления я так и не смог найти решение для схожих требований.
Итак, моя проблема в том, что я застрял, пытаясь понять, как построить кластер K8S таким образом, и в то же время я не совсем уверен, что я на правильном пути.
Пожалуйста, помогите мне, пока я не сошел с ума!
решение1
Этого можно достичь с помощьюmultus-cniплагин. Он создаетNetworkAttachmentDefinition
пользовательский ресурс, где можно указать сетевой интерфейс, т.е.
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
name: macvlan-conf
spec:
config: '{
"cniVersion": "0.3.0",
"type": "macvlan",
"master": "eth0",
"mode": "bridge",
"ipam": {
"type": "host-local",
"subnet": "192.168.1.0/24",
"rangeStart": "192.168.1.200",
"rangeEnd": "192.168.1.216",
"routes": [
{ "dst": "0.0.0.0/0" }
],
"gateway": "192.168.1.1"
}
}'
Затем вы прикрепляете эту конфигурацию к модулю:
apiVersion: v1
kind: Pod
metadata:
name: samplepod
annotations:
k8s.v1.cni.cncf.io/networks: macvlan-conf
Кроме того, вы можете добавить больше интерфейсов в модуль, создав больше пользовательских ресурсов, а затем ссылаясь на них в аннотации модуля.
Болееподробности.