kubernetes 1.18.17 windows server 2019 节点 cluster ip 服务不通

本文档提供了解决kube-proxy在Windows节点上遇到SourceVip创建失败问题的步骤。通过运行 PowerShell 脚本 GetSourceVip.ps1 和修改kube-proxy配置,修复了由于无效地址导致的错误。此外,还展示了如何重新创建kube-proxy以应用更改。
摘要由CSDN通过智能技术生成

kube-proxy 日志

...
E0409 13:34:34.816950    3560 proxier.go:998] "Source Vip endpoint creation failed" err="hcnCreateEndpoint failed in Win32: An address provided is invalid or reserved. (0x803b002f) {\"Success\":false,\"Error\":\"An address provided is invalid or reserved. \",\"ErrorCode\":2151350319}"
...

解决

1.把下面的脚本保存为 c:\k\GetSourceVip.ps1

<#

#>

Param(
    [parameter(HelpMessage="network name")]
    [string] $NetworkName = "flannel.4096"
)

function GetSourceVip($ipaddress, $NetworkName) {
    $hnsNetwork = Get-HnsNetwork | ? Name -EQ $NetworkName.ToLower()
    $subnet = $hnsNetwork.Subnets[0].AddressPrefix

    $ipamConfig = @"
        {"cniVersion": "0.2.0", "name": "vxlan0", "ipam":{"type":"host-local","ranges":[[{"subnet":"$subnet"}]],"dataDir":"/var/lib/cni/networks"}}
"@

    $ipamConfig | Out-File "C:\k\sourceVipRequest.json"

    $env:CNI_COMMAND="ADD"
    $env:CNI_CONTAINERID="dummy"
    $env:CNI_NETNS="dummy"
    $env:CNI_IFNAME="dummy"
    $env:CNI_PATH="c:\opt\cni" #path to host-local.exe

    If(!(Test-Path c:/k/sourceVip.json)) {
        Get-Content sourceVipRequest.json | c:\opt\cni\bin\host-local.exe | Out-File sourceVip.json
    }

    Remove-Item env:CNI_COMMAND
    Remove-Item env:CNI_CONTAINERID
    Remove-Item env:CNI_NETNS
    Remove-Item env:CNI_IFNAME
    Remove-Item env:CNI_PATH
}

GetSourceVip "" $NetworkName

2.运行脚本

cd c:\k
.\GetSourceVip.ps1

修改 kube-proxy.yml

内容见 官方文件
修改获取 sourceVip 的代码:

#$sourceVip = ($env:POD_IP -split "\.")[0..2] + 2 -join "."
$sourceVipJSON = (Get-Content "/host/k/sourceVip.json" | ConvertFrom-Json)
$sourceVip = $sourceVipJSON.ip4.ip.Split("/")[0]

重新创建 windows节点的 kube-proxy

利用 kubectl 先删除,再创建即可。

参考

https://github.com/kubernetes/kubernetes/issues/100962

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值