Параметр hostNetwork:true не раскрывает интерфейсы хоста.

У меня есть очень простая программа:

      package main

import (
    "fmt"
    "github.com/vishvananda/netlink"
    )

func main() {
    _, err := netlink.LinkByName("wlp164s0")
    if err != nil {
        fmt.Println("error finding VIP Interface, for building DHCP Link : %v", err)
        return
    }
    fmt.Println("Worked..")
}

Если я создаю образ докера и запускаю его с помощью «--net host», эта программа печатает «Работает». Умеет находить интерфейс wlp164s0.

Если я создам развертывание k8s следующим образом:

      apiVersion: apps/v1
kind: Deployment
metadata:
  name: netlink-example
  labels:
    app: netlink-example
spec:
  replicas: 1
  selector:
    matchLabels:
      app: netlink-example
  template:
    metadata:
      labels:
        app: netlink-example
    spec:
      hostNetwork: true
      containers:
      - name: netlink
        image: suruti94/netlink:0.1
        imagePullPolicy: IfNotPresent
      hostNetwork: true
      nodeSelector:
        kubernetes.io/os: linux

Эта программа печатает ошибку, указывающую, что она не может найти интерфейс, что означает, что «hostNetwork: true» не действует. Из всех моих исследований это выглядит правильно. Любая помощь будет оценена по достоинству. Я запускаю эту программу на Ubuntu 21.04, k8s версии 1.22.

1 ответ

После некоторых экспериментов я пришел к пониманию, что опция докера «--net host» не совпадает с «hostNetwork: true» в k8s. Я ошибочно предположил, что они производят подобное поведение.

  • Опция docker --net host делает хост-интерфейсы доступными в контейнере, что полезно для некоторых приложений.
  • Когда вы развертываете модуль с параметром hostNetwork:true, это означает, что хост-сеть доступна из модуля. По умолчанию, когда модуль развернут (я проверил это на своем локальном компьютере с помощью Kind), хост-сеть доступна. Я вижу интерфейс veth, подключенный к мосту на хосте. Даже с hostNetwork: false я смог обновить пакеты в своем модуле. Так что не знаю, что делать с этой настройкой. На данном этапе я прихожу к выводу, что нет возможности отображать интерфейс хоста непосредственно в модуле.
Другие вопросы по тегам