W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
確保您的pause image與您的 Windows 操作系統(tǒng)版本兼容。
Note: 如果使用 containerd 作為容器運行時,則暫停圖像在 config.toml 配置文件的 ?
plugins.plugins.cri.sandbox_image
? 字段中指定。
確保您的 Pod 被安排到兼容的Windows 節(jié)點。
如果您使用的是虛擬機,請確保在所有 VM 網(wǎng)絡(luò)適配器上啟用MAC spoofing。
Windows Pod 沒有為 ICMP 協(xié)議編程的出站規(guī)則。但是,支持 TCP/UDP。在嘗試演示與集群外部資源的連接時,請?使用相應(yīng)的?curl <IP>
?命令替換ping <IP>
?。
如果您仍然遇到問題,很可能您在 cni.conf中的網(wǎng)絡(luò)配置 值得特別注意。您可以隨時編輯此靜態(tài)文件。配置更新將適用于任何新的 Kubernetes 資源。
Kubernetes 網(wǎng)絡(luò)要求之一(請參閱Kubernetes 模型)是在內(nèi)部沒有 NAT 的情況下進行集群通信。為了滿足這一要求, 對于您不希望發(fā)生出站 NAT 的所有通信,都有一個ExceptionList 。但是,這也意味著您需要從?ExceptionList
?. 只有這樣,來自您的 Windows pod 的流量才會被正確 SNAT 以接收來自外部世界的響應(yīng)。在這方面,您在 ?cni.conf
? 中的 ?ExceptionList
?應(yīng)如下所示:
"ExceptionList": [
"10.244.0.0/16", # Cluster subnet
"10.96.0.0/12", # Service subnet
"10.127.130.0/24" # Management (host) subnet
]
NodePort
?類型的服務(wù)從節(jié)點本身訪問本地 NodePort 失敗。 這是一個已知的限制。 NodePort 訪問可從其他節(jié)點或外部客戶端進行。
當沒有將 ?hostname-override
? 參數(shù)傳遞給 kube-proxy 時,可能會導(dǎo)致此問題。 要解決它,用戶需要將主機名傳遞給 kube-proxy,如下所示:
C:\k\kube-proxy.exe --hostname-override=$(hostname)
這是 Windows 上網(wǎng)絡(luò)堆棧的已知限制。 但是,Windows Pod 可以訪問服務(wù) IP。
Windows 網(wǎng)絡(luò)堆棧需要一個虛擬適配器才能使 Kubernetes 網(wǎng)絡(luò)工作。 如果以下命令未返回任何結(jié)果(在管理 shell 中),則虛擬網(wǎng)絡(luò)創(chuàng)建(kubelet 工作的必要先決條件)失?。?/p>
Get-HnsNetwork | ? Name -ieq "cbr0"
Get-NetAdapter | ? Name -Like "vEthernet (Ethernet*"
在主機的網(wǎng)絡(luò)適配器不是“以太網(wǎng)”的情況下,通常值得修改 ?start.ps1
? 腳本的 InterfaceName 參數(shù)。 否則,請查閱 ?start-kubelet.ps1
? 腳本的輸出以查看虛擬網(wǎng)絡(luò)創(chuàng)建過程中是否有錯誤。
在本節(jié)中檢查 Windows 的 DNS 限制。
kubectl port-forward
?失敗并顯示“無法進行端口轉(zhuǎn)發(fā):未找到 wincat”這是在 Kubernetes 1.15 中通過將 ?wincat.exe
? 包含在暫?;A(chǔ)架構(gòu)容器 ?mcr.microsoft.com/oss/kubernetes/pause:3.6
? 中實現(xiàn)的。 請務(wù)必使用受支持的 Kubernetes 版本。 如果您想構(gòu)建自己的暫停基礎(chǔ)架構(gòu)容器,請確保包含 wincat。
如果您在代理后面,則必須定義以下 PowerShell 環(huán)境變量:
[Environment]::SetEnvironmentVariable("HTTP_PROXY", "http://proxy.example.com:80/", [EnvironmentVariableTarget]::Machine)
[Environment]::SetEnvironmentVariable("HTTPS_PROXY", "http://proxy.example.com:443/", [EnvironmentVariableTarget]::Machine)
每當以前刪除的節(jié)點重新加入集群時,flannelD 都會嘗試為該節(jié)點分配一個新的 pod 子網(wǎng)。 用戶應(yīng)刪除以下路徑中的舊 pod 子網(wǎng)配置文件:
Remove-Item C:\k\SourceVip.json
Remove-Item C:\k\SourceVipRequest.json
有很多關(guān)于這個問題的報告; 很可能是設(shè)置 flannel 網(wǎng)絡(luò)的管理 IP 的時間問題。 一種解決方法是重新啟動 ?start.ps1
? 或手動重新啟動它,如下所示:
[Environment]::SetEnvironmentVariable("NODE_NAME", "<Windows_Worker_Hostname>")
C:\flannel\flanneld.exe --kubeconfig-file=c:\k\config --iface=<Windows_Worker_Node_IP> --ip-masq=1 --kube-subnet-mgr=1
/run/flannel/subnet.env
?,我的 Windows Pod 無法啟動這表明 Flannel 沒有正確啟動。 您可以嘗試重新啟動 ?flanneld.exe
?,也可以手動將文件從 Kubernetes 主節(jié)點上的 ?/run/flannel/subnet.env
? 復(fù)制到 Windows 工作節(jié)點上的 ?C:\run\flannel\subnet.env
? 并修改 ?FLANNEL_SUBNET
? 行到不同的數(shù)字。 例如,如果需要節(jié)點子網(wǎng) 10.244.4.1/24:
FLANNEL_NETWORK=10.244.0.0/16
FLANNEL_SUBNET=10.244.4.1/24
FLANNEL_MTU=1500
FLANNEL_IPMASQ=true
如果這些步驟不能解決您的問題,您可以通過以下方式獲得在 Kubernetes 的 Windows 節(jié)點上運行 Windows 容器的幫助:
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: