Как узнать, в каком режиме работает kube-proxy

По умолчанию, если в конфигурации не указано значение, kube-proxy может работать либо в режиме iptables, либо в режиме пользовательского пространства:

--proxy-mode ProxyMode

Какой режим прокси использовать: «userpace» (более ранний), «iptables» (более быстрый), «ipvs» или «kernelspace» (windows). Если пусто, используйте лучший из доступных прокси (в настоящее время iptables). Если выбран прокси iptables, независимо от того, каким образом, но версии ядра системы или iptables недостаточны, это всегда возвращается к прокси пользовательского пространства.

doc

Поскольку и пользовательское пространство, и режим iptables, похоже, создают правила iptables на узле, есть ли какой-либо надежный способ узнать, какой режим прокси-сервера установлен в kube-proxy по умолчанию?


person ITChap    schedule 22.03.2021    source источник


Ответы (1)


Режим, который предлагает kube-proxy, упоминается в файле журнала kube-proxy.

W0322 08:09:44.312816       1 server_others.go:578] Unknown proxy mode "", assuming iptables proxy
I0322 08:09:44.313052       1 server_others.go:185] Using iptables Proxier.

Проверьте код https://github.com/kubernetes/kubernetes/blob/master/cmd/kube-proxy/app/server_others.go


func getProxyMode(proxyMode string, canUseIPVS bool, kcompat iptables.KernelCompatTester) string {
    switch proxyMode {
    case proxyModeUserspace:
        return proxyModeUserspace
    case proxyModeIPTables:
        return tryIPTablesProxy(kcompat)
    case proxyModeIPVS:
        return tryIPVSProxy(canUseIPVS, kcompat)
    }
    klog.Warningf("Unknown proxy mode %q, assuming iptables proxy", proxyMode)
    return tryIPTablesProxy(kcompat)
}

func tryIPTablesProxy(kcompat iptables.KernelCompatTester) string {
    // guaranteed false on error, error only necessary for debugging
    useIPTablesProxy, err := iptables.CanUseIPTablesProxier(kcompat)
    if err != nil {
        utilruntime.HandleError(fmt.Errorf("can't determine whether to use iptables proxy, using userspace proxier: %v", err))
        return proxyModeUserspace
    }
    if useIPTablesProxy {
        return proxyModeIPTables
    }
    // Fallback.
    klog.V(1).Infof("Can't use iptables proxy, using userspace proxier")
    return proxyModeUserspace
}


person Sagar Velankar    schedule 22.03.2021