Создание дополнительных интерфейсов#

Создайте конфигурации для каждого из дополнительных интерфейсов, которые подключаете к контейнерам, и пользовательские ресурсы для каждого интерфейса. В рамках процесса быстрой установки создается CRD - пользовательское определение ресурса, которое служит местом для хранения ресурсов. В CRD будете хранить конфигурации для каждого интерфейса.

Последовательность выполнения#

  1. Создайте конфигурацию для дополнительного интерфейса. Например, создайте конфигурацию macvlan:

    cat <<EOF | oc create -f -
    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": "NNN.NNN.N.0/24",
            "rangeStart": "NNN.NNN.N.200",
            "rangeEnd": "NNN.NNN.N.216",
            "routes": [
              { "dst": "0.0.0.0/0" }
            ],
            "gateway": "NNN.NNN.N.1"
          }
        }'
    EOF
    

    Где NNN.NNN.N.0/24 – выбранная подсеть, а NNN.NNN.N.200, NNN.NNN.N.216, NNN.NNN.N.1 – актуальные IP адреса выбранной подсети.

  2. Получите более подробную информацию о конфигурации:

    oc describe network-attachment-definitions macvlan-conf
    
  3. Проверьте созданную конфигурацию:

    oc get network-attachment-definitions
    
  4. Можно добавлять больше интерфейсов в pod. Добавьте еще интерфейсов, создав соответствующие конфигурации и аннотируя pod. Например, добавьте два macvlan интерфейса:

    cat <<EOF | oc create -f -
    apiVersion: v1
    kind: Pod
    metadata:
      name: samplepod
      annotations:
        k8s.v1.cni.cncf.io/networks: macvlan-conf,macvlan-conf
    spec:
      containers:
      - name: samplepod
        command: ["/bin/ash", "-c", "trap : TERM INT; sleep infinity & wait"]
        image: alpine
    EOF
    

    Примечание

    Аннотация теперь гласит k8s.v1.cni.cncf.io/networks: macvlan-conf,macvlan-conf. Где одна и та же конфигурация используется дважды, разделенная запятой.

Результат#

Конфигурация для дополнительного интерфейса успешно создана.