W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
FEATURE STATE: Kubernetes v1.18 [beta]
你可以使用 Kubernetes 來(lái)混合運(yùn)行 Linux 和 Windows 節(jié)點(diǎn),這樣你就可以 混合使用運(yùn)行于 Linux 上的 Pod 和運(yùn)行于 Windows 上的 Pod。 本頁(yè)面展示如何將 Windows 節(jié)點(diǎn)注冊(cè)到你的集群。
您的 Kubernetes 服務(wù)器的版本必須為 1.17 或更高版本。 要檢查版本,請(qǐng)輸入 ?kubectl version
?。
一旦你有了一個(gè)基于 Linux 的 Kubernetes 控制面節(jié)點(diǎn),你就可以為其選擇聯(lián)網(wǎng)方案。 出于簡(jiǎn)單考慮,本指南展示如何使用 VXLAN 模式的 Flannel。
在我們的集群中,建議對(duì) Kubernetes 的控制面進(jìn)行少許準(zhǔn)備處理。 建議在使用 Flannel 時(shí)為 iptables 鏈啟用橋接方式的 IPv4 流處理, 必須在所有 Linux 節(jié)點(diǎn)上執(zhí)行如下命令:
sudo sysctl net.bridge.bridge-nf-call-iptables=1
下載最新的 Flannel 清單文件:
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
修改 Flannel 清單中的 ?net-conf.json
? 部分,將 VNI 設(shè)置為 4096,并將 Port 設(shè)置為 4789。 結(jié)果看起來(lái)像下面這樣:
net-conf.json: |
{
"Network": "10.244.0.0/16",
"Backend": {
"Type": "vxlan",
"VNI": 4096,
"Port": 4789
}
}
Note: 在 Linux 節(jié)點(diǎn)上 VNI 必須設(shè)置為 4096,端口必須設(shè)置為 4789,這樣才能令其與 Windows 上的 Flannel 互操作。關(guān)于這些字段的詳細(xì)說(shuō)明,請(qǐng)參見(jiàn) VXLAN 文檔。
Note: 如要使用 L2Bridge/Host-gateway 模式,則可將 ?
Type
?值設(shè)置為 "?host-gw
?",并忽略 ?VNI
?和 ?Port
?的設(shè)置。
首先應(yīng)用 Flannel 配置:
kubectl apply -f kube-flannel.yml
幾分鐘之后,如果 Flannel Pod 網(wǎng)絡(luò)被正確部署,你應(yīng)該會(huì)看到所有 Pods 都處于運(yùn)行中狀態(tài)。
kubectl get pods -n kube-system
輸出中應(yīng)該包含處于運(yùn)行中狀態(tài)的 Linux Flannel DaemonSet:
NAMESPACE NAME READY STATUS RESTARTS AGE
...
kube-system kube-flannel-ds-54954 1/1 Running 0 1m
現(xiàn)在你可以添加 Windows 兼容版本的 Flannel 和 kube-proxy。為了確保你能獲得兼容 版本的 kube-proxy,你需要替換鏡像中的標(biāo)簽。 下面的例子中展示的是針對(duì) Kubernetes v1.24.0 版本的用法, 不過(guò)你應(yīng)該根據(jù)你自己的集群部署調(diào)整其中的版本號(hào)。
curl -L https://github.com/kubernetes-sigs/sig-windows-tools/releases/latest/download/kube-proxy.yml | sed 's/VERSION/v1.24.0/g' | kubectl apply -f -
kubectl apply -f https://github.com/kubernetes-sigs/sig-windows-tools/releases/latest/download/flannel-overlay.yml
Note: 如果你在使用 host-gateway 模式,則應(yīng)該使用 https://github.com/kubernetes-sigs/sig-windows-tools/releases/latest/download/flannel-host-gw.yml 這一清單。
Note:
如果你在 Windows 節(jié)點(diǎn)上使用的不是以太網(wǎng)(即,"Ethernet0 2")接口,你需要 修改 ?flannel-host-gw.yml
? 或 ?flannel-overlay.yml
? 文件中的下面這行:wins cli process run --path /k/flannel/setup.exe --args "--mode=overlay --interface=Ethernet"
在其中根據(jù)情況設(shè)置要使用的網(wǎng)絡(luò)接口。
# Example curl -L https://github.com/kubernetes-sigs/sig-windows-tools/releases/latest/download/flannel-overlay.yml | sed 's/Ethernet/Ethernet0 2/g' | kubectl apply -f -
Note:
Windows 節(jié)的所有代碼片段都需要在 PowerShell 環(huán)境中執(zhí)行,并且要求在 Windows 工作節(jié)點(diǎn)上具有提升的權(quán)限(Administrator)。
curl.exe -LO https://github.com/kubernetes-sigs/sig-windows-tools/releases/latest/download/Install-Containerd.ps1
.\Install-Containerd.ps1
Note:
要安裝特定版本的 containerD,使用參數(shù) -ContainerDVersion 指定版本。# Example .\Install-Containerd.ps1 -ContainerDVersion 1.4.1
如果你在 Windows 節(jié)點(diǎn)上使用了與 Ethernet 不同的接口(例如 "Ethernet0 2"),使用參數(shù) ?
-netAdapterName
? 指定名稱。# Example .\Install-Containerd.ps1 -netAdapterName "Ethernet0 2"
curl.exe -LO https://raw.githubusercontent.com/kubernetes-sigs/sig-windows-tools/master/kubeadm/scripts/PrepareNode.ps1
.\PrepareNode.ps1 -KubernetesVersion v1.24.0 -ContainerRuntime containerD
從 cri-tools 項(xiàng)目安裝 ?crtctl
?。 ?crictl
? 是必需的,kubeadm 使用它與 CRI 端點(diǎn)通信。
使用當(dāng)你在控制面主機(jī)上運(yùn)行 ?kubeadm init
? 時(shí)得到的命令。 如果你找不到這個(gè)命令,或者命令中對(duì)應(yīng)的令牌已經(jīng)過(guò)期,你可以(在一個(gè)控制面主機(jī)上)運(yùn)行 ?kubeadm token create --print-join-command
? 來(lái)生成新的令牌和 join 命令。
安裝 ?Containers
?功能特性
Install-WindowsFeature -Name containers
安裝 Docker
操作指南在 Install Docker Engine - Enterprise on Windows Servers。
安裝 cri-dockerd。kubelet 可以通過(guò) cri-dockerd 在 CRI 兼容的節(jié)點(diǎn)上與 Docker 通信。
Note:
Docker Engine 沒(méi)有實(shí)現(xiàn) CRI, 而 CRI 是容器運(yùn)行時(shí)能夠與 Kubernetes 一起工作的要求。 出于這個(gè)原因,必須安裝一個(gè)額外的服務(wù) cri-dockerd。 cri-dockerd 是一個(gè)基于原來(lái)的內(nèi)置 Docker Engine 支持的項(xiàng)目, 而這一支持在 1.24 版本的 kubelet 中已被移除。
從 cri-tools 項(xiàng)目安裝 ?crictl
?。 kubeadm 需要 ?crictl
?才能與 CRI 端點(diǎn)通信。
curl.exe -LO https://raw.githubusercontent.com/kubernetes-sigs/sig-windows-tools/master/kubeadm/scripts/PrepareNode.ps1
.\PrepareNode.ps1 -KubernetesVersion v1.24.0
當(dāng)你在控制面主機(jī)上運(yùn)行 ?kubeadm init
? 時(shí),輸出了一個(gè)命令。現(xiàn)在運(yùn)行這個(gè)命令。 如果你找不到這個(gè)命令,或者命令中對(duì)應(yīng)的令牌已經(jīng)過(guò)期,你可以(在一個(gè)控制面主機(jī)上)運(yùn)行 ?kubeadm token create --print-join-command
? 來(lái)生成新的令牌和 join 命令。
你現(xiàn)在應(yīng)該能夠通過(guò)運(yùn)行下面的命令來(lái)查看集群中的 Windows 節(jié)點(diǎn)了:
kubectl get nodes -o wide
如果你的新節(jié)點(diǎn)處于 ?NotReady
?狀態(tài),很可能的原因是系統(tǒng)仍在下載 Flannel 鏡像。 你可以像之前一樣,通過(guò)檢查 ?kube-system
? 名字空間中的 Flannel Pods 來(lái)了解 安裝進(jìn)度。
kubectl -n kube-system get pods -l app=flannel
一旦 Flannel Pod 運(yùn)行起來(lái),你的節(jié)點(diǎn)就應(yīng)該能進(jìn)入 ?Ready
?狀態(tài)并可 用來(lái)處理負(fù)載。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: